Reputation: 4936
I'm playing with AOSP, and trying to apply OTA package
1). I built AOSP for Google Pixel and installed it
2). I created simple app, which downloads OTA package, and trying to apply it (It's based on this article: http://jhshi.me/2013/12/13/how-to-apply-downloaded-ota-package/index.html)
I'm calling
RecoverySystem.installPackage(getContext(), file);
, and it gets me
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)
Can anyone point me how to fix it please?
Upvotes: 2
Views: 1126
Reputation: 51
This is an old thread but I had the exact same issue on Android 7.1 even after setting the required permissions and putting the apk file in /system/app/myapp. I solved it by adding this line to the AndroidManifest.xml.
android:sharedUserId="android.uid.system"
And my manifest file is like this -
<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">
Upvotes: 2
Reputation: 2200
As far as I can see, your error comes from this piece of code:
In 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;
}
In the first piece of code, the if evaluation, your error is rs
has it's mService
member as null
. Which is used in the ''setupBcb` method.
So it looks like the context you are using does NOT have Context.RECOVERY_SERVICE reachable somehow.
Are you using activity context? I would git Application Context a try.
Upvotes: 3