2013-05-31 32 views
6

Sto lavorando su ROM personalizzata, in cui ho bisogno di eseguire alcune personalizzazioni su SytemUI (ad esempio, barra di stato). Così, qui sono i passi che faccioCome aggiornare SystemUI.apk su emulatore e dispositivo reale

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

volta che il mio emulatore è installato e funzionante con predefinito Jellybean 4.2.2 AOSP, ho poi fare alcune modifiche nella barra di stato di layout per esempio a cambiare il colore bg e poi effettuo

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

Così come posso aggiornare questo SystemUI apk al correre emulatore/dispositivo? Quali altri apk saranno richiesti insieme all'apk di SystemUI durante il suo upgarde?

Nota: questo caso sarebbe valido per i dispositivi reali in cui voglio inviare l'aggiornamento di SystemUI.apk OTA agli utenti di tale dispositivo, ad es. attualmente ciò che Google fa per l'app di gioco (automaticamente viene aggiornato senza la necessità di riavviare il dispositivo).

Quindi, per favore, suggerisci in questi due contesti (emulatore e scenari di dispositivi reali) come ottenerlo.

Ho già provato con comandi adb utilizzando

$ adb install -r out/target/product/generic/system/app/SystemUI.apk sull'emulatore ma dà l'errore INSTALL_FAILED_DEXOPT

Aiuto apprezzato!

risposta

3

Spiacente, non ho la mia configurazione di ambiente per testare facilmente questo suggerimento, ma per l'emulatore, invece di adb install, provare a utilizzare adb push (fornendo il percorso desiderato per l'origine e la destinazione). Potrebbe essere necessario assicurarsi che la partizione di sistema non è di sola lettura per rimontarlo prima:

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

Dopo di che, penso che potrebbe essere necessario riavviare il processo com.android.systemui troppo utilizzando adb shell ps e adb shell kill nnnn (con nnnn = PID dal comando ps).

Si potrebbe anche voler guardare al comando adb sync poiché può rilevare automaticamente quali file necessitava di un rinnovo:

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: Se si ottiene un "Memoria insufficiente" l'errore quando si spinge la di file, potrebbe essere necessario modify your emulator launch options to include a larger partition size:

emulator -partition-size 512 

Spero che questo aiuti!

+1

provare il '' comandi start' stop' e dalla adb shell per riavviare il runtime di Android, piuttosto che uccidere processo. –

+0

+1 'adb shell stop' seguito da' adb shell start' sembra essere il modo più civile di riavviare in modo pulito dopo che i file sono stati aggiornati con 'sync' :) – Joe

+0

Grazie joe & chris-stratton per le preziose risposte. Ho provato secondo i suggerimenti. Ma non sta avviando il servizio ui di sistema. Ecco il registro: - 06-04 04: 00: 54.385: I/PackageManager (277): mi aspetto una migliore app di sistema updatd per com.android.systemui; rimozione del sistema. app. 06-04 04: 00: 58.895: W/ActivityManager (277): impossibile avviare l'intento del servizio {cmp = com.android.systemui/.SystemUIService} U = 0: non trovato. Ho cambiato il colore bg nel file di layout della barra di stato del sistema ui e poi ho fatto mmm, adb stop e start e ho ricevuto questo errore. Qualche idea su questo? Inoltre, non possiamo aggiornare senza riavviare – user755499

0

Ho provato questo su cyanogenmod 10.2.1 e funziona. Compilare systemui.apk e generare la versione deodex con: rendere SystemUI DISABLE_DEXPREOPT = true WITH_DEXPREOPT = false nella cartella SystemUI. Sul dispositivo, connettersi con adb shell, salvare il SystemUI originale.apk

cp /system/app/SystemUI.apk <somewhere>

poi

mount -o remount,rw /system

per consentire la copia del nuovo SystemUI.apk in/system/cartella app

cp SystemUI.apk /system/app

comando Usa mmm per costruire il versione finale che si desidera includere nella rom personalizzata

speranza che questo aiuta