[JAVA] Android OS (7.1.2) Build und Hello World

Was ist zu tun

  1. Holen und erstellen Sie eine Android 7.1.2-Quelle und schreiben Sie in Nexus 9
  2. Angepasst, um beim Start den Dialog "Hallo Welt!" Anzuzeigen

Vorbereitung

JDK 8 installieren http://qiita.com/niusounds/items/1f32dcd6fa1f57ade98a

Quellcode herunterladen

$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ mkdir -p aosp/7.1.2
$ cd aosp
$ ~/bin/repo init -u https://android.googlesource.com/platform/manifest -b android-7.1.2_r17
$ ~/bin/repo sync
...
Checking out files: 100% (6377/6377), done. out files:  26% (1719/6377)   
Checking out files: 100% (1717/1717), done.
Checking out files: 100% (44431/44431), done.
Checking out files: 100% (62/62), done.king out files:  14% (9/62)   
Checking out files: 100% (1756/1756), done.
Checking out files: 100% (8484/8484), done.
Checking out files: 100% (539/539), done.ng out files:  28% (151/539)   
Checking out files: 100% (15774/15774), done.ut files:   7% (1128/15774)   
Checking out files: 100% (25/25), done.
Syncing work tree: 100% (529/529), done. 

Quelle erstellen

Java-Einstellungen

$ export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
$ export PATH=$PATH:$JAVA_HOME/bin

Einstellungen erstellen

$ source build/envsetup.sh 
$ lunch
Lunch menu... pick a combo:
     1. aosp_arm-eng
     2. aosp_arm64-eng
     3. aosp_mips-eng
     4. aosp_mips64-eng
     5. aosp_x86-eng
     6. aosp_x86_64-eng
     7. full_fugu-userdebug
     8. aosp_fugu-userdebug
     9. mini_emulator_arm64-userdebug
     10. m_e_arm-userdebug
     11. m_e_mips-userdebug
     12. m_e_mips64-eng
     13. mini_emulator_x86-userdebug
     14. mini_emulator_x86_64-userdebug
     15. aosp_dragon-userdebug
     16. aosp_dragon-eng
     17. aosp_marlin-userdebug
     18. aosp_sailfish-userdebug
     19. aosp_flounder-userdebug
     20. aosp_angler-userdebug
     21. aosp_bullhead-userdebug
     22. hikey-userdebug
     23. aosp_shamu-userdebug

Which would you like? [aosp_arm-eng] aosp_flounder-deu ← Wählen Sie entsprechend dem Terminal, das Sie bauen möchten(https://forum.xda-developers.com/wiki/Google/Device_Codenames)

============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=7.1.2
TARGET_PRODUCT=aosp_flounder
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-a
TARGET_CPU_VARIANT=denver64
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv7-a-neon
TARGET_2ND_CPU_VARIANT=denver
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-4.4.0-78-generic-x86_64-with-debian-stretch-sid
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=NJH47B
OUT_DIR=out
============================================

Bauen

$ make -j8 &> makelog_`date "+%Y%m%d_%H%M%S"`.txt

makelog_20170627_010549.txt


...
[ 99% 49532/49533] host C++: primitives_tests_32 <= system/media/audio_utils/tests/primitives_tests.cpp
[100% 49533/49533] host Executable: primitives_tests_32 (out/host/linux-x86/obj32/EXECUTABLES/primitives_tests_intermediates/primitives_tests32)

[0;32m#### make completed successfully (02:12:53 (hh:mm:ss)) ####[00m

Schreiben Sie Android Factory Image in Nexus 9

  1. Laden Sie das Factory Image des Zielterminals wie folgt herunter und dekomprimieren Sie es. https://developers.google.com/android/images (7.1.1 war DL, da 7.1.2 von Nexus 9 (Flunder) nicht verfügbar war)
  2. Führen Sie "adb reboot bootloader" an der Eingabeaufforderung aus 3.1 Führen Sie flash-all.bat in der in 1 entpackten Datei aus.

Schreiben Sie die erstellte system.img und boot.img

Schreiben Sie das Build-Produkt unten. /out/target/product/flounder/system.img /out/target/product/flounder/boot.img

$ adb reboot bootloader
$ fastboot flash boot <boot.Ordnerpfad mit img>/boot.img
$ fastboot flash system <system.Ordnerpfad mit img>/system.img
$ fastboot reboot
Screenshot_20170627-123118.png Screenshot_20170627-123125.png

Hello, World!

Quellenänderung

Passen Sie das Dialogfeld "Hellor, World!" Beim Start an.

Fügen Sie die folgenden Änderungen am Ende von ActivityManagerService # finishBooting ein, das aufgerufen wird, wenn der Startvorgang abgeschlossen ist.

https://android.googlesource.com/platform/frameworks/base/+/android-7.1.2_r17/services/core/java/com/android/server/am/ActivityManagerService.java#finishBooting

ActivityManagerService.java


...
                mUserController.sendBootCompletedLocked(
                        new IIntentReceiver.Stub() {
                            @Override
                            public void performReceive(Intent intent, int resultCode,
                                    String data, Bundle extras, boolean ordered,
                                    boolean sticky, int sendingUser) {
                                synchronized (ActivityManagerService.this) {
                                    requestPssAllProcsLocked(SystemClock.uptimeMillis(),
                                            true, false);
                                }
                            }
                        });
                scheduleStartProfilesLocked();
            }
         }

+        AlertDialog.Builder builder = new AlertDialog.Builder(mContext)
+            .setTitle("Hello, World!");
+        Dialog dialog = builder.create();
+        dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ERROR);
+        dialog.show();
    }

"Bauen Punktgenaue Erstellung des modifizierten Teils

~/AOSP/7.1.2$ mmm frameworks/base/services
...
#### make completed successfully (32 seconds) ####

Das Build-Produkt wird wie folgt ausgegeben

out/target/product/flounder/system/framework/services.jar

Schreiben Sie an das Terminal

Ersetzen Sie services.jar im Terminal durch die erstellte services.jar

$ adb remount
$ adb push <services.Ordnerpfad mit Glas>/services.jar /system/framework/.
$ adb reboot
Screenshot_20170627-124524.png

Recommended Posts

Android OS (7.1.2) Build und Hello World
Erstellen Sie eine Java-Umgebung und geben Sie Hallo Welt aus [Anfänger]
Hallo Welt mit Docker und C Sprache
Hallo Welt mit GWT 2.8.2 und Maven
Hallo Welt in Java und Gradle
Hallo Welt mit Kotlin und Tornado FX
Minimale Java-Umgebungskonstruktion und Hello World
Lesen Sie "Hallo Welt"
Java, Hallo Welt!
Java Hallo Welt
Anfänger versuchen Android Studio Teil 1 (Hello World)
Bis Sie Gradle installieren und "Hello World" ausgeben
"Hallo Welt" in Java
Java lernen (1) -Hallo Welt
Lesen Sie System.out.println ("Hallo Welt")
Schreiben wir Hello World
Hallo Welt in Java
Java-Teil 1-Hallo Welt studieren
Hallo Welt mit Web Assembly
Hallo Welt mit Micronaut
Hallo Welt Vergleich zwischen Spark Framework und Spring Boot
Bis Android Studio-Anfänger "Hello World" auf HUAWEI nova 2 anzeigen
Hallo Welt mit Spring Boot!
Java Hallo Welt, kompilieren, ausführen
Java-Anfänger lesen Hello World
Build Spring für Android 2.0.0
Hallo Welt mit SpringBoot / Gradle
Hallo Welt, mit Asakusa Framework!
[Swift] Erstellen Sie ein Projekt mit Xcode (Version 12.1) und zeigen Sie "Hallo Welt!"
Vergleiche Hallo Welt! Mit Spring Boot mit Java, Kotlin und Groovy
Holen Sie sich die Beschleunigung und Ausrichtung des Weltkoordinatensystems auf Android