2017-07-20 8 views
1

私はAOSPで遊んで、そしてOTAパッケージRecoverySystem.installPackageのjava.lang.NullPointerException

1)を適用しようとしています。 Google Pixel用AOSPを作成してインストールしました。

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) 

缶だれでもポイントを獲得します私はそれを修正する方法を教えてください?最初に

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; 
} 

+0

同じことに気付いていますが、解決策を見つけましたか? – Alex

+0

@Alex、はい、しかし、私はそれをどのように解決したのか忘れています。私が覚えているように、権限に問題がありました。あなたは許可を与えなければなりません: '' '' 最後のもの私は – Alexander

+0

のBTWを覚えているので、この便利な例を確認することができます:https://github.com/CopperheadOS/platform_packages_apps_Updater これはCopperheadOSの内部アップデータの実装です – Alexander

答えて

1

私の知る限り見ることができるように、あなたのエラーは、コードのこの部分から来ている:RecoverySystem.javaで

コードの一部である場合は、評価は、rsですmServiceのメンバーはnullとなっています。これは '' setupBcb`メソッドで使用されます。 これは、使用しているコンテキストに何らかの形で到達可能なContext.RECOVERY_SERVICEがないようです。

アクティビティコンテキストを使用していますか?私はアプリケーションコンテキストを試してみるだろう。

関連する問題