7

SytemUI (ステータスバーなど) をカスタマイズする必要があるカスタム ROM に取り組んでいます。だから、ここに私がするステップがあります

1. $ . build/envsetup.sh
2. $ lunch 1 // normal emulator
3. $ make -j4

エミュレーターが起動してデフォルトのジェリービーン 4.2.2 AOSP で実行されたら、ステータスバーのレイアウトを変更します。たとえば、bg の色を変更してから実行します。

4. $ mmm frameworks/base/packages/SystemUI   //Creates the SystemUI.odex & SystemUI.apk in the out/target/product/generic/system/app/

では、この SystemUI apk を実行中のエミュレーター/デバイスに更新するにはどうすればよいですか? アップグレード中に SystemUI apk と一緒に必要になる他のすべての apk はどれですか?

: このケースは、SystemUI.apk OTA の更新をそのデバイスのユーザーに送信したい実際のデバイスに有効です。つまり、現在 Google がプレイ マーケット アプリに対して行っていることです (デバイスを再起動しなくても自動的に更新されます)。

したがって、これら 2 つのコンテキスト (エミュレーターと実際のデバイスのシナリオ) で、それを実現する方法を提案してください。

私はすでに adb コマンドを使用して試しました

$ adb install -r out/target/product/generic/system/app/SystemUI.apk エミュレーターでは、エラーINSTALL_FAILED_DEXOPTが発生します

助けて感謝!

4

1 に答える 1

4

申し訳ありませんが、この提案を簡単にテストするための環境設定はありませんが、エミュレーターの場合は、代わりに をadb install使用してみてくださいadb push(ソースと宛先の両方に目的のパスを指定します)。最初に再マウントして、システム パーティションが読み取り専用でないことを確認する必要がある場合があります。

    adb remount
    adb push out/target/product/generic/system/app/SystemUI.apk /system/app

その後、 and (ps コマンドの nnnn = PID をcom.android.systemui使用) を使用して、プロセスも再起動する必要があると思います。adb shell psadb shell kill nnnn

adb sync更新が必要なファイルを自動的に検出できるため、コマンドを確認することもできます。

adb sync [ <directory> ]     - copy host->device only if changed
                               (-l means list but don't copy)
notes: 
  <localdir> can be interpreted in several ways:
  - If <directory> is not specified, both /system and /data 
    partitions will be updated.
  - If it is "system" or "data", only the corresponding partition
    is updated.

PS: ファイルをプッシュするときに「メモリ不足」エラーが発生した場合は、エミュレータの起動オプションを変更して、より大きなパーティション サイズを含める必要がある場合があります。

    emulator -partition-size 512

お役に立てれば!

于 2013-06-04T17:39:03.767 に答える