1
정상적으로 사용자 앱으로 실행되는 서비스가있는 런처 앱이 있지만 시스템 앱으로/system/app /에 넣은 후에는 사용할 수 없습니다. 여기에 이상한 logcat가 있습니다 :Android 앱이 시스템 앱으로 설치되었을 때 null 포인터 예외가 발생합니다.
F/FileObserver( 367): Unhandled exception in FileObserver [email protected]430
F/FileObserver( 367): java.lang.NullPointerException: name == null
F/FileObserver( 367): at java.io.File.<init>(File.java:150)
F/FileObserver( 367): at java.io.File.<init>(File.java:124)
F/FileObserver( 367): at com.android.server.pm.PackageManagerService.getDataPathForPackage(PackageManagerService.java:3579)
F/FileObserver( 367): at com.android.server.pm.PackageManagerService.scanPackageLI(PackageManagerService.java:3940)
F/FileObserver( 367): at com.android.server.pm.PackageManagerService.scanPackageLI(PackageManagerService.java:3382)
F/FileObserver( 367): at com.android.server.pm.PackageManagerService.access$1700(PackageManagerService.java:172)
F/FileObserver( 367): at com.android.server.pm.PackageManagerService$AppDirObserver.onEvent(PackageManagerService.java:5541)
F/FileObserver( 367): at android.os.FileObserver$ObserverThread.onEvent(FileObserver.java:125)
F/FileObserver( 367): at android.os.FileObserver$ObserverThread.observe(Native Method)
F/FileObserver( 367): at android.os.FileObserver$ObserverThread.run(FileObserver.java:88)
D/dalvikvm( 367): GC_FOR_ALLOC freed 1488K, 25% free 11974K/15816K, paused 56ms, total 57ms
A 문자열 널 포인터! 어떻게 된 거예요? 여기
는 PackageManagerService (Android4.2)에서 관련 안드로이드 소스 코드 :private File getDataPathForPackage(String packageName, int userId) {
/*
* Until we fully support multiple users, return the directory we
* previously would have. The PackageManagerTests will need to be
* revised when this is changed back..
*/
if (userId == 0) {
return new File(mAppDataDir, packageName);
} else {
return new File(mUserAppDataDir.getAbsolutePath() + File.separator + userId
+ File.separator + packageName);
}
}
하지만 난 여전히 이유를 알 수 없습니다.
UDPATE :
이 매니페스트에 <original-package>
태그의 이유는, 그것이 사라 문제를 제거합니다.
이는 3579 라인입니까? – Rajeev
"내 소스 코드에서 else {"입니다. – herbertD