Jak dodać aplikacje do oprogramowania układowego. Jak system ładuje się na ARM przy użyciu Androida

Prawie każdy użytkownik smartfona z Androidem miał ochotę stworzyć lub edytować oprogramowanie, aby pasowało do jego potrzeb i pragnień. W tym artykule rozważamy zasadę edycji oprogramowania układowego dla CWM (w formacie zip).

Przygotowanie:

Przede wszystkim musisz zdecydować, jakie oprogramowanie sprzętowe podejmiemy jako podstawę. Lepiej jest użyć off. oprogramowanie w suwaku. Dla prawie każdego wspólnego urządzenia jest czyste oprogramowanie układowe + root.
Po wybraniu oprogramowania należy je pobrać w dowolnym dogodnym dla siebie miejscu na komputerze (nie należy go rozpakowywać).
Potrzebujemy również archiwizera, radzę użyć 7zip  i najlepszy w swoim rodzaju edytor tekstu Notepad ++.

Struktura oprogramowania:

Otwieranie archiwum za pomocą oprogramowania układowego:
META-INF  - Folder zawiera skrypty instalacyjne oprogramowania układowego.
system  - folder ze wszystkimi plikami oprogramowania układowego (aplikacje, poprawki, skrypty itp.).
boot.img  - rdzeń systemu.

Prawie wszystkie manipulacje są przeprowadzane w folderze systemjego struktura:
aplikacja  - aplikacje systemowe.
bin  - zasoby samego systemu.
itp  - Skrypty, poprawki, konfiguracje, profile i ustawienia systemowe.
czcionki  - Czcionki systemowe.
ramy  - Tutaj przechowywane są główne pliki systemowe (grafika, ustawienia animacji tekstu itp.).
lib  - biblioteki systemowe.
media  - pliki multimedialne (melodie powiadamiania, pobieranie animacji, tapet itp.).
usr  - ustawienia nie są zmieniane przez system (działają w trybie "tylko do odczytu").
xbin  - znowu, konfiguracje systemu i inne ulepszenia.
build.prop  - informacje o systemie, ustawieniach regionalnych i wydajności systemu.

Aplikacje:

Zanim dodasz / usuniesz oprogramowanie do systemu, musisz sprawdzić, czy twoje oprogramowanie jest deodeksowane (to znaczy sprawdzić obecność plików .odex w folderze aplikacji .Jeśli istnieją jakieś pliki, musisz się ich pozbyć tutaj instrukcje .
Dodaj oprogramowanie do oprogramowania:
Przede wszystkim musisz zainstalować w swoim smart te programy, które chcesz dodać do zespołu. Po instalacji usuwamy je z systemu za pomocą Root exporer  i jego analogi, znajdują się na ścieżce danych / aplikacji, więc albo będziemy ich potrzebować (jeśli oczywiście są) znajdują się na ścieżce danych / danych. Znajdują się one w folderze aplikacji o tej samej nazwie i mają rozszerzenie .so  . Następnie zajęte .apk  Pliki są umieszczane w archiwum w ścieżce system / aplikacja i pliki z rozszerzeniem .so (lib) przy ścieżce system / lib.
Usuń oprogramowanie z oprogramowania:
Wszystko jest proste, przejdź do folderu aplikacja  - ustalamy, czego nie potrzebujemy i usuwamy wszelkie niepotrzebne oprogramowanie (system lepiej nie dotykać).

Wersja językowa i firmware:

Skopiuj plik build.prop na pulpit. Otwórz go za pomocą notatnika i znajdź linie:

ro.product.locale.language = en
ro.product.locale.region = US

w przypadku języka rosyjskiego musisz to zrobić:

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

w łańcuchu wpisujemy nazwę naszego modu

w tym samym build.prop

Grafika:

Cała graficzna część oprogramowania układowego jest przechowywana w dwóch ścieżkach pliku framework-res.apk system ramowy  i SystemUI.apk po drodze systemapp. A graficzna część aplikacji ustawień jest naturalnie zapisana w aplikacji Settings.apk.

Skrypty i poprawki (przyspieszenie i optymalizacja systemu):

Większość ustawień znajduje się w pliku. build.prop, możesz przeczytać o tym. Także jeśli twoje jądro obsługuje

Zacznijmy od prostej wzmianki, że chip wykonany zgodnie z architekturą ARM to system na chipie (SoC). Oznacza to, że jest to kompletny komputer zaimplementowany na pojedynczym chipie. Procesory tej architektury tworzą wiele urządzeń (routery, przełączniki, wbudowane komputery na telewizorach, konsole do gier itp.).

Ponadto ta architektura charakteryzuje się niskim zużyciem energii i charakterystykami rozpraszania ciepła, dlatego jest dość skutecznie wykorzystywana w urządzeniach takich jak smartfony i tablety.

Dokładne adresowanie urządzeń nie jest celem tego artykułu opinii. Po prostu chcę wprowadzić potencjalnych modderów do podstawowych zasad, które pozwolą lepiej zrozumieć, co dzieje się na ich urządzeniach.

Przechodzimy więc bezpośrednio do opisu pobierania tego typu urządzenia. Prawie każdy procesor ARM ma wbudowaną pamięć flash, w którą wchodzi tzw. loader. W przypadku braku takiej pamięci na chipie, lub nie używania go jako miejsca do lokalizacji bootloadera, chip zazwyczaj odnosi się do uruchomienia tego bootloadera do flashowania NOR pod ściśle określonym adresem.

Istnieje kilka programów do pobierania. Niektóre z nich są komercyjne. Ale istnieje bootloader open source, u-boot. Niestety, gdy kod jest otwarty, zawiera kod zależny od procesora, więc bez specyfikacji procesora nie można go po prostu przenieść (zaadaptować) do procesora, który nie ma otwartej dokumentacji.

Teraz opiszemy, co zwykle robi bootloader po uruchomieniu. Dosyć bezpośrednią analogię można zrobić z BIOSem komputerów opartych na procesorach x86 (tych z dużą ilością ludzi). Program ładujący ARM, po uruchomieniu, wykonuje również w ten sam sposób wiele niskopoziomowych inicjalizacji sprzętu urządzenia (pamięć RAM, pamięć masowa, karta sieciowa itp.). Po zainicjowaniu portu szeregowego (zwykle w formacie RS232, ale z napięciem 3,2 V), możliwa jest praca z nim za pośrednictwem konsoli zainicjowanej na tym porcie.

Wygląda tak

Za pomocą tej konsoli możesz wykonać prawie pełną konfigurację lub rekonfigurację naszego sprzętu. Na przykład, aby załadować Linuksa, musimy przynajmniej przekonfigurować ciąg parametrów przekazywanych do jądra podczas uruchamiania (z domyślnym ustawieniem pobierania androida). Możesz tam również w pełni pracować z nand sekcje - wymazywać, dzielić, modyfikować, chronić przed pisaniem i na odwrót, itp. itp. (aby uniknąć dodatkowych pytań dotyczących zmiany sekcji nanda). Nawet w konsoli możesz pobrać i uruchomić pewne oprogramowanie. Wszystkie ustawienia dokonane w tej konsoli mogą zostać zapisane i użyte jako domyślne ustawienia podczas uruchamiania urządzenia.

Dokonujemy małej dygresji. Oprócz flashowania NOR, do zlokalizowania bootloadera można użyć pamięci flash NAND lub nawet karty SD. Ponadto możliwe jest użycie kombinacji tych typów pamięci flash w urządzeniu. Na przykład, bootloader może zostać umieszczony w NOR i jako wewnętrzny dysk (dla umieszczenia systemu operacyjnego) NAND lub SD itp.

Tak więc dołączyliśmy kawałek żelaza. Załadowała bootloader. Zainstalowany sprzęt rozruchowy. Pod koniec tej inicjalizacji bootloader wykonuje następującą procedurę:

1 - odczyt i umieszczenie w pamięci obrazu jądra i ramdysku - oba na ściśle określonych adresach (mogą być skonfigurowane na linii poleceń u-boot).

2 - uruchom jądro od poprawnego punktu wejścia, wskazując mu, skąd wziąć zewnętrzny ramdysk (initrd) z głównego systemu plików i co użyć jako init.

Inna część pamięci RAM jest przeznaczona dla urządzeń wymagających pamięci, na przykład dla rdzenia wideo. Teraz rozumiesz, gdzie deklarowana jest część pamięci RAM urządzenia.

Dalsze uruchamianie nie różni się zbytnio od uruchamiania systemu Linux na zwykłym komputerze. Po uruchomieniu jądro wykonuje określony init (jest to po prostu inny program). Konfiguracja init jest przeprowadzana w pliku init.rc, który znajduje się w ramdysku. Konfiguruje zmienne środowiskowe, montuje urządzenia dyskowe, uruchamia niezbędne usługi itp. Pod koniec wstępnych instrukcji z init.rc uruchamia się sam Android. Typ uruchomienia Androida zależy od opcji uruchamiania jądra androidboot. Standardowa wersja Androida jest wykonywana jako całość, przekazując parametry użycia żądanego ramdysku (w ramdisk.img) i parametru androidboot.normal. Aby uruchomić tryb odzyskiwania, z reguły używany jest inny ramdysk zawierający program przywracania (w recovery.img) i parametr androidboot.recovery jądra.

Jako odmianę jądra systemu Linux dla Androida, może być on montowany nie przy pomocy initrd (systemu root na ramdysku), ale z tzw. initramfs W takim przypadku cały system plików root zostanie zlokalizowany wewnątrz jądra. W takim przypadku tryb odzyskiwania wymaga z reguły drugiego jądra z głównym systemem plików zawierającym program przywracania. Konfiguracja bootloadera jest łatwa do załadowania i uruchomienia jądra odzyskiwania.

W rezultacie prosty schemat:

Uruchomienie procesora -\u003e uruchomienie boot loadera -\u003e inicjalizacja żelaza -\u003e czytanie z jądra i ramdysku -\u003e uruchomienie jądra za pomocą tego RAM-dysku -\u003e uruchomienie programu init -\u003e uruchomienie samego Androida.

Możesz przeczytać więcej o u-boot i jego komendach, na przykład na tej wiki _http: //www.denx.de/wiki/view/DULG/Manual.

Jeśli ta informacja nie jest dla Ciebie wystarczająca, możesz przeczytać więcej na temat parametrów uruchamiania jądra Linux w dokumentacji / kernel-parameters.txt z archiwum kodów źródłowych. Lub znajdź ten plik w Internecie dla wersji jądra, której potrzebujesz. Ale nie zapomnij wziąć pod uwagę specyfiki Androida wspomnianego powyżej.

Witaj Habr!

Kilka lat temu, kiedy pierwszy raz spotkałem się z Androidem, usłyszałem od mojego kolegi z pracy, że Android zapewnia możliwość zainstalowania zmodyfikowanego lub samodzielnie wykonanego oprogramowania układowego. Szczerze mówiąc, byłem daleki od tego. A nawet pół roku temu prawie nie interesowały mnie takie rzeczy. Głęboko pod prysznicem byłem pewien, że to, co robił producent, było już przeznaczone do normalnego użytku.

Jakie było moje rozczarowanie, gdy kupiłem telefon z Chin, gdzie używanie Google, Skype'a, Facebooka i innych aplikacji było zabronione przez ustawienia fabryczne. Zasadniczo można było przymknąć oczy na pewne rzeczy, ale kiedy mój telefon nie sugerował korzystania z konta Google, złożyłem obietnicę, że nie będę musiał.

Minęło pół roku, a moje niestandardowe oprogramowanie zostało z powodzeniem wykorzystane na całym świecie.

W tej serii artykułów omówimy, jak wykonać odwrotne programowanie dla Androida, zaimplementować poprawki, poprawki i mody.

Preambuła

  I tak! Najpierw określmy pojęcia, które będą używane dany  artykuł. Twoje zwykłe zrozumienie może być jednak bardzo różne.

Łatka  - zmiana lub zmiana istniejącego kodu programu w celu modyfikacji algorytmu programu.
Mod  - Z reguły dodawanie dodatkowej funkcjonalności do istniejącego kodu programu bez zmiany algorytmu.
Tweak  - Poprawa funkcjonalności programu w celu ułatwienia dostępu do parametrów systemu.

Chciałbym również zauważyć, że wszystkie przykłady będą brane pod uwagę dla telefonu HTC, ale to nie znaczy, że te informacje nie mogą być używane na innych telefonach.

Zwracam uwagę na to, że jako autor nie ponoszę odpowiedzialności za ewentualną utratę danych w telefonie w wyniku użycia poniższych informacji.

Przygotowanie środowiska

  Potrafię bez szczegółowych instrukcji, jak korzystać z tego lub tego oprogramowania. Jeśli jesteś zainteresowany tym artykułem i skończyłeś czytać te linie, mam nadzieję, że jesteś już doświadczonym użytkownikiem i masz doświadczenie z wykorzystaniem, dobrze lub przynajmniej eksperymentować w tej dziedzinie. Instrukcje, artykuły i wyniki testów są jednak w pełni dostępne, podobnie jak w Habré. Poradzę sobie również bez opisu niektórych terminów, w przeciwnym razie artykuł okaże się bardzo duży i żmudny. Napiszemy tylko w tej sprawie. Jestem pewien, że twoje środowisko stoi przez długi czas. Jeśli nie, proponuję pobrać i zainstalować.

1 . Android SDK  . To jest środowisko programistyczne aplikacji dla systemu Android. Aby dokonać modyfikacji, koniecznie musimy sprawdzić nasz kod programu. Środowisko programistyczne jest najlepsze, z czego możemy korzystać.
2 . Android Kitchen  . To narzędzie pozwoli ci pracować z obrazami partycji systemowych oficjalnego lub nieoficjalnego oprogramowania wewnętrznego.
3 . Jd-gui  . Dekompilator kodu języka Java. Od razu zauważam, że jest to najlepszy dekompilator pod względem łatwości użycia.
4 . DJ Java Decompiler . Inny dekompilator, lub deasembler, jak niektórzy lubią to nazywać, to kod programowania w języku Java. Nie wygodne pod względem użytkowania, ale analizuje kod, który czasami nie rozumie interfejsu JD-GUI.
5 . smali  . Kolejny dezasembler, ale już kod dalvik. smali jest potrzebny do demontażu i backsmali do składania kodu.
6 . dex2jar  . Narzędzie do konwersji plików wykonywalnych Kod Dalvik.

Konwersja oprogramowania sprzętowego

  Oczywiście oprogramowanie wbudowane od producenta jest zoptymalizowane w celu zmniejszenia zużycia energii. Aby móc zmienić oprogramowanie, należy go przekonwertować na format umożliwiający zmianę kodu. Korzysta z Android Kitchen. Możesz oczywiście z rękami, tak jak przedtem, aż znalazłem tę "kuchnię". Jak wyciągnąć obszar systemu z telefonu, ustawić środowisko, stworzyć oprogramowanie układowe DEODEX, możesz czytać w Internecie. Jeśli nic nie rozumiesz, myślę, że powinieneś odłożyć artykuł, dopóki nie zdobędziesz wystarczającego doświadczenia.

Po firmware zoptymalizowany typu (ODEX - Dalvik zoptymalizowany kod wykonywalny, jeśli dobrze pamiętam) był DEODEX (to znaczy nie zoptymalizowana), wszystkie pliki wykonywalne gotowy do modyfikacji.

Bezpośrednie modyfikacje

Tworzenie łatek
  Jak już powiedziałem, mój telefon początkowo miał zakaz korzystania z Google. Cóż, przynajmniej wybuchnąłeś, nie idź do Playstore, nie konfiguruj swojego konta, książka telefoniczna tak naprawdę nie synchronizuje się. Dlaczego potrzebujesz takiego Androida? Długie kopanie w logi (logcat) samego urządzenia, znalazłem rekordy, które mówiły, że korzystanie z Google jest zabronione. Najbardziej niewygodny w Androidzie, widzisz dziennik, ale nie wiesz, która aplikacja systemu go produkuje. Aby dowiedzieć się, skąd się biorą nogi, musiałem pobrać wszystkie aplikacje systemowe do zdemontowanego kodu Java. Trwało to dość długo, ale nadal używam wykonanej pracy do analizy i wyszukiwania niezbędnego kodu. Kroki, aby uzyskać to narzędzie są następujące:
1 . Wykonaj deodex wszystkie oprogramowanie układowe
2 . Twoje nowe oprogramowanie DEODEX będzie musiało zostać zmontowane i wysłane do twojego telefonu. Jak to się robi, jest tematem innego artykułu.
3 . Z każdego pliku znajdującego się w / system / framework wyciągnij plik classes.dex i przekonwertuj do JAR za pomocą dex2jar.
4 . Otwórz każdy JAR w JD-GUI i ponownie zapisz do kodu źródłowego.
5 . Rozpakuj kod źródłowy z archiwum.

W rezultacie dostałem tyle folderów, ile było plików JAR w / system / framework, a każdy folder miał strukturę kodów źródłowych Java.
  Prostymi manipulacjami szybko znalazłem miejsce, które wygenerowało wpisy logcat.

Nie będziemy rozważać całej logiki zakazu, ponieważ dla każdego przypadku jest to osobna historia. Musiałem spędzić kilka godzin zanim znalazłem gdzie dokonywane są kontrole, aby zbudować schemat blokowy algorytmu w głowie i zrozumieć, gdzie jest to konieczne, aby wspiąć się na algorytmie trochę „urobku”.

Okazało się to wszystko proste. Istnieje podprocedura, która na podstawie z góry ustalonych stałych odpowiada na wezwanie, jeśli telefon należy do Chin, lub nie.

Kod był w pliku HTCExtension.jara klasa, która zawierała ten podprogram, była w

Rozpakowywanie i analizowanie oryginalnego pliku
1 . Najpierw musimy pobrać oryginalny plik JAR DEODEX-a, który odpowiada za część potrzebnego kodu. W naszym przypadku HTCExtension.jar.
2 . Otwórz z dowolnym archiwizatorem i ściągnij klasę.dex z tego miejsca
3 . Używając konwertera dex2jar, przekonwertuj go na plik JAR. Zespół: dex2jar.bat classes.dex
4 . Wyświetl otrzymany plik classes_dex2jar.jar w interfejsie JD-GUI.
5 . Tak, najczęściej JD-GUI dekompila kod nie tak jak wygląda w oryginale, jest zrozumiały, ale jest całkiem możliwy do odczytania. W kodzie źródłowym widać, że podprogram sprawdza parametry projektu i flagę językową oprogramowania. W naszym niefortunnym przypadku wartość zwracana jest PRAWDA.
  static logiczna isChina () (jeśli ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23)), natomiast (((HtcBuildFlag.Htc_PROJECT_flag == 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) powrót prawdziwe, zwraca fałsz;)
6 . Aby utworzyć łatkę, musimy zdemontować sam kod Dalvik. Do tego używamy baksmali. Najwygodniejszym sposobem jest utworzenie osobnego folderu i umieszczenie tam trzech plików: HTCExtension.jar, smali.jar  i baksmali.jar. Podaj komendę java -Xmx512m -jar baksmali.jar -a -d -o HTCExtension -x HTCExtension.jar

To jest API twojej wersji Androida. Dla JB jest 16
   - folder, w którym znajdują się wszystkie frameworki oprogramowania układowego.

W moim przypadku był to zespół.
  Java -Xmx512m jar baksmali.jar -a 16 D S: \\ dev \\ Android \\ Android kuchenne \\ WORKING_JB_15 \\ system \\ ramy -o HTCExtension -x HTCExtension.jar
7 . W naszym nowo utworzonym folderze był folder HTCExtension, a w nim nasze pliki z kodem Dalvik.
8 . Znajdź plik po drodze \\ com \\ htc \\ util \\ contacts \\ BuildUtils $ Customization.java  i spójrz na kod:
.method publiczne statyczne isChina () .registers Z3 .prologue const / 4 V0 0x1 .Wiersz 276 sget-Short V1 Lcom / HTC / htcjavaflag / HtcBuildFlag; -\u003e Htc_PROJECT_flag S const / 16 V2 0xd8 if równoważnika V1 V2 ,: cond_13 sget-Short V1 Lcom / HTC / htcjavaflag / HtcBuildFlag; -\u003e Htc_PROJECT_flag S const / 16 V2 0xda if równoważnika V1, V2 ,: cond_13 sget-Short V1 Lcom / HTC / htcjavaflag / HtcBuildFlag ; -\u003e Htc_PROJECT_flag S const / 16 V2 0x17 jeśli ne V1, V2 ,: cond_14 .Wiersz 297: cond_13: goto_13 powrotu V0 .Wiersz 283: cond_14 sget-Short V1 Lcom / HTC / htcjavaflag / HtcBuildFlag; -\u003e Htc_PROJECT_flag S if-ne V1 V0 ,: cond_1d .Wiersz 285 const / 4 V1, 0x2 sget-krótki v2 Lcom / HTC / htcjavaflag / HtcBuildFlag; -\u003e Htc_LANGUAGE_flag S if równoważnika V1, V2 ,: cond_13 .Wiersz 291: cond_1d sget-Short V1 Lcom / HTC / htcjavaflag / HtcBuildFlag; -\u003e Htc_PROJECT_flag S const / 16 V2 0x1b if równoważnika V1, V2 ,: cond_13 .Wiersz 297 const / 4 V0 0x0 goto: goto_13 .END metoda
9 . Przerażające, prawda? Nic nie jest jasne. Ale to jest naprawialna sprawa. Po utworzeniu kilku poprawek i tym samym wypełnieniu ręki możesz łatwo zmodyfikować kod bez narzędzi innych firm. W naszym przypadku w tym kodzie
  .prologue const / 4 v0, 0x1 przypisuje zmiennej v0 wartość 1, czyli PRAWDA. Następnie są różnego rodzaju kontrole, a jeśli telefon nie jest chiński, to wartość zmiennej zmienia się:
  .line 297 const / 4 v0, 0x0 goto: goto_13
10 . Najłatwiejszym sposobem uratowania ojca rosyjskiej demokracji jest zmiana kodu na:
  .prologue const / 4 v0, 0x0, to znaczy, aby zmienić wartość zmiennej od 1 do 0. To znaczy, nie wiem co, zawsze zwraca FAŁSZ i kod JD-GUI będzie wyglądać public static boolean isChina () (if (( Htcbuildflag.htc || (HtcBuildFlag.Htc_PROJECT_flag == 27)) zwraca false, return false;)
11 . Tak, metoda zadziała. Ale nie szukamy łatwych dróg - tym razem. Po drugie, niezupełnie piękne. Chcę kodu coś jak
  public static boolean isChina () (return false;)
12 . A jak zdobyć kod Dalvik dla tego kodu źródłowego? Dla początkujących zrobimy małą sztuczkę.

Tworzenie kodu Dalvik
1 . Otwórz pakiet SDK Androida.
2 . Utwórz nowy projekt iw naszej jedynej klasie testowej piszemy następujący kod
  pakiet ru.habrahabr.test; public class test (public static boolean isChina () (return false;))
3 . Kompilujemy nasz projekt, a następnie zabieramy zmontowaną aplikację z obszaru roboczego.
4 . Umieszczamy zebraną aplikację w folderze, w którym wypatroszyliśmy plik JAR.
5 . Podaj komendę java -Xmx512m -jar baksmali.jar -a -d -o test -x test .apk
6 . Rozmontowaliśmy nowo utworzoną aplikację do kodu Dalvik.
7 . Otwórz nasz plik test.smali i zobacz tam kod
  .method public static isChina () Z .registers 1 .prologue .line 7 const / 4 v0, 0x0 return v0 .end method
8 . Wszystko, kod łatania jest gotowy.
Toczenie łaty
1 . Kod Dalvik jest zaśmiecony znacznikami wskazującymi linię kodu w oryginalnym pliku źródłowym. Jest to konieczne przy wyświetlaniu błędów w twoim programie. Bez ciągów kod działa również świetnie.
2 . Usuń linie z numeracją linii, kopiuj i zastąp metodę (podprogram) w naszym \\ com \\ htc \\ util \\ contacts \\ BuildUtils $ Customization.java  plik.
  .method public static isChina () Z .registers 1 .prologue const / 4 v0, 0x0 return v0 .end method
3 . Zapisz plik. Tak, zapomniałem powiedzieć, że edytor potrzebuje normalnego, na przykład Notepad ++ lub EditPlus. Kto lubi co.
Kompilowanie i tworzenie poprawionego pliku JAR
1 . Przy pomocy backsmali odpuściliśmy nasz plik JAR, a teraz musimy go skompilować.
2 . Podajemy komendę java -Xmx512m -jar smali.jar -a 16 HTCExtension -o classes.dex
3 . Plik classes.dex pojawia się w naszym tacie
4 . Otwórz ponownie HTCExtension.jar  zarchiwizuj plik i zastąp istniejący classes.dex  na naszym nowo utworzonym.
5 . Wszystkie nasze HTCExtension.jar  zawiera zmodyfikowany kod programu.
Zastępowanie oryginalnego pliku łatą
  Zwykle dla zwykłych użytkowników tworzone są specjalne skrypty, które zastępowane są odzyskiwaniem. Ale nie jesteśmy zainteresowani. Po pierwsze, jest długi i żmudny, po drugie, jesteśmy doświadczonymi użytkownikami i możemy sobie pozwolić na pewne subtelności.

1 . Możesz zastąpić bieżący plik roboczy poniższymi poleceniami, jeśli masz już oprogramowanie układowe DEODEX i masz uprawnienia administratora:

Adb push HTCExtension.jar /sdcard/HTCExtension.jar adb shell su mount -o remount -rw / system dd if = / system / framework / HTCExtension.jar z = / system / framework / HTCExtension.jar.back dd if = / sdcard /HTCExtension.jar z = / system / framework / HTCExtension.jar chmod 644 /system/framework/HTCExtension.jar rm / data / dalvik-cache / [email protected]@[email protected]  uruchom ponownie

Pierwszy zespół przesyła załatany plik na dysk flash USB
  2. polecenie otwiera powłokę
  Trzecie polecenie daje dostęp do roota
  Czwarta komenda montuje system w trybie odczytu / zapisu
  Drużyna 5 tworzy plik kopii zapasowej
  Szóste polecenie zastępuje istniejący plik nowym, zaszyfrowanym.
  7. zespół ustawia uprawnienia
8. polecenie usuwa pamięć podręczną
  Zespół 9 ponownie uruchamia urządzenie.

2 . Dziękuję za przeczytanie tego punktu, pozostaje trochę.
3 . Po ponownym uruchomieniu, twój nowy poprawiony kod zacznie obowiązywać.
4 . Jeśli kod nie zadziała lub pojawi się błąd, a następnie przez niełatwe kombinacje, możesz zwrócić kopię zapasową.
  adb shell su mount -o remount -rw / system dd if = / system / framework / HTCExtension.jar.back of = / system / framework / HTCExtension.jar rm / data / dalvik-cache / [email protected]@[email protected]  uruchom ponownie

Epilog

  Tak, ten artykuł wydawał się być zbyt konkretny, dla kogoś, kto nie był bardzo jasny, ale dla kogoś, kto był bezużyteczny. Celowo zrobiłem bez dogłębnej szczegółowości i ilustracje, jak to wszystko wygląda na żywo i w praktyce. Po pierwsze, ta praca będzie niewdzięczna i tylko zadawać więcej pytań. Po drugie, nie chcę widzieć armii użytkowników na forach, które narzekają, że zabili swój telefon.

Do następnego artykułu powiem ci jak zrobić tviki. Pojawi się przykład użycia automatycznego nagrywania rozmów telefonicznych za pomocą natywnych środków telefonu. Dziękuję za uwagę.

P.S. Jeśli coś nie jest jasne lub mylące, zadaj pytania - zawsze chętnie odpowiem i wytłumaczę.

Tworzenie niestandardowego oprogramowania układowego dla Androida nie jest łatwe, wymaga specjalnego oprogramowania i pewnych umiejętności, a także algorytmu działań, które opisujemy w tym artykule.

Rozważmy konkretny przypadek i zacznijmy w kolejności. Aby utworzyć niestandardowe oprogramowanie układowe, Android będzie potrzebował:

  1. Komputer osobisty lub przenośny, na pokładzie którego znajduje się system operacyjny Ubuntu i zainstalowana Java.
  2. "Kuchnia" - aplikacja do przetwarzania obrazów partycji systemowych.
  3. Właściwie oprogramowanie układowe Android do przetworzenia.

Krok 1 - Zainstaluj Ubuntu

System Ubuntu oparty jest na jądrze Linux i jest oparty na Debianie, opracowanym przez Canonical. Nie jest wcale konieczne instalowanie tego systemu zamiast obecnego, uruchamianie go za pomocą emulatora i tak dalej.


Aby wygodnie wykorzystać wszystkie jego zalety, wystarczy użyć aplikacji Wubi, która może zainstalować Ubuntu pod Windows. Wubi - zwarcie z Windows Ubuntu Installer.

Po pobraniu instalatora i zainstalowaniu za jego pośrednictwem nowego systemu operacyjnego, po uruchomieniu komputera można przejść do tego lub innego systemu, aby wybrać i zarządzać nim za pomocą panelu sterowania Windows.

Krok 2 - Zainstaluj Javę

Java to język programowania opracowany w 1995 roku, jego nazwa wydaje się być zaczerpnięta z filmów (śmieszna ludowa Java z Gwiezdnych wojen).

Ta technologia oparta jest na najnowocześniejszym oprogramowaniu różnych typów. Niektóre witryny działają tylko z Javą na komputerze.


Aby go zainstalować potrzebujesz:

  1. Zaloguj się do systemu Ubuntu i otwórz Terminal za pomocą klawiszy Ctrl + Alt + T.
  2. Użyj polecenia sudo add-apt-repository "deb http://archive.canonical.com/ubuntu lucid partner", aby otworzyć nowe repozytorium, z którego możesz pobrać Javę. Aby to zrobić, musisz wprowadzić hasło, aby uzyskać prawa administratora, które są ustawione podczas instalacji Ubuntu. Następnie musisz użyć następujących poleceń:
  3. sudo apt-get update, aby zaktualizować listę źródeł.
  4. sudo apt-get install sun-java6-jre sun java6-plugin sun-java6-fonts do instalacji Java.

Krok 3 - pracuj z "kuchnią", aby stworzyć oprogramowanie

Program "kuchnia" jest głównym narzędziem do pracy z oprogramowaniem układowym Android. Istnieje kilka ich rodzajów, rozważymy współpracę z kuchnią od Dsixda.


  • Po pobraniu niezbędnych plików rozpakuj je do katalogu domowego w katalogu kuchennym.
  • Uruchom terminal, używając polecenia Is, aby wyświetlić listę dokumentów w twoim katalogu domowym. Katalogi zostaną podświetlone na niebiesko, pliki archiwów na czerwono i tak dalej.
  • Otwórz folder "Kuchnia", prześlij przetworzony plik oprogramowania układowego w dowolnym formacie do katalogu original_update.
  • Wróć do Terminalu z otwartym folderem Kuchnia, wprowadź polecenie Is. Menu pojawi się wśród plików, należy je uruchomić poleceniem. / Menu. Spowoduje to otwarcie listy ponumerowanych poleceń, które można wykonać, wpisując ich numer w linii i naciskając klawisz Enter.
  • Aby zdemontować oprogramowanie, wprowadź polecenie 1. Kuchnia zacznie wyświetlać wiele pytań, na które należy odpowiedzieć klawiszem Enter (wymagane wartości są wprowadzane domyślnie).

Działania te doprowadzą do początkowego menu programu. Wracając do folderu Kuchnia, możesz znaleźć folder WORKING_x_y, gdzie x i y to data i godzina utworzenia.

Będzie zawierał zdemontowane pliki oprogramowania układowego. W folderze System możesz znaleźć wszystkie pliki systemowe. części tych plików spowoduje zmianę oprogramowania układowego.

Zmieniając zestaw podstawowych aplikacji, funkcji, ustawień i wprowadzając wszystkie pożądane poprawki do plików oprogramowania układowego, musisz je zebrać.

Aby to zrobić, wróć do terminala, wprowadź polecenie 99 i ponownie odpowiedz klawiszem Enter na wszystkie pytania, które się pojawiają. Następnie program wrzuci użytkownika do menu początkowego, a folder OUTPUT_ZIP będzie zawierał nowy plik oprogramowania układowego, który można następnie zainstalować na urządzeniu mobilnym.

Istnieją inne sposoby tworzenia niestandardowego niestandardowego oprogramowania układowego Android, a niezbędne programy do tego można znaleźć w sieci, pozwalają na "otwieranie" plików systemu operacyjnego i zmianę niektórych parametrów do woli.

Oto kilka programów przeznaczonych do tego:

  • Android SDK to środowisko programistyczne stworzone specjalnie do pracy z aplikacjami na Androida, pozwala na sprawdzenie kodu programu.
  • Android Kitchen - niezbędna do przetwarzania obrazów partycji systemowych w oprogramowaniu.
  • JD-GUI jest dekompilatorem zdolnym do pracy z językiem programowania Java. Jego odpowiednikiem jest DJ Java Decompiler.
  • smali - do pracy z kodem dalvik. Zaprojektowany do demontażu kodu, backsmali pozwala na złożenie kodu dalvik.
  • dex2jar to narzędzie, które pozwala konwertować pliki wykonywalne skompilowane na kodzie dalvik.

Każdy użytkownik Androida ma własny pomysł na to, jak powinien wyglądać system operacyjny, jakie funkcje powinny być wykonywane i jaki zestaw oprogramowania powinien być zainstalowany domyślnie. Jednak nie wszyscy wiedzą, że tworzenie własnego oprogramowania nie jest trudne. Aby to zrobić, nie trzeba rozumieć jądra systemu Linux, aby móc kompilować źródła Androida ani zrozumieć, jak działa smartfon.

Wprowadzenie

Istnieją trzy sposoby tworzenia własnego oprogramowania układowego dla komunikatora Android: 1. Kończenie i kompilowanie systemu operacyjnego ze źródeł opublikowanych przez Google lub zespół CyanogenMod. 2. Modyfikacja oprogramowania sprzętowego komunikatora. 3. Modyfikacja oprogramowania układowego innej firmy, utworzonego przy użyciu pierwszej lub drugiej metody.

Pierwsza metoda jest najbardziej poprawna i elastyczna, ale często wymaga dostatecznie głębokiej znajomości funkcji Androida i możliwości edycji systemu źródłowego, aby następnie działały na urządzeniu. Ten temat wykracza poza zakres naszego artykułu, więc nie będziemy rozważać składania źródeł Androida, ale rozwiążemy dwie inne metody, a dokładniej - trzecią.

Oprogramowanie układowe innych firm (tzw. Mods) istnieje dla prawie każdego urządzenia z systemem Android, od momentu wejścia na rynek minął co najmniej tydzień. Zazwyczaj zawierają one już wszystkie niezbędne modyfikacje niezbędne do prawidłowego działania oprogramowania układowego w komunikatorze, a zatem stanowią doskonałą platformę do eksperymentowania z systemem. Mogą być modyfikowane niemal nie do poznania, zawierać dowolne oprogramowanie w systemie operacyjnym, zmieniać jego wygląd, tworzyć wiele ustawień niskiego poziomu za pomocą prostego edytora tekstu i menedżera plików. Działania te nie wymagają głębokiej znajomości systemu operacyjnego i mogą być wykonywane przez każdego czytającego czasopismo.

Wybieramy eksperymentalny

Załóżmy więc, że nasz komunikator jest już zalogowany, a konsola odtwarzania ClockworkMod jest nagrywana w obszarze rozruchowym, umożliwiając instalację dowolnego oprogramowania na urządzeniu bez żadnych ograniczeń (pisaliśmy o tym, jak to zrobić w artykule "Total submission", opublikowanym w numerze październikowym] [] ). Teraz chcemy zainstalować inne oprogramowanie na urządzeniu, ale nie tak, ale z własnymi modyfikacjami, ustawieniami i oprogramowaniem. Dlatego potrzebujemy szkieletu, czyli oprogramowania innej firmy, stabilnie działającego na naszym urządzeniu. Skąd je wziąć?

Głównym środowiskiem wszystkich romodeli jest oczywiście forum xda-developers.com. Można tam znaleźć wszystko dla komunikatorów z systemem iOS, Windows Mobile, Windows Phone i Android. Otwórz stronę w przeglądarce, kliknij sekcję Fora i poszukaj komunikatora na listach forum. Następnie przejdź do odpowiedniej sekcji Android Development i dokładnie przejrzyj listę tematów zawierających słowo "" w tytule. Lepiej jest znaleźć jakieś czyste oprogramowanie układowe o nazwie "Czysty Android 2.3 Rom" lub port CyanogenMod, choć tak naprawdę każdy inny zrobi (chociaż może być konieczne anulowanie zmian autora). Otwieramy temat, opróżniamy pierwszy post, znajdujemy się na końcu linku, aby pobrać i pobrać ROM na twój komputer.

Teraz musisz otworzyć plik oprogramowania układowego. Odbywa się to za pomocą najpopularniejszego rozpakowania:

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

Ogólna struktura katalogów i ważne pliki

Zbiór plików i katalogów powstały w wyniku wykonania poprzedniego polecenia jest w istocie systemem operacyjnym Android i dokładnie tak, jak zostanie umieszczony w pamięci NAND urządzenia. W zależności od wersji Androida i wyobraźni autora może zawierać różne zestawy katalogów i plików, ale zawsze zawiera trzy obowiązkowe obiekty: META-INF, plik boot.img i katalog systemowy.

Pierwszy katalog zawiera metadane dotyczące oprogramowania układowego, w tym pliki certyfikatów autora, manifest z listą plików i ich sum kontrolnych, a także skrypt aktualizacyjny, który może tworzyć nowe pliki w pamięci NAND, zmieniać prawa dostępu i wyświetlać pasek postępu, który użytkownicy widzą podczas zainstalować oprogramowanie układowe.

Plik boot.img zawiera obraz rozruchowy zawierający jądro Linux i obraz initrd. Może być rozpakowany, ale dla nas nie ma żadnej szczególnej korzyści, ponieważ prawie wszystkie parametry systemu można zmienić za pomocą plików konfiguracyjnych i systemu plików / proc. Jeśli potrzebujesz jądra skompilowanego ze specjalnymi parametrami, na przykład z aktywowanym harmonogramem BFS lub obsługą NFS, prawie na pewno możesz go znaleźć na tych samych programach xda i flashować go za pomocą ClockworkMod.



Wreszcie katalog systemowy jest tym, o co w tym wszystkim chodzi. Zawartość tego katalogu to system operacyjny Android bez jądra Linux. Zawiera wszystko, co jest potrzebne do działania systemu operacyjnego, dlatego po prostu trzeba znać jego strukturę. Wygląda to tak:

  • aplikacja  - wstępnie zainstalowane aplikacje: telefon, kalkulator, kalendarz itp.
  • bin  jest analogiem do katalogów / bin i / usr / bin w systemie Linux. Zawiera różne składniki systemu używane przez komponenty systemu wyższego poziomu. Na przykład w tym miejscu znajduje się wirtualna maszyna dalvikvm.
  • itp  - pliki ustawień. Pełny odpowiednik / etc w Linuksie, używany jednak tylko przez komponenty systemowe. Ustawienia aplikacji Android zapisują ustawienia w katalogu / data / data.
  • czcionki  - czcionki. Domyślnie zawiera tylko czcionki Droid (lub Roboto w systemie Android 4.0).
  • ramy  - zestawy klas Java używanych przez system i oprogramowanie Android. Istnieje również plik framework-res.apk zawierający pełny opis interfejsu systemu operacyjnego, w tym wszystkie pliki graficzne.
  • lib - Biblioteki systemu Linux używane przez komponenty systemowe niskiego poziomu. Analogia katalogów / lib i / usr / lib w systemie Linux obejmuje standardowe biblioteki, takie jak libc (ale Android używa własnego Bionic zamiast Glibc), libz (szyfrowanie gzip), libssl i inne.
  • media  - pliki multimedialne: dzwonki, dźwięki powiadomień, dźwięki interfejsu i pliki animacji rozruchu systemu operacyjnego.
  • tts  - Pliki wymagane do syntezatora mowy.
  • usr  - opcjonalny katalog, który zwykle zawiera pliki potrzebne do softin z katalogu bin. W rzeczywistości, analog / usr / share.
  • sprzedawca  - pliki dostarczone przez producenta urządzenia. Zwykle zawiera oprogramowanie binarne dla różnych "żelaznych" komponentów, takich jak moduł Wi-Fi.
  • xbin  - opcjonalny katalog zawierający wszystko, czego nie ma w koszu. Z reguły służy do przechowywania użytecznych narzędzi, niemniej jednak opcjonalnych dla działania systemu (górny, edytor tekstu). CyanogenMod używa go do przechowywania narzędzi administracyjnych: bash, ssh, powertop, busybox itd.
  • build.prop  - plik zawierający informacje o zespole, a także różne ustawienia niskiego poziomu.

Rozmieszczenie poleceń

Ustawienia build.prop w artykule można zastosować do już działającego systemu za pomocą komendy setprop:

   # setprop debug.sf.nobootanimation 1

Własny pakiet oprogramowania

Katalog / system / aplikacja zawiera całe oprogramowanie preinstalowane w oprogramowaniu. Usuwając i dodając pakiety do tego katalogu, możemy zmienić zestaw aplikacji dostępnych po wyjęciu z pudełka. Na przykład, nie jest tajemnicą dla nikogo, że standardowy lunch na Androida (i ADWLauncher w CyanogenMod) zwalnia i ma wiele wad. OK, zamień go na LauncherPro:

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

I to wszystko. Nie musisz niczego instalować, nie musisz nigdzie chować, wystarczy wrzucić niezbędną aplikację do katalogu - i gotowe. Nawet nazwa nie ma znaczenia, Android sam znajdzie żądaną aplikację i zainstaluje ją jako ekran główny. W ten sam sposób możesz umieścić w oprogramowaniu firmowym dowolny inny program lub usunąć go z tego programu.

Warto umieścić w oprogramowaniu układowym jedną z aplikacji do wyszukiwania zgubionego smartfona (na przykład zdobycz), a nawet w przypadku przywrócenia ustawień fabrycznych pozostanie ona w systemie operacyjnym i będzie działać. Można również zastąpić niektóre oprogramowanie systemowe, na przykład dodać Dialer One zamiast standardowego Phone.apk lub Go SMS zamiast sms.apk.

A co z systemowymi aplikacjami Linux, takimi jak serwer ssh lub mc? Tutaj także wszystko jest proste. Możesz zbudować soft dla Androida i procesora ARM, korzystając z zestawu NDK od Google, ale większość potrzebnych aplikacji została już skompilowana przed nami. Na przykład, chcemy wstępnie zainstalować mc w naszym oprogramowaniu. Idź do programistów xda i wyszukuj Midnight Commandera. Na pierwszej stronie znajduje się pakiet apk z instalatorem i rozpakowujemy go za pomocą tego samego rozpakowania:

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

Widzimy na liście rozpakowanych plików, assets / kits / mc-4.7.5.4-arm.tar.jet. Jest to archiwum tar.gz, które jest rozpakowywane do katalogu głównego systemu po zainstalowaniu pakietu apk (lub raczej po zainstalowaniu apk, uruchomieniu aplikacji i kliknięciu przycisku Instaluj). Możemy natychmiast rozpakować go do naszego oprogramowania i pobrać wstępnie zainstalowany mc:

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

Teraz, aby uruchomić menedżera plików na urządzeniu, po prostu otwórz terminal i wpisz mc. Inne aplikacje mogą być rozpowszechniane w archiwach zip dla oprogramowania układowego za pomocą mechanizmu ClockworkMod Recovery. Umieszczenie ich w swoim kodzie jest jeszcze łatwiejsze: w tym celu przejdź do katalogu głównego oprogramowania (w tym przypadku ~ / rom) i rozpakuj archiwum za pomocą rozpakowania.



Wygląd

Własne oprogramowanie jest najczęściej tworzone w celu zmiany wyglądu systemu Android zgodnie z własnymi upodobaniami. Zrobić to ponownie w Androidzie, jest bardzo proste. Wszystkie ustawienia GUI Androida są przechowywane w pliku framework / framework-res.apk. Można go rozpakować za pomocą narzędzia apktool:

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

W rezultacie katalog z opcją szkieletu zawierający wszystkie pliki pakietów powinien pojawić się w bieżącym katalogu. Najciekawsze podkatalogi w nim zawarte to res / drawable- * i res / layout- *. Pierwszy zawiera wszystkie elementy graficzne w postaci plików png dla różnych rozdzielczości i pozycji ekranu. Na przykład drawable-land-mdpi to katalog z zasobami graficznymi dla ekranów średniej rozdzielczości, które znajdują się w pozycji poziomej (po obróceniu ekranu system operacyjny przełącza się na inne pliki). Oczywiście każdy plik można edytować lub zastąpić innym.



Układ katalogów zawiera opisy elementów graficznych w formacie XML (w rzeczywistości są one przechowywane w binarnym formacie AXML, ale apletool przekonwertował je do zwykłego XML). Format opisu jest dość prosty i bezpośredni, ale trudno się z nim uporać, zwłaszcza jeśli nie wiesz, gdzie jest wszystko. Dlatego ponownie sięgamy do usług mieszkańców forum xda-developerów, którzy już udało się wymyślić wiele różnych modyfikacji interfejsu graficznego Androida. Można je łatwo znaleźć za pomocą żądania wyszukiwania "framework-res mod nazwa_urządzenia".

Zwykle takie mody są dystrybuowane jako gotowe pliki framework-res.apk, które możesz po prostu umieścić w swoim oprogramowaniu. Jeśli chcesz znaleźć konkretne różnice w treści, to mod można rozpakować i porównać do frameworka za pomocą diff:

   $ diff -R ~ / framework-res \\ ~ / rom / system / framework / framework-res

Niestety, w ramach jednego artykułu nie możemy brać pod uwagę przynajmniej części wewnętrznej struktury framework-res, więc aby uzyskać więcej informacji, odwołaj się do odpowiedniego tematu forum w3bsit3-dns.com.

Po wprowadzeniu modyfikacji można zbudować framework-res.apk przy użyciu tego samego apletoola. Jednak ta operacja wymaga narzędzia aapt z zestawu SDK systemu Android, który apktool używa do końcowego pakowania pliku APK. Można go uzyskać oddzielnie:

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

Teraz możesz zebrać plik:

   $ cd ~ / rom / system / framework $ java -jar ~ / apktool.jar b framework-res $ cp framwork-res / dist / framework-res.apk. $ rm -rf framework-res

Następnym krokiem jest zmiana animacji ładowania. Jest przechowywany jako zwykłe pliki png spakowane w archiwum system / media / bootanimation.zip. Rozpakuj:

   $ cd / tmp $ mkdir bootanimation; cd bootanimation $ unzip ~ / rom / system / media / bootanimation.zip

Wewnątrz znajduje się plik desc.txt, który opisuje animację w następującym formacie:

Szerokość Wysokość FPS p Zamówienie Pauza Katalog ...

Standardowy widok tego pliku to:

480 800 30 p 1 0 part0 p 0 0 part1

Oznacza to, że obraz ma rozmiar 480 x 800, a szybkość zmiany obrazu (FPS) wynosi 30 sztuk / s. Następnie znajduje się opis pierwszej części animacji, której pliki znajdują się w katalogu part0. Jest odtwarzany raz (numer 1 po p). Kolejna część (część 1) jest odtwarzana nieskończoną liczbę razy, aż urządzenie się uruchomi. Zwykle katalog part0 zawiera obrazy odpowiadające pierwszej części animacji, a part0 zawiera wszystkie pozostałe obrazy odtwarzane w pętli. Same obrazy powinny mieć ten sam rozmiar, a ich nazwy powinny zawierać cyfry w porządku rosnącym, na przykład 0001.png, 0002.png itd.

Ponieważ animacja pobierania ma bardzo prosty format, jest dość łatwa do wykonania. Wystarczy przekonwertować wideo na obrazy png używając mencoder (w desc.txt musisz ustawić wartość FPS 24):

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

Ale będzie to zbędne. Uczestnicy forum xda-developerzy wykonali tyle animacji, że potrzeba pracy z rękami nie jest już potrzebna. Linki do ciekawych animacji znajdują się na końcu artykułu.

Ustawienia niskiego poziomu

Ostatnią rzeczą, o której chciałbym porozmawiać w tym artykule jest edycja ustawień niskiego poziomu. W systemie Android istnieje plik system / build.prop, który przechowuje informacje o kompilacji oprogramowania i ustawieniach dla określonych urządzeń. Dodając wiersze do tego pliku, możesz zmienić działanie Androida, przyspieszyć jego pracę lub zmniejszyć zużycie baterii. Poniżej znajdują się najciekawsze ustawienia.



  1. Zapobieganie rozładowywaniu pulpitu z pamięci: ro.HOME_APP_ADJ = 1

    Ta opcja umożliwia wygodniejszą pracę z urządzeniem dzięki natychmiastowemu dostępowi do pulpitu w dowolnym momencie. Nie zalecane dla urządzeń z małą ilością pamięci.

  2. Poprawa jakości zapisywanych plików JPG: ro.media.enc.jpeg.quality = 100

    Pozwala na wyraźniejsze zdjęcia aparatów, ale znacznie zwiększa obciążenie procesora.

  3. Wyłączanie animacji rozruchowej w celu przyspieszenia ładowania systemu operacyjnego: debug.sf.nobootanimation = 1
  4. Układanie części prac nad rysowaniem interfejsu na GPU: debug.sf.hw = 1

    Umożliwia szybszy i płynniejszy interfejs.

  5. Zablokuj powiadamianie o aktywnym trybie debugowania (po podłączeniu do komputera za pomocą USB): persist.adb.notify = 0
  6. Eliminacja problemu z pojawieniem się czarnego ekranu po zakończeniu połączenia: ro.lge.proximity.delay = 25 mot.proximity.delay = 25
  7. Włączanie klawiszy sterowania podświetleniem natychmiast po włączeniu ekranu: ro.mot.buttonlight.timeout = 0

Oprócz tego wielu użytkowników zaleca używanie następujących kombinacji flag:

  1. Skrócenie czasu reakcji ekranu dotykowego: debug.performance.tuning = 1 video.accelerate.hw = 1 windowsmgr.max_events_per_sec = 150
  2. Zwiększ żywotność baterii: wifi.supplicant_scan_interval = 180 pm.sleep_mode = 1 ro.ril.disable.power.collapse = 0
  3. Poprawki modułu 3G: ro.ril.hsxpa = 2 ro.ril.gprsclass = 10 ro.ril.hep = 1 ro.rilable.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. Poprawa wydajności sieci: 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

Wszystkie te linie powinny być po prostu umieszczone w pliku system / build.prop i zapisane.

Zgromadzenie

OK, dokonaliśmy niezbędnych zmian, wdrożyliśmy nasze aplikacje, dostroiliśmy system i teraz musimy stworzyć obraz systemu operacyjnego gotowy na oprogramowanie. To pomoże nam testować narzędzie. Najpierw należy spakować oprogramowanie z suwakiem:

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

Teraz musisz podpisać archiwum, aby Recovery mógł je zainstalować:

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

Następnie prześlemy archiwum my-rom-signed.zip na kartę pamięci urządzenia i wyłączamy urządzenie. Aby przejść do odzyskiwania, włączamy urządzenie z wciśniętym klawiszem zmniejszania głośności (w przypadku niektórych urządzeń procedura może się różnić).

Teraz przejdź do pozycji "Zainstaluj zip z sdcard", a następnie w "Wybierz zip z sdcard", znajdź my-rom-sign.zip na karcie SD i wybierz Tak. Po zakończeniu instalacji wybierz "Zrestartuj system teraz".

Wnioski

Android to elastyczna platforma, a w tym artykule nie opisano wszystkich możliwości jego modyfikacji. Głębsza modyfikacja może obejmować wymianę jądra, zmianę ekranu blokady i standardowych aplikacji, aktywowanie funkcji, takich jak automatyczne instalowanie aplikacji na karcie pamięci, wprowadzanie mechanizmu skryptu rozruchowego (/etc/init.d) i wiele innych. Porozmawiamy o tym wszystkim w następujących artykułach.

Kontynuacja tematu:
Apple

Jak uaktualnić / przywrócić do oficjalnego oprogramowania Nieoficjalnego iPhone'a 5 / 4S / 4 / 3G / 3GS, najpierw upewnij się, że oprogramowanie, które zamierzasz flashować, jest ...