Uygulamalarınızı firmware'e nasıl ekleyebilirsiniz. Sistem ARM kullanarak Android'e nasıl yüklenir?

Android akıllı telefonun hemen hemen her kullanıcısı, ihtiyaçlarını ve isteklerini karşılamak için ürün yazılımını oluşturma veya düzenleme isteğine sahipti. Bu yazıda CWM (zip formatında) için firmware düzenleme prensibini ele alıyoruz.

hazırlık:

Her şeyden önce, temel olarak hangi firmware'in alacağımıza karar vermelisiniz. Kullanmak daha iyidir. Zip içinde firmware. Hemen hemen her ortak cihaz için temiz bir firmware + root var.
Ürün yazılımı seçildiğinde, PC'nizde size uygun olan herhangi bir yere indirmeniz gerekir (paketinden çıkarmamalısınız).
Ayrıca bir arşivleyiciye ihtiyacımız var, kullanmanızı tavsiye ederim 7zip  ve türünün en iyi metin editörü Not Defteri +.

Firmware yapısı:

Firmware ile arşivi açtığınızda aşağıdakileri görürsünüz:
META-INF  - Klasör, ürün yazılımı yükleme komut dosyalarını içerir.
sistem  - Tüm yazılım dosyalarını içeren dosyalar (uygulamalar, ince ayarlar, komut dosyaları vb.).
boot.img  - Sistemin çekirdeği.

Hemen hemen tüm manipülasyonlar klasörde gerçekleştirilir sistemyapısı:
uygulamanın  - sistem uygulamaları.
çöp kutusu  - Sistemin kendi kaynakları.
vs  - Komut dosyaları, tweaks, yapılandırmalar, profiller ve sistem ayarları.
yazı  - Sistem yazı tipleri.
iskelet  - Ana sistem dosyaları burada saklanır (grafik, animasyon metni ayarları, vb.).
lib  - sistem kütüphaneleri.
medya  - Multimedya dosyaları (bildirim melodileri, indirme animasyonları, duvar kağıtları, vb.).
usr  - ayarlar sistem tarafından daha fazla değiştirilmez ("salt okunur" modunda çalışırlar).
xBIN  - Yine, sistem yapılandırmaları ve diğer tweaks.
build.prop  - sistem, yerel ayarlar ve sistem performansı hakkında bilgi.

uygulamalar:

Sisteme yazılım eklemeden / çıkarmadan önce, firmwareinizin deodexed olup olmadığını (yani app klasöründeki .odex dosyalarının varlığını kontrol etmek için) kontrol etmek gerekir. Herhangi bir dosya varsa, onlardan kurtulmanız gerekir. talimatlar .
Firmware'e yazılım ekle:
Her şeyden önce, montajınıza eklemek istediğiniz akıllı programlarınıza yüklemeniz gerekir. Kurulumdan sonra bunları sistemden çıkarırız Kök exporer  ve onların analogları, veri / uygulama yolu boyunca bulunurlar, yani onlara ihtiyaç duyarız (eğer varsa) veri / veri yolu boyunca. Aynı ada sahip uygulama klasöründedir ve uzantıya sahiptirler. .bu  . Sonra ele geçirildi .apk  Dosyalar, sistem / uygulama yolundaki arşive ve uzantıya sahip dosyalara yerleştirilir .bu  (lib "s) yol sistemi / lib.
Yazılımı ürün yazılımından kaldırın:
Her şey basit, klasöre git uygulamanın  - Ne ihtiyacımız olmadığını belirler ve gereksiz tüm yazılımları kaldırırız (sistem dokunmamak için daha iyidir).

Dil ve firmware sürümü:

Build.prop dosyasını masaüstüne kopyalayın. Bir not defteri ile açın ve satırları bulun:

ro.product.locale.language = tr
ro.product.locale.region = ABD

rus dili için şunu yapmalısınız:

ro.product.locale.language = tr
ro.product.locale.region = RU

dizimizin adını string’e giriyoruz

aynı build.prop içinde

Grafik:

Ürün yazılımının tüm grafiksel kısmı, framework-res.apk dosya yolunda iki dosyada saklanır. systemframework  ve SystemUI.apk yol boyunca systemapp. Ayarlar uygulamasının grafik kısmı da doğal olarak Settings.apk uygulamasında saklanır.

Scripts ve tweaks (sistemin hızlanması ve optimizasyonu):

Ayarların çoğu dosyadadır. build.propbunu okuyabilirsin. Ayrıca, çekirdeğiniz destekliyorsa

Basitçe, ARM mimarisine göre üretilen çipin bir çip üzerinde (SoC) bir sistem olduğunu söyleyerek başlayalım. Yani, tek bir çip üzerinde uygulanan tam bir bilgisayar. Bu mimarinin işlemcileri çok sayıda cihaz (yönlendiriciler, anahtarlar, televizyonlara gömülü bilgisayarlar, oyun konsolları vb.) Yapmaktadır.

Bu mimari aynı zamanda düşük güç tüketimi ve ısı dağılımı özelliklerine de sahiptir, dolayısıyla akıllı telefonlar ve tablet bilgisayarlar gibi cihazlarda oldukça etkili bir şekilde kullanılmaktadır.

Cihazların tam adreslenmesi, bu inceleme makalesinin amacı değildir. Ben sadece potansiyel modderleri cihazlarında neler yapıldığını daha iyi anlayabilecek temel ilkelere tanıtmak istiyorum.

Bu nedenle, doğrudan bu tür cihazların indirme açıklamasına geçiyoruz. Hemen hemen her ARM işlemcinin, içine yerleştirilmiş olan çip içine yerleştirilmiş flash belleği vardır. indirici. Çipte bu tür bir belleğin yokluğunda veya önyükleyiciyi bulmak için bir alan olarak kullanılmadığında, çip genellikle bu önyükleyiciyi kesin olarak tanımlanmış bir adreste NOR-flaş'a göndermeyi ifade eder.

Birkaç downloader var. Bunların bir kısmı ticari. Ama açık kaynak kodlu bir bootloader, u-boot var. Ne yazık ki, kod açık olduğunda, işlemci-bağımlı kod içerir, böylece işlemci özellikleri olmadan, açık belgelere sahip olmayan bir işlemciye basitçe yüklenemez (uyarlanabilir).

Şimdi, bootloader'ın genellikle başlattıktan sonra ne yaptığını anlatacağız. X86 işlemcilerini temel alan bilgisayarların BIOS'ları ile oldukça doğrudan bir benzetme yapılabilir. ARM yükleyici, piyasaya sürüldüğünde, aynı zamanda, cihazın donanımının (RAM, veri depolama, ağ bağdaştırıcısı, vb.) Düşük seviyeli bir şekilde başlatılmasını gerçekleştirir. Seri bağlantı noktasını başlattıktan sonra (genellikle RS232 formatında, ancak 3,2 voltta), bu bağlantı noktasında başlatılan konsol aracılığıyla onunla çalışmak mümkündür.

Böyle görünüyor

Bu konsol aracılığıyla, donanımımızın neredeyse tamamen yapılandırılmasını veya yeniden yapılandırılmasını gerçekleştirebilirsiniz. Örneğin, Linux yüklemek için, en azından önyükleme sırasında çekirdeğe iletilen parametrelerin dizisini yeniden yapılandırmamız gerekecektir (android indirmek için varsayılan ayar ile). Ayrıca orada nand bölümleri ile tam olarak çalışabilirsiniz - silme, bölme, değiştirme, yazımdan koruma ve tersi, vb. vb (nanda bölümlerini değiştirme ile ilgili ek sorulardan kaçınmak için). Konsolda bile, bazı yazılımları indirebilir ve çalıştırabilirsiniz. Bu konsolda yapılan tüm ayarlar, cihaz açılırken varsayılan ayarlar olarak kaydedilebilir ve kullanılabilir.

Küçük bir kazı yaparız. Bootloader'ı bulmak için NOR-flash'a ek olarak, bazı durumlarda, NAND flash veya SD kartı da kullanılabilir. Ayrıca, bu tip flaş belleklerin kombinasyonlarını cihazda kullanmak mümkündür. Örneğin, bootloader NOR'ye yerleştirilebilir ve dahili sürücü (OS yerleşimi için) NAND veya SD, vb.

Yani, bir parça demir dahil ettik. Önyükleyiciyi yükledi. Yükleyici başlangıç ​​donanımı. Bu başlatma işleminin sonunda, yükleyici aşağıdaki yordamı gerçekleştirir:

1 - Çekirdek görüntüsünün ve ramdisk'in belleğine okuma ve yerleştirme - her ikisi de kesin olarak tanımlanmış adreslerde (u-boot komut satırında yapılandırılabilir).

2 - çekirdeğin doğru giriş noktasından başlatılması, kök dosya sisteminden harici ramdisk'in (initrd) nereden alınacağını ve init olarak neyin kullanılacağını belirtir.

RAM'in bir başka kısmı, örneğin video çekirdeği için belleklerini gerektiren cihazlar için tahsis edilir. Artık cihazın RAM'inin bir kısmının nerede bildirildiğini anlıyorsunuz.

Daha fazla önyükleme, Linux'un normal bir bilgisayarda başlatılmasından çok farklı değildir. Önyüklemeden sonra, çekirdek belirtilen init'i yürütür (bu sadece başka bir programdır). İnit yapılandırması ramdisk'te bulunan init.rc dosyasında yapılır. Ortam değişkenlerini ayarlar, disk aygıtlarını bağlar, gerekli hizmetleri başlatır vb. İnit.rc'den başlatma öncesi talimatların uygulanmasının bitiminde, Android'in kendisi başlatıldı. Android başlatma türü androidboot çekirdek başlatma seçeneği ile belirlenir. Android standart lansmanı istenen ramdisk (ramdisk.img) ve androidboot.normal parametresi kullanılarak parametreleri geçirerek bir bütün olarak gerçekleştirilir. Kurtarma modunu başlatmak için, kural olarak kurtarma programını (recovery.img dosyasında) ve androidboot.recovery çekirdek parametresini içeren başka bir ramdisk kullanılır.

Android için Linux çekirdeğinin bir varyasyonu olarak, initrd (ramdisk üzerindeki kök sistemi) desteği ile değil, sözde ile birleştirilebilir. initramfs. Bu durumda, tüm kök dosya sistemi sadece çekirdeğin içinde yer alacaktır. Bu durumda, kurtarma modu, kural olarak, kurtarma programını içeren kök dosya sistemi ile ikinci çekirdeği gerektirir. Ve bootloader'ı kurmak, kurtarma çekirdeğini yüklemek ve yürütmek için basittir.

Ve sonuç olarak, basit bir şema:

İşlemciyi başlatma -\u003e yükleyiciyi başlatma -\u003e ütüyü başlatma -\u003e çekirdek ve ramdisk'ten okuma -\u003e bu ramdisk'i kullanarak kerneli başlatma -\u003e init programını çalıştırma -\u003e android'i başlatma.

U-boot ve komutları hakkında daha fazla bilgiyi, örneğin bu wiki _http: //www.denx.de/wiki/view/DULG/Manual adresinde okuyabilirsiniz.

Bu bilgi sizin için yeterli değilse, daha sonra kaynak kodlarının arşivinden, Dokümantasyon / kernel-parameters.txt'deki Linux çekirdek başlangıç ​​parametreleri hakkında daha fazla bilgi edinebilirsiniz. Veya ihtiyacınız olan çekirdeğin sürümü için internette bu dosyayı bulun. Ama yukarıda belirtilen Android özelliklerini dikkate almayı unutmayın.

Merhaba Habr!

Birkaç yıl önce, Android ile ilk tanıştığımda, iş arkadaşımın Android'in değiştirilmiş veya kendi yapım yazılımını yükleme becerisini sağladığı duydum. Açıkçası ben ondan uzaktayım. Ve hatta yarım yıl önce bile, böyle şeylerle pek ilgilenmedim. Duşun derinliklerinde, üreticinin yaptığı şeyin normal kullanım için tasarlandığından emindim.

Çin, Google, Skype, Facebook ve diğer uygulamaların kullanımının fabrika ayarlarıyla yasaklandığı bir telefon satın aldığımda hayal kırıklığım neydi? Prensip olarak, gözlerimi bazı şeylere kapamak mümkündü, fakat telefonumun bir Google hesabının kullanımını ima etmediği zaman, kendimi öyle olmadığından emin olmaya söz verdim.

Yarım yıl geçti ve özel yazılımım dünya çapında başarıyla kullanılıyor.

Bu makale dizisi Android için ters programlamanın nasıl yapılacağını, yamaları, düzeltmeleri ve modları nasıl yapacağını tartışacak.

önsöz

  Ve böylece! Önce kullanılacak kavramları tanımlayalım bu  makale. Bununla birlikte, her zamanki anlayışınız çok farklı olabilir.

yama  - Program algoritmasını değiştirmek için mevcut program kodunun değiştirilmesi veya değiştirilmesi.
Maud  - Kural olarak, algoritmayı değiştirmeden mevcut bir program koduna ek işlevler eklemek.
Tweek  - Sistem parametrelerine erişimi kolaylaştırmak için programın işlevselliğini geliştirmek.

HTC telefon için tüm örneklerin alınacağını da belirtmek isterim, fakat bu, bu bilgilerin diğer telefonlarda kullanılamayacağı anlamına gelmez.

Aşağıdaki bilgileri kullanmanın sonucu olarak, telefonunuzdaki olası veri kaybından sorumlu olmadığım için dikkatinizi çekiyorum.

Çevre hazırlık

  Bu yazılımı veya bu yazılımı kullanma hakkında ayrıntılı talimatlar olmadan yapabilirim. Eğer bu makaleyle ilgileniyorsanız ve bu satırları okumayı bitirdiyseniz, o zaman tecrübeli bir kullanıcı olduğunuzu ve bu alanda iyi deneyimler yaptığınızı ya da en azından deneyimlediğinizi umarsınız. Bununla birlikte talimatlar, makaleler ve test sonuçları, Habré'nin yanı sıra tamamen kullanılabilir. Bazı terimlerin tanımı olmadan da yöneteceğim, aksi halde makale çok büyük ve sıkıcı olacaktır. Sadece davada yazacağız. Eminim ki çevreniz uzun zamandır ayakta duruyor. Değilse, indirip yüklemenizi öneririm.

1 . Android SDK'sı  . Bu, Android için bir uygulama geliştirme ortamıdır. Değişiklikler yapmak için program kodumuzu mutlaka kontrol etmeliyiz. Geliştirme ortamı, kullanabileceğimiz en iyisidir.
2 . Android Mutfak  . Bu yardımcı program resmi iyi veya gayri resmi ürün yazılımının sistem bölümlerinin görüntüleri ile çalışmanıza izin verecektir.
3 . JD-GUI  . Java dil kodu decompiler. Hemen, bu kullanım kolaylığı açısından en iyi decompiler olduğunu unutmayın.
4 . DJ Java Decompiler . Başka bir decompiler veya disassembler, bazıları aramak gibi, Java programlama kodudur. Kullanım açısından uygun değil, ancak bazen JD-GUI'yi anlamayan kodu ayrıştırır.
5 . olarak ufak  . Bir başka disassembler, ama dalvik kodu zaten. smali, demonte etmek için ve kodun oluşturulması için backsmali gereklidir.
6 . dex2jar  . Yürütülebilir dosya Dalvik kodu dönüştürmek için bir yardımcı programdır.

Firmware dönüşümü

  Elbette, enerji tüketimini azaltmak için üreticiden aldığınız ürün yazılımı optimize edilmiştir. Ürün yazılımını değiştirebilmek için, kodu değiştirmenize izin veren bir biçime dönüştürülmelidir. Android Kitchen kullanıyor. Tabii ki, daha önce yaptığım gibi, bu “mutfak” ı bulana kadar ellerinle yapabilirsin. Sistem bölgesini telefondan nasıl çıkaracağınız, ortamı nasıl ayarlayacağınız, DEODEX ürün yazılımı nasıl yapılacağı, internette okuyabileceğiniz bir özellik. Henüz bir şey anlamadıysanız, yeterli deneyim kazanana kadar makaleyi ertelemeniz gerektiğini düşünüyorum.

En iyi duruma getirilmiş görünümden (ODEX - optimize edilmiş dalvik yürütülebilir kodu) bellenimden sonra, DEODEX (yani, optimize edilmemiş) oldu, tüm çalıştırılabilir dosyalar değişiklik için hazır.

Doğrudan değişiklikler

Yamalar oluşturma
  Daha önce söylediğim gibi, telefonumun başlangıçta Google’ı kullanma yasağı vardı. En azından patladıysanız, Playstore'a gitmeyin, hesabınızı yapılandırmayın, telefon rehberi gerçekten senkronize edilmez. Neden böyle bir Android'e ihtiyacınız var? Cihazın kaydettiği günlükleri (logcat) uzun süre kazarak, Google’ı kullanmanın yasak olduğunu belirten kayıtları buldum. Android'deki en rahatsız edici, günlüğü görüyorsunuz, ancak hangi sistem uygulamasının onu ürettiğini bilmiyorsunuz. Bacakların nereden büyüdüğünü bulmak için, tüm sistem uygulamalarını sökülmüş Java koduna bölmek zorunda kaldım. Bu biraz zaman aldı, ama hala gerekli kodu analiz etmek ve aramak için yapılan çalışmaları kullanıyorum. Bu aracı edinme adımları aşağıdaki gibidir:
1 . Tüm firmware deodex yapın
2 . Yeni DEODEX ürününüzün telefonunuza monte edilmesi ve parlatılması gerekecektir. Bu nasıl yapılır başka bir makalenin konusu.
3 . / System / framework'de bulunan her dosyadan classes.dex dosyasını dışarı çekin ve dex2jar kullanarak JAR'a dönüştürün.
4 . Her JAR'ı JD-GUI'de açın ve kaynak koduna yeniden kaydedin
5 . Kaynak kodunu arşivden çıkarın.

Sonuç olarak, / system / framework'te JAR dosyaları olduğu kadar çok klasörüm var ve her klasörün Java kaynak kodlarının bir yapısı vardı.
  Basit manipülasyonlarla, logcat girişlerini oluşturan yeri hızla buldum.

Her bir durum için ayrı bir hikaye olduğu için, yasağın tüm mantığını dikkate almayacağız. Kontrollerin yapıldığı yeri bulmadan önce birkaç saatimi harcamak zorunda kaldım, kafamda bir blok diyagram oluşturdum ve algoritmayı biraz “şımarık” almak için nereye gideceğimi buldum.

Her şey yolunda çıktı. Önceden belirlenmiş sabitler temelinde, telefonun Çin'e ait olup olmadığına geldiğinde çağrıya cevap veren bir altprogram vardır.

Kod dosyadaydı HTCExtension.jarve bu alt yordamı içeren sınıftaydı.

Orijinal dosyayı açma ve analiz etme
1 . İlk olarak, ihtiyacımız olan kodun parçası olan orijinal DEODEX JAR dosyasını almamız gerekiyor. Bizim durumda HTCExtension.jar.
2 . Herhangi bir arşivle aç ve oradan classes.dex çek
3 . Dex2jar dönüştürücüyü kullanarak, bir JAR dosyasına dönüştürün. Takım: dex2jar.bat classes.dex
4 . JD-GUI'de ortaya çıkan classes_dex2jar.jar dosyasını görüntüleyin.
5 . Evet, çoğu zaman JD-GUI kodu orijinalde göründüğü gibi değil, anlaşılabilir, fakat okumak oldukça mümkün. Kaynak kodunda, alt programın proje parametrelerini ve yazılımın dil bayrağını kontrol ettiğini görüyoruz. Talihsiz durumumuzda, dönüş değeri DOĞRU.
  public static boolean isChina () (if ((HtcBuildFlag.Htc_PROJECT crystaffinau dt 216 değerini okuyor) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) geri dönüş, yanlış döndürme;)
6 . Bir yama yapmak için Dalvik kodunun kendisini sökmemiz gerekiyor. Bunun için baksmali kullanıyoruz. En uygun yol ayrı bir klasör oluşturmak ve üç dosyayı birlikte koymaktır: HTCExtension.jar, smali.jar  ve baksmali.jar. Java komutu -Xmx512m -jar baksmali.jar-a -d -o HTCExtension -x HTCExtension.jar dosyasını verin.

Bu, Android sürümünüzün API'sidir. JB için 16
   - tüm yazılım çerçevelerinin bulunduğu klasör.

Benim durumumda bir takımdı.
  java -Xmx512m -jar baksmali.jar -a 16 -d S: \\ dev \\ Android \\ Android-Mutfak \\ WORKING_JB_15 \\ system \\ framework -o HTCExtension -x HTCExtension.jar
7 . Yeni oluşturduğumuz klasörde bir klasör HTCExtension vardı ve dosyamızda Dalvik kodu vardı.
8 . Dosyayı yolda arıyoruz. \\ com \\ htc \\ util \\ contacts \\ BuildUtils $ Özelleştirme.java  ve koda bakın:
.method ortak statik isChina () Z, .registers 3 .prologue const / 4 v0, 0x1 satırlarda 276 sget kısa v1, Lcom / HTC / htcjavaflag / HtcBuildFlag; -\u003e Htc_PROJECT_flag: S const / 16 v2 0xd8 Eğer-eşdeğer v1 v2 ,: cond_13 sget kısa v1, Lcom / HTC / htcjavaflag / HtcBuildFlag; -\u003e Htc_PROJECT_flag: S const / 16 v2 0xda eğer-eşdeğer v1, v2 ,: cond_13 sget kısa v1, Lcom / HTC / htcjavaflag / HtcBuildFlag ; -\u003e Htc_PROJECT_flag: S const / 16 v2, 0x17 eğer-NE v1, v2 ,: cond_14 satırlarda 297: cond_13: geri goto_13 v0 satırlarda 283: cond_14 sget kısa v1, Lcom / HTC / htcjavaflag / HtcBuildFlag; -\u003e Htc_PROJECT_flag: S ise-NE v1, v0 ,: cond_1d satırlarda 285 const / 4 v1, 0x2 sget kısa v2 Lcom / HTC / htcjavaflag / HtcBuildFlag; -\u003e Htc_LANGUAGE_flag: S ise-eşdeğer v1, v2 ,: cond_13 satırlarda 291: cond_1d sget kısa v1, Lcom / HTC / htcjavaflag / HtcBuildFlag; -\u003e Htc_PROJECT_flag: S const / 16 v2 0x1b eğer-eşdeğer v1, v2 ,: cond_13 satırlarda 297 const / 4 v0, 0x0 Goto: goto_13 .end yöntem
9 . Korkutucu değil mi? Hiçbir şey net değil. Ama bu düzeltilebilir bir meseledir. Yamalarınızdan birkaç tane oluşturduktan ve böylece elinizi doldurduktan sonra, kodu üçüncü taraf araçları olmadan kolayca değiştirebilirsiniz. Bizim durumumuzda, bu kodda
  .prolog const / 4 v0, 0x1, v0 değişkenini 1 değerini, yani TRUE değerini atar. Sonra her türlü çek geçer ve eğer telefon Çince değilse, o zaman değişkenin değeri değişir:
  .line 297 const / 4 v0, 0x0 goto: goto_13
10 . Rus demokrasisinin babasını kurtarmanın en kolay yolu, kodu aşağıdaki şekilde değiştirmektir:
  .prologue const / 4 v0, 0x0, yani 1'den JD-GUI kodu kamu statik boolean isChina () (nasıl görüneceğini, would always YANLIŞ döndürür ve ne olursa olsun, 0 olarak değişkenin değerini değiştirmek için if (( HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23)), süre (((HtcBuildFlag.Htc_PROJECT_flag == 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) false değerini döndür; false;)
11 . Evet, yöntem işe yarayacak. Ama kolay yollar aramıyoruz - bu zaman. İkincisi, pek güzel değil. Kod gibi bir şey istiyorum
  kamu statik boolean isChina () (false;)
12 . Ve bu kaynak kodu için Dalvik kodunu nasıl alabiliriz? Yeni başlayanlar için, biraz hile yaparız.

Dalvik Kodu Oluşturma
1 . Android SDK'yı açın.
2 . Yeni bir proje oluşturun ve tek test sınıfımızda aşağıdaki kodu yazıyoruz
  paket ru.habrahabr.test; Genel sınıf testi (public static boole isChina () (false;))
3 . Projemizi derledik ve ardından birleştirilmiş uygulamayı çalışma alanından aldık.
4 . Toplanan uygulamayı JAR dosyasına yapıştığımız klasöre koyduk.
5 . Java -Xmx512m -jar baksmali.jar -a -d -o test -x test komutunu verin.
6 . Dalvik koduna derlediğimiz uygulamayı demonte ettik.
7 . Test.smali dosyasını aç ve oradaki kodu gör
  .method kamu statik isChina () Z .registers 1. prolog .line 7 const / 4 v0, 0x0 dönüş v0.
8 . Her şey, yama için kod hazırdır.
Bir yama yuvarlama
1 . Dalvik kodu, orijinal kaynak dosyasında bir kod satırını belirten işaretleyicilerle doludur. Varsa, programınızda hatalar görüntülendiğinde bu gereklidir. Dizeleri olmadan, kod da harika çalışıyor.
2 . Satır numaralarını içeren satırları silin, kopyalayın ve yöntemimizi (alt yordam) değiştirin. \\ com \\ htc \\ util \\ contacts \\ BuildUtils $ Özelleştirme.java  dosya.
  .method genel statik isChina () Z .registers 1.prolog const / 4 v0, 0x0 dönüş v0.
3 . Dosyayı kaydet. Evet, editörün normal bir dosyaya, örneğin Notepad ++ veya EditPlus'a ihtiyacı olduğunu söylemeyi unuttum. Kim neyi seviyor?
Düzeltilmiş bir JAR dosyası derlenmesi ve oluşturulması
1 . Backsmali'nin yardımıyla JAR dosyamızı kapattık ve şimdi onu tekrar inşa etmeliyiz.
2 . Java komutunu verin -Xmx512m -jar smali.jar -a 16 HTCExtension -o classes.dex
3 . Classes.dex dosyası babamda görünür.
4 . Tekrar aç HTCExtension.jar  arşivleyiciyle dosyalayın ve mevcut olanı değiştirin classes.dex  yeni oluşturduğumuzda.
5 . Tüm bizim HTCExtension.jar  değiştirilmiş program kodunu içerir.
Orijinal dosyayı yamalanmış biriyle değiştirme
  Genellikle, sıradan kullanıcılar için kurtarma ile değiştirilen özel komut dosyaları oluşturulur. Ama ilgilenmiyoruz. Birincisi, uzun ve sıkıcı, ikincisi, biz tecrübeli kullanıcılar ve bazı inceliklerini göze alabiliriz.

1 . Mevcut çalışma dosyasını, şu anda DEODEX yazılımına sahipseniz ve kök erişiminiz varsa, aşağıdaki komutlarla değiştirebilirsiniz:

Adb push HTCExtension.jar /sdcard/HTCExtension.jar adb kabuk su mount -o remount -rw / sistem dd if = / system / framework / HTCExtension.jar = / sistem / framework / HTCExtension.jar.back dd if = / sdcard /HTCExtension.jar = / system / framework / HTCExtension.jar chmod 644 /system/framework/HTCExtension.jar rm / veri / dalvik-önbellek / [email korumalı]@[email korumalı]  reboot

1. takım, yamalı dosyayı USB flash sürücüye yükler.
  2. komut kabuğu açar
  3. komut root erişimi verir
  4. komut, sistemi okuma / yazma modunda bağlar
  Ekip 5 bir yedekleme dosyası yapar
  6. komut, mevcut dosyayı yeni yamalı ile üzerine yazar.
  7. takım izinleri ayarlar
8. komut önbelleği siler
  Ekip 9 cihazı yeniden başlatır.

2 . Bu noktayı okuduğunuz için teşekkür ederim, biraz kalıyor.
3 . Yeniden başlatmanın ardından yeni yama kodunuz yürürlüğe girecek.
4 . Kod çalışmazsa veya bir hata ortaya çıkarsa, zorlu kombinasyonlarla yedeklemeyi yedekleyebilirsiniz.
  = / system / framework / HTCExtension.jar.back = / system / framework / HTCExtension.jar rm / data / dalvik-cache / dizinine yapıştırın [email korumalı]@[email korumalı]  reboot

son söz

  Evet, bu makale çok spesifik birine, biraz açık ve birinin faydasız birine benziyordu. Kasıtlı olarak derinlemesine bir detaylandırma ve her şeyin nasıl ve nasıl göründüğüne dair illüstrasyonlar olmadan yaptım. İlk olarak, bu çalışma nankör olmayacak ve sadece daha fazla soru ortaya çıkaracaktır. İkincisi, forumlarında telefonlarını öldürdüklerinden şikayet eden bir kullanıcı ordusu görmek istemiyorum.

Bir sonraki yazıda tviki'nin nasıl yapılacağını anlatacağım. Telefonun yerel araçlarıyla telefon görüşmelerinin otomatik olarak kaydedilmesinin bir örneği olacaktır. İlginiz için teşekkür ederim.

Not; Bir şey açık ya da kafa karıştırıcı değilse, sorular sorun - Ben her zaman cevaplamak ve açıklamaktan mutluluk duyarım.

Android için özel bir firmware oluşturma kolay değildir, bunun için bu yazıda açıkladığımız eylemlerin bir algoritmasının yanı sıra özel bir yazılım ve belirli bir beceriye ihtiyacınız var.

Belirli bir vakayı ele alalım ve sırayla başlayalım. Özel bir ürün yazılımı oluşturmak için Android şunlara ihtiyaç duyacaktır:

  1. Ubuntu işletim sistemine sahip olan ve Java'ya sahip kişisel veya taşınabilir bir bilgisayar kurulu.
  2. "Mutfak" - sistem bölümlerinin görüntülerini işlemek için bir uygulama.
  3. Aslında, Android ürün yazılımı işlenecek.

Adım 1 - Ubuntu'yu Yükleyin

Ubuntu sistemi Linux çekirdeğine dayanıyor ve Canonical tarafından geliştirilen Debian'a dayanıyor. Geçerli olanın yerine bu sistemi kurmak, bir öykünücü aracılığıyla çalıştırmak, vb.


Tüm avantajlarını rahatça kullanabilmeniz için, Windows altında Ubuntu'yu kurabilen Wubi uygulamasını kullanmak yeterlidir. Wubi - Windows Ubuntu Installer'dan kısa devre.

Yükleyiciyi indirdikten ve yeni bir işletim sistemi kurduktan sonra, bilgisayarınızı başlattığınızda, Windows kontrol panelinden seçim yapmak ve yönetmek için bir veya başka bir sisteme gidebilirsiniz.

Adım 2 - Java'yı yükleyin

Java 1995 yılında geliştirilen bir programlama dilidir, adı filmlerden alınmıştır (Star Wars'dan gülünç halk Java'sı).

Bu teknoloji, çeşitli modern yazılımların çoğuna dayanmaktadır. Bazı siteler sadece Java yerleşik PC ile çalışır.


Yüklemek için ihtiyacınız olan:

  1. Ubuntu sistemine giriş yapın ve Terminal'i Ctrl + Alt + T tuşlarıyla açın.
  2. Java'yı indirebileceğiniz yeni bir depo açmak için sudo add-apt-deposunu “deb http://archive.canonical.com/ubuntu lucid partner” komutunu kullanın. Bunu yapmak için Ubuntu'nun kurulumu sırasında ayarlanan Super-Admin haklarını almak için bir şifre girmeniz gerekecektir. Ardından, aşağıdaki komutları kullanmanız gerekir:
  3. kaynak listesini güncellemek için sudo apt-get güncellemesi.
  4. java kurulumu için sudo apt-get install sun-java6-jre sun java6 eklentisi sun-java6-fontları.

3. Adım - firmware oluşturmak için "mutfak" ile çalışın

Program "mutfak" android firmware ile çalışmak için ana araçtır. Birkaç çeşit var, Dsixda'dan mutfak ile çalışmayı düşüneceğiz.


  • Gerekli dosyaları indirdikten sonra, bunları mutfak dizinindeki ev klasörünüze açmanız gerekir.
  • Ana klasörünüzdeki belgelerin listesini görüntülemek için İs komutunu kullanarak Terminali başlatın. Dizinler mavi, arşiv dosyaları kırmızı, vb. İle vurgulanacaktır.
  • Mutfak klasörünü açın, işlenmiş ürün yazılımı dosyasını herhangi bir biçimde original_update dizinine aktarın.
  • Açık klasör Kitchen ile Terminal'e dönün, Is komutunu girin. Menü, dosyalar arasında görünür, komutla başlatılmalıdır. / Menü. Bu, numaralarını hatta yazarak ve Enter tuşuna basarak çalıştırabileceğiniz numaralı komutların bir listesini açar.
  • Ürün yazılımını sökmek için, komut 1'i girin. Mutfak daha sonra Enter tuşuyla cevaplanması gereken birçok soru görüntülemeye başlayacaktır (gerekli değerler varsayılan olarak girilir).

Bu eylemler programın başlangıç ​​menüsüne yol açacaktır. Mutfak klasörüne dönersek, WORKING_x_y klasörünü bulabilirsiniz; burada x ve y, oluşturulduğu tarih ve saattir.

Demonte firmware dosyalarını içerecektir. Sistem klasöründe tüm sistem dosyalarını bulabilirsiniz. Bu dosyaların parçaları firmware değiştirecektir.

Temel uygulamaların, işlevlerin, ayarların değiştirilmesi ve ürün yazılımı dosyalarında istenen değişikliklerin yapılması, onu toplamanız gerekir.

Bunu yapmak için, Terminal'e geri dönün, 99 komutunu girin ve tekrar Enter tuşuna basarak soruları yanıtlayın. Bundan sonra, program kullanıcıyı ilk menüye atar ve OUTPUT_ZIP klasörü daha sonra mobil cihazda kurulabilen yeni ürün yazılımı dosyasını içerecektir.

Özel özel firmware android oluşturmanın başka yolları vardır ve bunun için gerekli programlar ağda bulunabilir, işletim sisteminin dosyalarını “açmanıza” ve belirli parametreleri istediğiniz zaman değiştirmenize izin verir.

İşte bunun için tasarlanmış bazı programlar:

  • Android SDK, Android uygulamalarıyla çalışmak için özel olarak geliştirilmiş bir geliştirme ortamıdır, program kodunu kontrol etmenizi sağlar.
  • Android Kitchen - ürün yazılımındaki sistem bölümlerinin görüntülerini işlemek için gereklidir.
  • JD-GUI, Java programlama dili ile çalışabilen bir decompilerdir. Onun karşılığı DJ Java Decompiler.
  • smali - dalvik kod ile çalışmak. Kodu sökmek için tasarlanan backsmali, dalvik kodunu bir araya getirmenize izin verir.
  • dex2jar, dalvik kodunda derlenen yürütülebilir dosyaları dönüştürmenize izin veren bir yardımcı programdır.

Herhangi bir Android kullanıcısı, işletim sisteminin nasıl görünmesi gerektiğine, hangi işlevlerin gerçekleştirileceğine ve hangi yazılım setinin varsayılan olarak yükleneceğine dair kendi fikrine sahiptir. Ancak, herkes kendi yazılımınızı oluşturmanın o kadar da zor olmadığını biliyor. Bunu yapmak için, Linux çekirdeğini anlamak, Android kaynaklarını derlemek veya bir akıllı telefonun nasıl çalıştığını anlamak gerekli değildir.

tanıtım

Android-Communicator için kendi yazılımınızı oluşturmanın üç yolu vardır: 1. Google veya CyanogenMod ekibi tarafından yayınlanan kaynaklardan işletim sisteminin tamamlanması ve derlenmesi. 2. Communicator'ın stok yazılımının değiştirilmesi. 3. Birinci veya ikinci yöntem kullanılarak oluşturulan üçüncü taraf ürün yazılımının değiştirilmesi.

İlk yöntem en doğru ve esnek olmakla birlikte, çoğu zaman Android'in özellikleri ve kaynak sistemi düzenleme yetenekleri hakkında derinlemesine bilgi sahibi olmayı gerektirir. Bu konu makalemizin kapsamı dışındadır, bu yüzden Android kaynaklarını bir araya getirmeyi düşünmeyeceğiz, ancak üçüncü yöntemde daha kesin olarak iki başka yöntem üzerinde duracağız.

Üçüncü parti ürün yazılımı (sözde mods) neredeyse tüm Android cihazlar için var, piyasaya giriş anından itibaren en az bir hafta geçti. Genelde, zaten ürün yazılımının haberleşme cihazında doğru çalışması için gerekli tüm gerekli değişiklikleri içerir ve bu nedenle sistemle denemeler yapmak için mükemmel bir platform oluşturur. Bunlar neredeyse tanının ötesine geçebilir, işletim sistemindeki herhangi bir yazılımı içerebilir, görünümünü değiştirebilir, basit bir metin editörü ve dosya yöneticisi kullanarak çok sayıda düşük seviye ayarı yaratabilirler. Bu eylemler, işletim sistemi hakkında derin bilgi gerektirmez ve derginin herhangi bir okuyucusu tarafından gerçekleştirilebilir.

Deneysel seçiyoruz

Bu nedenle, Communicator'ımızın zaten oturum açtığını ve ClockworkMod kurtarma konsolunun önyükleme alanına kaydedildiğini ve herhangi bir kısıtlama olmaksızın cihaza herhangi bir firmware yüklemenizi sağladığımızı varsayalım (bunu, Ekim sayısında yayınlanan “Toplam sunum” makalesinde nasıl yazacağımız hakkında yazdık.] ). Artık cihaza başka bir firmware yüklemek istiyoruz, ancak neyin nasıl yapıldığını değil, kendi modifikasyonlarımız, ayarlarımız ve yazılımlarımızla. Bu nedenle, cihazımız üzerinde kararlı bir şekilde çalışan bir başkasının sabit yazılımı olan bir çerçeveye ihtiyacımız var. Nereden alınır?

Tüm romodellerin ana yaşam alanı elbette xda-developers.com forumlarıdır. Orada iOS, Windows Mobile, Windows Phone ve Android çalıştıran iletişimciler için herhangi bir şey bulabilirsiniz. Siteyi tarayıcıda açın, Forumlar bölümüne tıklayın ve forum listelerinde Communicator'ı arayın. Ardından, Android Geliştirmenin uygun bölümüne gidin ve başlığında "" kelimesini içeren konuların listesini dikkatli bir şekilde inceleyin. “Pure Android 2.3 Rom” ya da CyanogenMod limanı gibi bir isim ile bir çeşit temiz firmware bulmak daha iyidir, aslında, herhangi bir diğer (her ne kadar yazarın değişikliklerini iptal etmek gerekli olsa da). Konuyu açıyoruz, ilk gönderiyi temizliyoruz, bağlantının sonunda ROM'u bilgisayarınıza indirip indirebileceğimiz bir yer buluyoruz.

Artık ürün yazılımı dosyasını açmanız gerekiyor. Bu en yaygın unzip kullanılarak yapılır:

   $ mkdir ~ / rom; cd ~ / rom $ unzip ../path/up/proshivki.zip

Genel dizin yapısı ve önemli dosyalar

Önceki komutun yürütülmesinden kaynaklanan dosya ve dizinler, temel olarak Android işletim sistemidir ve tam olarak cihazın NAND belleğine yerleştirilir. Android'in sürümüne ve yazarın hayal gücüne bağlı olarak, farklı dizin ve dosyalar kümesi içerebilir, ancak her zaman üç zorunlu nesne içerir: META-INF, boot.img dosyası ve sistem dizini.

İlk dizin, yazarın sertifika dosyaları, dosyaların listesi ve sağlama toplamları ile birlikte bir manifest'in yanı sıra NAND belleğinde yeni dosyalar oluşturabilen, erişim haklarını değiştirebilen ve kullanıcıların gördüğü bir ilerleme çubuğunu görüntüleyen bir güncelleme komut dosyası da dahil olmak üzere ürün yazılımı hakkındaki meta bilgileri içerir. firmware yüklemek.

Boot.img dosyası, Linux çekirdeğini ve initrd görüntüsünü içeren bir önyükleme görüntüsü içerir. Bu paketten çıkarılabilir, ancak bizim için herhangi bir özel yararı yoktur, çünkü hemen hemen tüm sistem parametreleri yapılandırma dosyaları ve / proc dosya sistemi kullanılarak değiştirilebilir. Örneğin, etkinleştirilmiş bir BFS zamanlayıcısı veya NFS desteği ile özel parametrelerle derlenmiş bir çekirdeğe ihtiyacınız varsa, hemen hemen aynı xda geliştiricileri üzerinde bulabilir ve ClockworkMod ile yazabilirsiniz.



Son olarak, sistem dizini tümüyle ilgili. Bu dizinin içeriği Linux çekirdeği olmayan Android işletim sistemidir. İşletim sisteminin çalışması için ihtiyaç duyulan her şeyi içerir ve bu nedenle yapısını bilmek yeterlidir. Şuna benziyor:

  • uygulamanın  - önceden yüklenmiş uygulamalar: telefon, hesap makinesi, takvim vb.
  • çöp kutusu  Linux'ta / bin ve / usr / bin dizinlerinin bir analogudur. Üst düzey sistem bileşenleri tarafından kullanılan çeşitli sistem bileşenlerini içerir. Örneğin, bu, dalvikvm sanal makinesinin bulunduğu yerdir.
  • vs  - ayarlar dosyaları. Bununla birlikte, Linux'taki / etc'in tam karşılığı, yalnızca sistem bileşenleriyle kullanılır. Android uygulamaları / data / data dizinindeki ayarları saklar.
  • yazı  - yazı tipleri. Varsayılan yalnızca Droid markalı yazı tiplerini (veya Android 4.0'da Roboto) içerir.
  • iskelet  - Sistem ve Android yazılımı tarafından kullanılan Java sınıfları setleri. Tüm grafik dosyaları dahil olmak üzere işletim sistemi arabiriminin tam bir açıklamasını içeren bir framework-res.apk dosyası da vardır.
  • lib - Düşük seviyeli sistem bileşenleri tarafından kullanılan Linux kütüphaneleri. Linux'taki / lib ve / usr / lib dizinlerinin analogları, libc (ama Android, Glibc yerine kendi Bionic'i kullanır), libz (gzip şifreleme), libssl ve diğerleri gibi standart kütüphaneleri içerir.
  • medya  - medya dosyaları: zil sesleri, bildirim sesleri, arayüz sesleri ve işletim sistemi önyükleme animasyonu dosyaları.
  • tts  - Konuşma sentezleyicisi için gerekli dosyalar.
  • usr  - Genellikle depo dizini için yumuşatmak için gereken dosyaları içeren isteğe bağlı dizin. Aslında, analog / usr / paylaşım.
  • satıcı  - Cihazın üreticisi tarafından sağlanan dosyalar. Genellikle Wi-Fi modülü gibi çeşitli “demir” bileşenleri için ikili yazılım içerir.
  • xBIN  - Kutuya dahil olmayan her şeyi içeren isteğe bağlı dizin. Bir kural olarak, sistem işletiminde (üstte, metin editöründe) yine de yararlı yardımcı programları saklamak için kullanılır. CyanogenMod, yönetim araçlarını depolamak için kullanır: bash, ssh, powertop, busybox, vb.
  • build.prop  - montaj hakkında bilgi ve çeşitli düşük seviye ayarları içeren dosya.

Komut hazırlığı

Makalede bulunan build.prop ayarları, setprop komutunu kullanan zaten çalışan bir sisteme uygulanabilir:

   # setprop debug.sf.nobootanimation 1

Kendi yazılım paketi

Dizin / sistem / uygulama, firmware'de önceden kurulu olan tüm yazılımı içerir. Bu dizine paketleri kaldırarak ve ekleyerek, kutudan çıkan uygulamaların kümesini değiştirebiliriz. Örneğin, standart Android öğle yemeğinin (ve CyanogenMod'deki ADWLauncher'ın) yavaşlattığı ve birçok dezavantajı olduğu herkes için bir sır değildir. Tamam, LauncherPro ile değiştirin:

   $ rm system / app / Launcher.apk $ wget goo.gl/U9c54 -o sistem / uygulama / LauncherPro.apk

Ve hepsi bu. Hiçbir şey yüklemenize gerek yok, herhangi bir yere çakılmanıza gerek yok, sadece gerekli uygulamayı dizine atın - ve işiniz bitti. Adın bile önemi yok, Android istenen uygulamayı bulacaktır ve bir ana ekran olarak kuracaktır. Aynı şekilde, başka herhangi bir programı ürün yazılımına koyabilir veya buradan kaldırabilirsiniz.

Kaybolan bir akıllı telefon bulmaya yönelik uygulamalardan biri olan bellenime (örneğin, av), daha sonra fabrika ayarlarına sıfırlama durumunda bile işletim sisteminde kalmaya devam edecek ve işe yarayacaktır. Ayrıca bazı sistem yazılımlarını da değiştirebilirsiniz, örneğin, sms.apk yerine standart Phone.apk veya Go SMS yerine Dialer One'ı ekleyin.

Ssh sunucusu veya mc gibi sistem Linux uygulamaları hakkında ne düşünüyorsunuz? Burada da her şey basit. Google NDK kitini kullanarak Android ve ARM işlemcisi için yumuşak bir yazılım oluşturabilirsiniz, ancak gerekli uygulamaların çoğu zaten önümüzde derlenmiştir. Örneğin, cihaz yazılımımızda mc'yi önceden yüklemek istiyoruz. Xda-geliştiricilere gidin ve Midnight Commander için bir arama yapın. İlk sayfada, yükleyici ile birlikte bir apk-paket buluyoruz ve aynı unzip'in yardımıyla paketini açıyoruz:

   $ cd / tmp; unzip ~ / NativnuxInstaller_1.1.apk

Kesilmiş dosyalar varlıkları / kitleri / mc-4.7.5.4-arm.tar.jet listesinde görüyoruz. Bu, apk-paketini yükledikten sonra (veya daha sonra, uygulamayı yükledikten, uygulamayı başlattıktan ve Yükle düğmesini tıklattıktan sonra) sistemin köküne dağıtılan bir tar.gz arşividir. Ürün yazılımını derhal paketimize açabilir ve önceden yüklenen mc'yi alabiliriz:

   $ cd ~ / rom $ tar -xzf /tmp/assets/kits/mc-4.7.5.4-arm.tar.jet

Şimdi, cihazdaki dosya yöneticisini başlatmak için, terminali açın ve mc yazın. Diğer uygulamalar ClockworkMod Recovery kullanılarak bellenim için zip arşivlerinde dağıtılabilir. Onları modunuza koymak daha da kolaydır, bunu yapmak için, bellenimin köküne gidin (bu durumda ~ / rom) ve unzip'i kullanarak arşivi açın.



görünümü

Android'in görünüşünü beğeninize dönüştürmek için en sık olarak kendi donanım yazılımı oluşturulur. Bunu Android'de tekrar yapmak çok basit. Tüm Android GUI ayarları çerçeve / framework-res.apk dosyasında saklanır. Apktool yardımcı programını kullanarak açılabilir:

   $ cd ~; wget goo.gl/hxz5l $ tar -xjf apktool1.4.1.tar.bz2 $ cd ~ / rom / sistem / çerçeve $ java -jar ~ / apktool.jar d framework-res.apk

Sonuç olarak, tüm paket dosyalarını içeren framework-res dizini geçerli dizinde görünmelidir. İçindeki en ilginç alt dizinler res / drawable- * ve res / layout- * 'dir. İlki, farklı çözünürlükler ve ekran konumları için png-dosyaları biçimindeki tüm grafik elemanlarını içerir. Örneğin, çizilebilir-arazi-mdpi yatay bir konumda olan orta çözünürlüklü ekranlar için grafik kaynakları olan bir dizindir (ekran döndürüldüğünde, OS diğer dosyaları kullanmaya geçer). Tabii ki, herhangi bir dosya başka biri tarafından düzenlenebilir veya değiştirilebilir.



Mizanpaj dizinleri, XML formatındaki grafik elemanlarının açıklamalarını içerir (aslında, bunlar ikili AXML formatında saklanır, ancak apktool bunları düz XML'e dönüştürür). Açıklamanın biçimi oldukça basit ve basittir, ancak özellikle her şeyin nerede olduğunu bilmiyorsanız, bununla başa çıkmak zordur. Bu nedenle, yine Android grafik arayüzü için çok farklı modifikasyonlar bulmayı başaran forum xda-geliştiricilerinin sakinlerinin hizmetlerine dönüyoruz. "Framework-res mod device_name" arama isteğini kullanarak bulmak kolaydır.

Genellikle bu tür modüller, yalnızca ürün yazılımınızı yerleştirebileceğiniz hazır bir framework res.apk dosyası olarak dağıtılır. İçerikte belirli farklılıklar bulmak istiyorsanız, mod paketini açabilir ve aşağıdakileri kullanarak framework-res'inizle karşılaştırılabilir:

   $ diff -R ~ / framework-res \\ ~ / rom / sistem / çerçeve / çerçeve-res

Ne yazık ki, bir makale çerçevesinde, çerçeve-res'in iç yapısının en azından bir kısmını dikkate alamıyoruz, bu yüzden daha fazla bilgi için, w3bsit3-dns.com forumunun ilgili konusuna bakın.

Değişiklikler yaptıktan sonra, aynı apktool kullanarak framework-res.apk oluşturabilirsiniz. Bununla birlikte, bu işlem apktool'ün apk-dosyasının son paketlemesi için kullandığı Android SDK'dan aapt programını gerektirir. Ayrı olarak alınabilir:

   $ cd ~ / bin; wget goo.gl/tC7k8

Şimdi dosyayı toplayabilirsiniz:

   $ cd ~ / rom / sistem / çerçeve $ java -jar ~ / apktool.jar b çerçeve-res $ cp framwork-res / dist / framework-res.apk. $ rm -rf çerçeve-res

Bir sonraki adım yükleme animasyonunu değiştirmektir. Sistem / medya / bootanimation.zip arşivinde paketlenmiş sıradan png dosyaları olarak saklanır. Paketini aç:

   $ cd / tmp $ mkdir bootanimasyon; cd bootanimation $ unzip ~ / rom / sistem / medya / bootanimation.zip

İçerisinde, animasyonu aşağıdaki biçimde tanımlayan desc.txt dosyası bulunur:

Genişlik Yüksekliği FPS p Sipariş Duraklat Katalog ...

Bu dosyanın standart görünümü şöyledir:

480 800 30 p 1 0 part0 p 0 0 bölüm1

Bu, görüntünün 480 x 800 boyutunda olduğu ve görüntü değiştirme oranının (FPS) 30 adet / sn olduğu anlamına gelir. Ardından, animasyonun ilk kısmı, dosyaları part0 dizininde bulunan açıklamalar gelir. Bir kez çalınır (p'den sonraki 1 numara). Bir sonraki parça (part1), cihaz önyüklenene kadar sonsuz sayıda çalınır. Genellikle part0 dizini, animasyonun ilk bölümüne karşılık gelen görüntüleri içerir ve part0, döngüde oynatılan tüm diğer görüntüleri içerir. Görüntülerin kendileri aynı boyutta olmalı ve isimleri artan düzende, örneğin 0001.png, 0002.png vb.

İndirme animasyonunun çok basit bir formatı olduğundan, yapılması oldukça kolaydır. Videoyu mencoder kullanarak png görüntülere dönüştürmek yeterlidir (desc.txt dosyasında, FPS 24 değerini ayarlamanız gerekir):

   $ mplayer -nosound -vo png: z = 9 video.avi

Ama gereksiz olacak. Forum katılımcıları xda-geliştiricileri bu kadar çok animasyon yapmışlar ve ellerle çalışmaya ihtiyaç duyulmamaktadır. Makalenin sonunda ilginç animasyonlara bağlantılar verilmiştir.

Düşük seviye ayarları

Makalede konuşmak istediğim en son şey, düşük seviyeli ayarları düzenlemek. Android'de, belirli cihazlar için ürün yazılımı oluşturma ve ayarları hakkında bilgi depolayan bir system / build.prop dosyası var. Bu dosyaya çizgiler ekleyerek Android'in işleyişini değiştirebilir, işini hızlandırabilir veya pil tüketimini azaltabilirsiniz. Aşağıda en ilginç ayarlar.



  1. Masaüstünden boşaltma yapılmasını engelle: ro.HOME_APP_ADJ = 1

    Bu seçenek, herhangi bir zamanda masaüstüne anında erişim nedeniyle cihazla daha rahat çalışmanızı sağlar. Düşük bellekli cihazlar için önerilmez.

  2. Kayıtlı JPG dosyalarının kalitesini iyileştirmek: ro.media.enc.jpeg.quality = 100

    Fotoğraf makinesini daha net çekmenizi sağlar, ancak CPU üzerindeki yükü önemli ölçüde artırır.

  3. İşletim sisteminin yüklenmesini hızlandırmak için önyükleme animasyonunu devre dışı bırakın: debug.sf.nobootanimation = 1
  4. GPU üzerindeki arabirimi çizme çalışmasının bir parçasını yerleştirmek: debug.sf.hw = 1

    Arayüzü daha hızlı ve pürüzsüz hale getirmenizi sağlar.

  5. Etkin hata ayıklama modunun bildirimini engelle (USB kullanarak bir bilgisayara bağlandığında): persist.adb.notify = 0
  6. Sorunun sona ermesinden sonra siyah bir ekranın ortaya çıkmasıyla sorunun giderilmesi: ro.lge.proximity.delay = 25 mot.proximity.delay = 25
  7. Ekran açıldıktan hemen sonra arka ışık kontrol tuşlarını açmak: ro.mot.buttonlight.timeout = 0

Tüm bunlara ek olarak, birçok kullanıcı aşağıdaki bayrak kombinasyonlarını kullanmanızı da tavsiye etmektedir:

  1. Dokunmatik ekran yanıt süresinin kısaltılması: debug.performance.tuning = 1 video.accelerate.hw = 1 windowsmgr.max_events_per_sec = 150
  2. Pil ömrünü uzatın: wifi.supplicant_scan_interval = 180 pm.sleep_mode = 1 ro.ril.disable.power.collapse = 0
  3. 3G modülü tweaks: ro.ril.hsxpa = 2 ro.ril.gprsclass = 10 ro.ril.hep = 1 ro.ril.enable.dtm = 1 ro.ril.hsdpa.category = 10 ro.ril.enable. a53 = 1 ro.ril.enable.3g.prefix = 1 ro.ril.htcmaskw1.bitmask = 4294967295 ro.ril.htcmaskw1 = 14449 ro.ril.hsupa.category = 5
  4. Ağ performansını iyileştirme: net.tcp.buffersize.default = 4096,87380,256960,4096,16384,256960 net.tcp.buffersize.wifi = 4096,87380,256960,4096,16384,256960 net.tcp.buffersize.umts = 4096,87380,256960,4096,16384,256960 net.tcp.buffersize.gprs = 4096,87380,256960,4096,16384,256960 net.tcp.buffersize.edge = 4096,87380,256960,4096,16384,256960

Tüm bu satırların basitçe dosya sistemine / build.prop koyması ve kaydetmesi gerekir.

montaj

Tamam, gerekli değişiklikleri yaptık, uygulamalarımızı hayata geçirdik, sistemi ayarladık ve şimdi ürün yazılımı için hazır bir OS görüntüsü oluşturmalıyız. Bu yardımcı program test edilmemize yardımcı olacaktır. Önce, bellenimi zip ile paketlemelisiniz:

   $ cd ~ / rom; zip -r my-rom.zip *

Artık arşivi imzalamanız gerekir, böylece Kurtarma bunu yükleyebilir:

   $ wget goo.gl/OyBBk $ java -classpath testsign.jar testsign \\ my-rom.zip my-rom-signed.zip

Bundan sonra, my-rom-signed.zip arşivini cihazın hafıza kartına yükler ve cihazı kapatırız. Kurtarmaya ulaşmak için, sesi kısılmış tuşa basarak cihazı açıyoruz (bazı cihazlar için, prosedür farklı olabilir).

Şimdi “sdcard'dan zip yükle” seçeneğine gidip “sdcard'dan zip seçin” seçeneğine gidin, SD kartında my-rom-sign.zip dosyasını bulun ve Evet'i seçin. Yükleme tamamlandıktan sonra, "Şimdi sistemi yeniden başlat" seçeneğini seçin.

bulgular

Android, esnek bir platformdur ve bu makalede, modifikasyon için tüm olasılıklar açıklanmamıştır. Daha derin bir değişiklik, çekirdeğin değiştirilmesi, kilit ekranının ve standart uygulamaların değiştirilmesi, bir bellek kartındaki uygulamaların otomatik olarak yüklenmesi, bir önyükleme komut dizisi motoru (/etc/init.d) ve daha fazlası tanıtılması gibi özelliklerin etkinleştirilmesini içerebilir. Aşağıdaki yazılarda bütün bunları konuşacağız.

Teması devam ediyor:
elma

Resmi firmware'e nasıl geçilir / geri dönülür Resmi olmayan iPhone 5 / 4S / 4 / 3G / 3GS için, önce flaşı açacağınız yazılımın ...