Android服务作为系统应用程序安装时会出现空指针异常

Android服务作为系统应用程序安装时会出现空指针异常,android,service,Android,Service,我有一个Launcher应用程序,其服务通常作为用户应用程序运行,但在我将其作为系统应用程序导入/system/app/后,它无法安装,下面是奇怪的日志: F/FileObserver( 367): Unhandled exception in FileObserver com.android.server.pm.PackageManagerService$AppDirObserver@41130430 F/FileObserver( 367): java.lang.NullPointerE

我有一个Launcher应用程序,其服务通常作为用户应用程序运行,但在我将其作为系统应用程序导入/system/app/后,它无法安装,下面是奇怪的日志:

F/FileObserver(  367): Unhandled exception in FileObserver com.android.server.pm.PackageManagerService$AppDirObserver@41130430
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
但我还是不知道原因

乌德帕特:


这就是清单中标记的原因,删除它,问题就消失了。

大多数情况下,您的包名是空的。如果您看到的文档,您会注意到,当
name
部分为
null
时,会引发确切的异常

公共文件(文件目录,字符串名称) 使用指定的目录和名称构造新文件

参数 dir存储文件的目录。 命名文件名

投掷 如果名称为null,则为NullPointerException

在我的源代码中是“}else{”。
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);
    }
}