Próbuję zainstalować systemową aplikację z mojego kodu Java i jak dotąd nie odniosłem żadnego sukcesu.
Oto, co zrobiłem do tej pory:Android: programowo kopiuje apk do/system/app
- Moje urządzenie jest zrootowane.
- Moja aplikacja "instalator" jest instalowana jako aplikacja systemowa. (skopiowałem go ręcznie do/system/app)
- Podpisałem plik instalacyjny APK z kluczem platformy, a w Manifeście mam
android:sharedUserId="android.uid.system"
. Próbowałem (i próbowałem, a potem trochę więcej) dla
Runtime.getRuntime.exec("su")
. Zamierzam zamontować partycję systemową jakorw
, zrobićcat
dla apk, a następnie utworzyć partycję systemowąro
. Poniżej znajduje się lista poleceń:mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system<br> cat /sdcard/application.apk > /system/app/application.apk<br> mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system<br><br>The application.apk here is the app being installed from the installer app. This app is also signed with platform key, and has the sharedUserId configured.
- Poprosiłem o pozwolenie
INSTALL_PACKAGES
w manifeście.
Próbowałem wielu odmian formatu exec (""), w tym przy użyciu 'su -c'
przy każdym poleceniu. Dostałem wyjątek od Broken Pipe i Security. Czasami nie dostaję wyjątku, ale plik nie jest kopiowany.
Proszę dać mi znać, czego tu brakuje. Czy ktoś to działa?
Dzięki!
na pokrewnej notatce, jaka jest różnica między aplikacją podpisaną przy użyciu klucza platformy a funkcją sharedUserId = system; i aplikacja obecna w/system/app? – Chaitanya
aplikacje w/system/app mają dostęp do poziomu uprawnień 2 (nie 1, o ile wiem). Bez względu na uprawnienia * przyznane *, aplikacje z sharedUserId systemu dziedziczą uprawnienia nadawane aplikacji "nadrzędnej", a ponadto działają w tym samym id procesowym, co "parent". Różne interfejsy API sprawdzają identyfikator procesu aplikacji i odmawiają dostępu do nich, jeśli nie należą do określonego rodzaju. Chociaż 2 są w większości ściśle ze sobą powiązane, nie zawsze * idą w parze.To jest sposób nietechnologiczny, aby to opisać, jestem pewien, że inni ludzie wykonaliby lepszą robotę ... – slinden77