2013-05-31 15 views
6

emülatörü ve gerçek cihazda SystemUI.apk nasıl yükseltilir. Yani, burada benim emülatörü yukarı ve varsayılan jelibon 4.2.2 AOSP ile çalışmaya başladığında benBen SytemUI (örneğin statusbar) bazı özelleştirme gerçekleştirmek için gereken özel ROM, üzerinde çalışıyorum

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

yapmak adımlardır, ben o zaman statusbar düzeni örn bazı değişiklikler yapmak i bg rengini değiştirmek ve sonra ben

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

Peki ben çalışan emülatör/cihaza bu SystemUI apk güncelleyebilirim gerçekleştirmek? Hangi tüm diğer apks onun upgarde sırasında SystemUI apk'de birlikte gerekli olacak?

Not: Bu durum, SystemUI.apk OTA'nın güncellemesini söz konusu aygıtın kullanıcılarına göndermek istediğim gerçek aygıtlar için geçerli olacaktır, örn. Şu anda google oyun piyasası uygulaması için ne yapar (cihazı yeniden başlatma ihtiyacı olmadan otomatik olarak güncellenir).

Böylece elde etmek nasıl bu iki bağlam (emülatörü ve gerçek cihaz senaryoları) 'de önerilerde bulunun.

Zaten emülatörünüzde

$ adb install -r out/target/product/generic/system/app/SystemUI.apk kullanarak adb komutları ile denedi ancak hata INSTALL_FAILED_DEXOPT

Yardım takdir verir!

cevap

3

Üzgünüm, kolayca bu öneriyi test etmek benim çevre kurulum yok, onun yerine adb install ait emülatörü için, (hem kaynak hem hedef için istenen yolu sağlayarak) adb push kullanmayı deneyin. Emin sistem bölümü değil salt okunur önce onu yeniden monte edilmesiyle yapmanız gerekebilir: Bundan sonra

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

, sana nnnn = PID ile adb shell ps ve adb shell kill nnnn (kullanarak çok com.android.systemui işlemini yeniden başlatmak gerekebilir düşünüyorum ps komutundan).

Ayrıca otomatik gerekli güncelleme dosyaları hangi algılayabilir beri adb sync komuta bakmak isteyebilirsiniz:

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: bastırıyor açarken bir "bellek yetersiz" hatası alırsanız dosya, sen modify your emulator launch options to include a larger partition size gerekebilir: Bu yardımcı olur

emulator -partition-size 512 

Umut!

+1

ziyade süreç öldürme yerine, Android çalışma zamanını yeniden adb kabuğundan 'stop' ve' start' komutlarını deneyin yardımcı olur. –

+0

+1 'adb shell stop 'adb shell start' tarafından takip ediliyor, dosyalar daha sonra' sync' ile özellikle güncellendikten sonra temiz olarak yeniden başlatmanın daha medeni bir yolu gibi görünüyor :) – Joe

+0

Değerli yanıtlar için teşekkürler joe & chris-stratton. Önerilere göre denedim. Ama sistem ui hizmetini başlatmıyor. İşte günlük geçerli: - 6-4 Nisan: 00: 54,385: I/PackageManager (277): com.android.systemui için daha iyi updatd sistem uygulamasına beklemek; sistemi kaldırma. Uygulamanın. Nisan 06-04: 00: 58,895: ActivityManager (277)/G: Hizmet niyet başlatmak edilemiyor {cmp = com.android.systemui/.SystemUIService} U = 0: bulunamadı. Sistemin durum çubuğu mizanpaj dosyasındaki bg rengini değiştirdim ve sonra mmm, adb stop ve start yaptım ve bu hatayı alıyorum. Bunun hakkında bir fikrin var mı? Ve ayrıca biz 'adb remount' +' adb push'/'senin' mmm' adımdan sonra ve 'adb stop' ve' start' önce sync' yeniden başlatma – user755499

0

Bunu cyanogenmod 10.2.1'de denedim ve işe yarıyor. Systemui.apk dosyasını derleyin ve deodexed sürümünü şu şekilde oluşturun: SystemUI DISABLE_DEXPREOPT = true WITH_DEXPREOPT = yanlış SystemUI klasöründe. Cihazda , adb kabuk ile bağlantı özgün SystemUI kaydedin.apk

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

sonra

mount -o remount,rw /system

inşa etmek/app dizini/sistemindeki yeni SystemUI.apk kopyalama

cp SystemUI.apk /system/app

Kullanım mmm komutunu izin vermek özel romanıza eklemek istediğiniz son versiyon

umut bu