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">
Другие вопросы по тегам