Android RecoverySystem.installPackage java.lang.NullPointerException

Android RecoverySystem.installPackage java.lang.NullPointerException,android,android-source,ota,android-rom,Android,Android Source,Ota,Android Rom,我正在玩AOSP,并尝试应用OTA软件包 1) 。我为Google Pixel构建了AOSP并安装了它 2) 。我创建了一个简单的应用程序,下载OTA包,并尝试应用它 (基于本文:) 我打电话来 RecoverySystem.installPackage(getContext(),文件),我明白了 java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.os.IRecoverySyst

我正在玩AOSP,并尝试应用OTA软件包

1) 。我为Google Pixel构建了AOSP并安装了它

2) 。我创建了一个简单的应用程序,下载OTA包,并尝试应用它 (基于本文:)

我打电话来
RecoverySystem.installPackage(getContext(),文件),我明白了

java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.os.IRecoverySystem.setupBcb(java.lang.String)' on a null object reference
    at android.os.RecoverySystem.setupBcb(RecoverySystem.java:895)
    at android.os.RecoverySystem.installPackage(RecoverySystem.java:496)
    at android.os.RecoverySystem.installPackage(RecoverySystem.java:421)

有谁能告诉我如何修复它吗?

据我所知,您的错误来自这段代码:

在RecoverySystem.java中:

RecoverySystem rs = (RecoverySystem) context.getSystemService(
                Context.RECOVERY_SERVICE);
if (!rs.setupBcb(command)) {
    throw new IOException("Setup BCB failed");
}

在第一段代码(if求值)中,您的错误是
rs
,它的
mService
成员为
null
。在“setupBcb”方法中使用。 因此,您正在使用的上下文似乎无法以某种方式访问context.RECOVERY\u服务


您正在使用活动上下文吗?我想尝试一下git应用程序上下文。

这是一个旧线程,但即使在设置了所需的权限并将apk文件放入/system/app/myapp之后,我在Android 7.1上也遇到了完全相同的问题。我通过将这一行添加到AndroidManifest.xml中解决了这个问题

android:sharedUserId=“android.uid.system”

我的清单文件是这样的-

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.myapp"
    android:sharedUserId="android.uid.system"
    tools:ignore="GoogleAppIndexingWarning">


我注意到同样的事情,你找到解决方案了吗?@Alex,是的,但我忘了我是如何解决的。我记得,权限有问题。您必须授予权限:
最后一个,只能授予系统应用程序,正如我所记得的,您可以查看这个有用的示例:这是CopperHeadPosit的内部更新程序实现,对我来说是权限问题。如果您的设备上安装了priv应用程序,并添加了权限,然后重新安装该应用程序,它将不会获取新权限。你必须删除旧的应用程序并将apk复制到priv-app文件夹,然后从那里重新安装以获得新的许可。感谢你将我指向CopperheadOS版本@Alexander
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.myapp"
    android:sharedUserId="android.uid.system"
    tools:ignore="GoogleAppIndexingWarning">