2017-10-01 3 views
1

Sagen wir, wir haben AOSP-Quellcode heruntergeladen, gebaut und geflasht. Jetzt wird eine Änderung an einer System-App vorgenommen (z. B. eine Konstante im Paket/apps/Nfc-Paket geändert).Update AOSP integrierte System-App

Der nächste Schritt ist es zu bauen, und es gibt zwei Möglichkeiten, es zu tun:

cd packages/apps/Nfc; mm 

oder

mmm Nfc 

Dies erzeugt aus/target/Produkt // system/app/NfcNci/NfcNci.apk Datei

Welches ist die richtige Methode zum Aktualisieren der System App?

Ich versuchte adb installieren NfcNci.apk aber keinen Erfolg mit:

~/android/aosp-7.1.2-3.10-v2/out/target/product/kugo/system/app/NfcNci$ adb install NfcNci.apk 
Failed to install NfcNci.apk: Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install com.android.nfcnci without first uninstalling.] 
~/android/aosp-7.1.2-3.10-v2/out/target/product/kugo/system/app/NfcNci$ adb install -r NfcNci.apk 
Failed to install NfcNci.apk: Failure [INSTALL_FAILED_INVALID_APK: Package couldn't be installed in /data/app/com.android.nfcnci-1: Package /data/app/com.android.nfcnci-1/base.apk code is missing] 

Antwort

2

einen Weg gefunden, leicht zu ‚neu installieren‘ die App selbst (lassen Sie die App Einstellungen als Beispiel) setzen:

mmm packages/apps/Settings # Build the module 
adb root ; adb remount # Restart adbd as root and mount /system as writable 
adb push out/target/product/<device_name>/system/priv-app/Settings /system/priv-app # Push the built files to the device 

Dann zwangs schließen und starten Sie die App (indem er von Recents klauen).Keine Notwendigkeit Gerät neu starten, um zu nehmen ändert

HINWEIS: In Abhängigkeit von der Anwendung, der Pfad auf system/app statt /system/priv-app

sein kann
0

prüfen build/envsetup.sh Datei - es gibt auch Befehle mmp und mmmp zu bauen und ein Modul schieben verbunden Gerät. Auch adb sync kann verwendet werden, um das gesamte Bild zu synchronisieren. Wenn Sie also ein Modul aktualisieren, werden geänderte Dateien auf das Gerät übertragen.

Auch können Sie die geänderten Dateien über normale `adb push 'und Neustart Gerät.

Ich weiß nicht, ob System-Apps über adb install aktualisiert werden können, wahrscheinlich ja, aber ich denke, Sie müssen Build-Nummer in der Manifest-Datei erhöhen.

Ich glaube nicht, dass Sie eine System-App mit adb install -r deinstallieren können, da Apps nicht von system Partition entfernt werden können, nur von data. Ich weiß nicht, warum Sie in diesem Fall INSTALL_FAILED_INVALID_APK erhalten, möglicherweise, weil der App-Manager die Apk des Basissystems tatsächlich nicht deinstallieren kann.

0

Eine andere Möglichkeit ist:

  1. die neue apk mit adb push
  2. auf die SD-Karte des Geräts kopieren mount/System lesen schreiben: mount -o rw,remount,rw /system
  3. kopieren Sie Ihre neue APK von/sdcard über Ihre alte APK in/system/app
  4. die .odex Datei Ihrer alten APK
  5. Neustart des Gerätes
entfernen

Für die Entwicklung können Sie ein einfaches Skript für diese Schritte verwenden.