przyznawanie uprawnień systemowych aplikacji w emulatorze Androida

Buduję aplikację, która będzie dołączona na urządzeniu z Androidem jako aplikacja systemowa. Producent jest sposób na dostarczenie urządzenia do nas, więc w międzyczasie chciałbym przyznać uprawnienia na poziomie systemu aplikacji w emulatorze, więc mogę pracować nad funkcją automatycznej aktualizacji, która zrobi ciche instalacje APK bez żadnych interakcji z użytkownikiem. Z tego, co czytałem, jego zrozumienie, że jedynym sposobem, aby być w stanie zrobić ciche instalacje na Androida jest, jeśli aplikacja jest podpisane tym samym certyfikatem Co OS. Więc jak Mogę to symulować w emulatorze?

Author: Ben, 2012-02-29

2 answers

Jeśli chcesz uzyskać uprawnienia signatureOrSystem, musisz tylko umieścić je na obrazie systemu; nie musisz być podpisywany żadnym specjalnym certyfikatem. Możesz to zrobić jednorazowo (do momentu wyjścia z emulatora) w następujący sposób:

> adb root
> adb remount
> adb push /path/to/My.apk /system/app/My.apk

Gdy to zrobisz, możesz użyć normalnego procesu, aby zainstalować dalsze aktualizacje na partycji danych ("ADB install-r /path/to/My.apk " czyli to, co robią narzędzia programistyczne, gdy uruchamiasz z Eclipse). Podczas instalacji w ten sposób aplikacja zachowuje wszelkie uprawnienia systemu signatureOrSystem zażądał od oryginalnej wersji na obrazie systemu, ale nie może uzyskać żadnych nowych takich uprawnień.

Jeśli potrzebujesz uprawnień do czystego podpisu, musisz podpisać swoją aplikację tym samym certyfikatem, co ten, który deklaruje te uprawnienia(zazwyczaj podstawowa struktura, ale system multimedialny jest oddzielnym certyfikatem itp.). Jeśli żądasz uprawnień do podpisu, nie musisz być instalowany na obrazie systemu, możesz po prostu zainstalować go jako normalną aplikację i nadal można uzyskać uprawnienia z powodu podpisywania.

 31
Author: hackbod,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-10 09:07:43

Z tego co wiem, musisz:

  • Pobierz źródło Androida i zbuduj obraz oprogramowania emulatora.
  • podpisz aplikację za pomocą kluczy w drzewie źródłowym Androida pod adresem /build/target/product/security/.
  • dodaj android:sharedUserId="android.uid.system" do manifestu aplikacji.
  • Uruchom aplikację na emulatorze przy użyciu obrazu wbudowanego w kroku 1.

Powodem konieczności zbudowania własnego obrazu firmware jest to, że można dostać się do kluczy. Teraz, to Może {[16] } być możliwe, że klucze dla standardowego emulatora obrazu są dostępne gdzieś, co pozwoli Ci zaoszczędzić długi i niezwykle żmudny proces budowania własnego Androida, ale obawiam się, że nie mam pojęcia, gdzie mogą one być.

Zastrzeżenie: nigdy nie próbowałem tego sam.

 2
Author: David Given,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-04 10:42:15