RecoverySystem.installPackage java.lang.NullPointerException
Я играю с AOSP и пытаюсь применить OTA пакет
1). Я построил AOSP для Google Pixel и установил его
2). Я создал простое приложение, которое загружает OTA-пакет и пытается применить его (оно основано на этой статье: http://jhshi.me/2013/12/13/how-to-apply-downloaded-ota-package/index.html)
Я зовуRecoverySystem.installPackage(getContext(), file);
и это меня заводит
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)
Может кто-нибудь указать мне, как это исправить, пожалуйста?
1 ответ
Насколько я вижу, ваша ошибка происходит из этого куска кода:
В RecoverySystem.java:
RecoverySystem rs = (RecoverySystem) context.getSystemService(
Context.RECOVERY_SERVICE);
if (!rs.setupBcb(command)) {
throw new IOException("Setup BCB failed");
}
....
/**
* Talks to RecoverySystemService via Binder to set up the BCB.
*/
private boolean setupBcb(String command) {
try {
return mService.setupBcb(command);
} catch (RemoteException unused) {
}
return false;
}
В первом фрагменте кода, если оценка, ваша ошибка rs
имеет это mService
член как null
, Который используется в методе ''setupBcb`. Таким образом, похоже, что у контекста, который вы используете, НЕ так или иначе доступен Context.RECOVERY_SERVICE.
Вы используете контекст деятельности? Я бы попробовал приложить контекст приложения.
Это старый поток, но у меня была такая же проблема на Android 7.1 даже после установки необходимых разрешений и помещения файла apk в /system/app/myapp. Я решил это, добавив эту строку в 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">