Die unter /system/priv-app installierte App wird nicht ausgeführt

Voraussetzungen :

  • ein verwurzeltes Rockchip-basiertes chinesisches Tablet-Gerät mit Android 6, gepatcht, um SystemUI zu deaktivieren

  • Eigenentwickelte App, die die LAUNCHER-Kategorie deklariert und die volle Kontrolle über das Gerät übernehmen soll

Was versuche ich zu erreichen:

Installieren Sie die App als System-App, um die Handhabung von SDK 23+-Berechtigungen zu vermeiden

Was habe ich bisher gemacht:

  • habe die App regelmäßig über Android Studio installiert
  • Habe die App nach /system/priv-app verschoben:

(Wurzel)

ls /data/app/my.package.name-1
 base.apk
 lib
 oat
mount -o rw,remount /system
mv /data/app/my.package.name-1 /system/priv-app/AppName
ls -la /system/priv-app/AppName
 -rw-r--r-- system   system    2464934 2017-12-08 11:32 base.apk
 drwxr-xr-x system   system            2017-12-08 11:32 lib
 drwxrwx--x system   install           2017-12-08 11:32 oat
reboot

Was ist das Problem?

Es scheint, dass das System nicht weiß, dass die App existiert: Sie läuft nicht beim Booten (was sie perfekt macht, wenn sie als normale App installiert wird) und ich kann sie nicht manuell starten:

root@rk312x:/ # am start -n my.package.name/.ui.MainActivity
Starting: Intent { cmp=my.package.name/.ui.MainActivity }
Error type 3
Error: Activity class {my.package.name/my.package.name.ui.MainActivity} does not exist.

Was vermisse ich?

thx, das hat das Problem beim Starten der App gelöst. Es werden immer noch keine Berechtigungen automatisch erteilt, ich vermute aufgrund einer Nicht-Systemsignatur. Die Frage bezog sich jedoch auf das Ausführen der App, also posten Sie bitte Ihre Kommentare als Antwort
Versuchen Sie, automatisch Laufzeitberechtigungen zu erhalten? Wenn Sie sich in diesem Verzeichnis befinden, wird es nicht automatisch gewährt. Sie müssten vom Signed Package Manager von Google auf die weiße Liste gesetzt werden. Sie könnten einfach auf API 22 oder darunter abzielen und Sie würden alle gewünschten Berechtigungen erhalten, indem Sie einfach das APK installieren.

Antworten (2)

Das Ändern der Berechtigungen auf -rw-r--r--und des Eigentümers, rootgefolgt von einem Neustart, sollte das Problem beheben

Aber wie OP betonte, müssen Signaturprobleme gelöst werden

Das Verschieben einer Anwendung von einem Raum in einen anderen auf Marshmallow und höher führt fast immer dazu. Verwenden Sie am besten den cpBefehl, danach löschen Sie die Quelle. Eine Anwendung bei Daten hat ihre eigenen festgelegten Berechtigungen, die für das System bestehen bleiben, und selbst wenn Sie sie ändern, kümmert sich das System nicht darum, die Vorbereitung der App auszulösen, da es keine neue Instanz der Dateierstellung gibt. Der beste Weg ist

cp /data/app/[package.name]-1/app-name.apk /system/app/[app-folder-name]/app-name.apk

Wiederholen Sie dies für die Bibliotheken im App-Ordner zum App-Ordner. Der Ordner sollte folgendermaßen aussehen:

APPNAME mit .apk und LIB-Ordner LIB-Ordner mit Bibliothekstyp wie ARM-Ordner ARM-Ordner mit allen Bibliotheken, zB libexample.so

Setzen Sie die Berechtigung aller Ordner auf chmod 0755und alle Dateien auf Berechtigungchmod 0644

Sie werden arbeiten. Um das Leben einfacher zu machen, hören Sie auf, die Shell-Befehle zu verwenden. Suchen Sie nach einem Dateimanager, um Ihre Arbeit zu vereinfachen, aber denken Sie immer daran, dass Sie TWRP oder Terminal auf einem Startgerät verwenden, kopieren und löschen Sie immer die Quelle. Das Bewegen für viele ROMs wird tatsächlich dazu führen

HINWEIS: Der Oat- Ordner in diesem Ordner unter /data/app/package.name/ ist nutzlos. Dalvik erstellt seine neue Classes.dex unter /data/dalvik-cache bei der Installation als Systemanwendung