- Cross-compiling and debugging for ARM/Android
- Using gm #
- Manual build #
- Debugging #
- Logging #
- Floating-point issues #
- Using Sourcery G++ Lite #
- Installing on host and target #
- Profile #
- Android build on arm
- Android build on arm
- Создание пакетов APK x86 и ARM APK с помощью компилятора Intel® и GNU gcc
- Подготовка среды сборки
- Сборка из командной строки
- Сборка в интегрированной среде разработки Eclipse
- Примечание о невыполнении очистки двоичных файлов в .\libs\[targetabi]
- Прочие статьи по теме и ресурсы
Cross-compiling and debugging for ARM/Android
First, make sure you can build with GN.
Then, add android to your .gclient configuration file.
The target_os field is a list, so if you’re also building on unix it’ll look like this:
Run gclient sync , and you’ll get a large checkout under ./third_party/android_tools .
Enable developer mode on your phone or tablet, and turn on USB debugging, via instructions here. Also, get the handy adb tool on your path. It’s in your checkout at ./third_party/android_sdk/public/platform-tools .
Using gm #
Use the tools/dev/gm.py script to automatically build V8 tests and run them on the device.
This command pushes the binaries and tests to the /data/local/tmp/v8 directory on the device.
Manual build #
Use v8gen.py to generate an ARM release or debug build:
Then run gn args out.gn/arm.release and make sure you have the following keys:
The keys should be the same for debug builds. If you are building for an arm64 device like the Pixel C, which supports 32bit and 64bit binaries, the keys should look like this:
Use adb to copy the binary and snapshot files to the phone:
Debugging #
Remote debugging d8 on an Android device is relatively simple. First start gdbserver on the Android device:
Then connect to the server on your host device.
gdb and gdbserver need to be compatible with each other, if in doubt use the binaries from the Android NDK. Note that by default the d8 binary is stripped (debugging info removed), $OUT_DIR/exe.unstripped/d8 contains the unstripped binary though.
Logging #
By default, some of d8 ’s debugging output ends up in the Android system log, which can be dumped using logcat . Unfortunately, sometimes part of a particular debugging output is split between system log and adb , and sometimes some part seems to be completely missing. To avoid these issues, it is recommended to add the following setting to the gn args :
Floating-point issues #
The gn args setting arm_float_abi = «hard» , which is used by the V8 Arm GC Stress bot, can result in completely nonsensical program behavior on hardware different from the one the GC stress bot is using (e.g. on Nexus 7).
Using Sourcery G++ Lite #
The Sourcery G++ Lite cross compiler suite is a free version of Sourcery G++ from CodeSourcery. There is a page for the GNU Toolchain for ARM Processors. Determine the version you need for your host/target combination.
The following instructions use 2009q1-203 for ARM GNU/Linux, and if using a different version please change the URLs and TOOL_PREFIX below accordingly.
Installing on host and target #
The simplest way of setting this up is to install the full Sourcery G++ Lite package on both the host and target at the same location. This will ensure that all the libraries required are available on both sides. If you want to use the default libraries on the host there is no need the install anything on the target.
The following script installs in /opt/codesourcery :
Profile #
Compile a binary, push it to the device, keep a copy of it on the host:
Get a profiling log and copy it to the host:
Open v8.log in your favorite editor and edit the first line to match the full path of the d8-version.under.test binary on your workstation (instead of the /data/local/tmp/v8/bin/ path it had on the device)
Run the tick processor with the host’s d8 and an appropriate nm binary:
Except as otherwise noted, any code samples from the V8 project are licensed under V8’s BSD-style license. Other content on this page is licensed under the Creative Commons Attribution 3.0 License. For details, see our site policies.
Источник
Android build on arm
Инструкции по сборке Android из исходников
Мануалы в помощь новичку и обсуждение для гуру!
Описание | Старая шапка | Собираем ядро для MTK | Первая помощь | Редактирование системных ресурсов Android | Средство обработки прошивок
Что такое ADB и с чем его едят, читаем тут. Отследить новую версию ADB можно в репо от Google.
ADB для Winodws — Скачать sha1:52b4816990d2d18a34645bbf20a31b38a7859d4c
ADB для Linux — Скачать sha1:31078104e5927d823c28550c01275c437a87def7
ADB для MacOSx — Скачать sha1:1403fa0d1bb57ec31170d7905e8505e3b0ed05ee
Что такое маркет и с чем его едят, читайте в этой теме.
Android 4.1.*: microgapps скачать
Android 4.2.*: microgapps Скачать
Android 4.3.*: microgapps Скачать
Android 4.4 : ART microgapps Скачать
Android 4.4.1: ART microgapps Скачать
Android 4.4.2: ART microgapps Скачать
Android 5.0.2: ART microgapps Скачать
Android 5.0.2: ART microgapps Скачать By Mansi
Android 5.1.0: ART minigapps Скачать faq
microgapps — пакет Google Apps с самым основным, только Google Play и framework. Остальное можно установить из Google Play.
minigapps — Пакет Google Apps с самым основным набором ПО от Google.
ART — совместимы с ART режимом, появился в версиях Android 4.4 KitKat.
FlymeOS 5/6 от rocker123
Скачать Огромная коллекция на XDA 4.x-6.x
Скачать OmniRom + Prebuilts 4.x-6.x От ctavropoholb
Скачать Qualcomm MSM8974 и MSM8939 От acdev
Скачать MIUI PatchRom miui5-7 От ctavropoholb
Скачать CyanogenMod 10.1 — 13 4.х.х-6.х.х От ctavropoholb
Скачать CyanogenMod 12.1 android-5.1.1_r18 От SteelBreaker
Скачать Prebuilts AOSP 5.0.x От assusdan
Скачать MIUI PatchRom KitKat v6 От vgdn1942
Скачать AOSP mirror repo От wladimir_tm
Скачать AOSP, AOKP, CM, MIUI 4.4.4 От vaibhavpandeyvpz
Скачать CyanogenMod 11 4.4.4 От Никита Pro Android
Скачать CyanogenMod 10 4.1 От Scorpio92666
Скачать CyanogenMod 7.2.0 2.3.x От pryanya96
Скачать AOSPA ParanoidAndroid 4.4.4 От mrAlmid
Скачать Ubuntu phablet 4.4.2_r1 От Каточимото
Скачать repo snapshots cm-10.2 — android5.1 От wladimir_tm
После чего, качаем исходники командой repo sync
Источник
Android build on arm
Инструкции по сборке Android из исходников
Мануалы в помощь новичку и обсуждение для гуру!
Описание | Старая шапка | Собираем ядро для MTK | Первая помощь | Редактирование системных ресурсов Android | Средство обработки прошивок
Что такое ADB и с чем его едят, читаем тут. Отследить новую версию ADB можно в репо от Google.
ADB для Winodws — Скачать sha1:52b4816990d2d18a34645bbf20a31b38a7859d4c
ADB для Linux — Скачать sha1:31078104e5927d823c28550c01275c437a87def7
ADB для MacOSx — Скачать sha1:1403fa0d1bb57ec31170d7905e8505e3b0ed05ee
Что такое маркет и с чем его едят, читайте в этой теме.
Android 4.1.*: microgapps скачать
Android 4.2.*: microgapps Скачать
Android 4.3.*: microgapps Скачать
Android 4.4 : ART microgapps Скачать
Android 4.4.1: ART microgapps Скачать
Android 4.4.2: ART microgapps Скачать
Android 5.0.2: ART microgapps Скачать
Android 5.0.2: ART microgapps Скачать By Mansi
Android 5.1.0: ART minigapps Скачать faq
microgapps — пакет Google Apps с самым основным, только Google Play и framework. Остальное можно установить из Google Play.
minigapps — Пакет Google Apps с самым основным набором ПО от Google.
ART — совместимы с ART режимом, появился в версиях Android 4.4 KitKat.
FlymeOS 5/6 от rocker123
Скачать Огромная коллекция на XDA 4.x-6.x
Скачать OmniRom + Prebuilts 4.x-6.x От ctavropoholb
Скачать Qualcomm MSM8974 и MSM8939 От acdev
Скачать MIUI PatchRom miui5-7 От ctavropoholb
Скачать CyanogenMod 10.1 — 13 4.х.х-6.х.х От ctavropoholb
Скачать CyanogenMod 12.1 android-5.1.1_r18 От SteelBreaker
Скачать Prebuilts AOSP 5.0.x От assusdan
Скачать MIUI PatchRom KitKat v6 От vgdn1942
Скачать AOSP mirror repo От wladimir_tm
Скачать AOSP, AOKP, CM, MIUI 4.4.4 От vaibhavpandeyvpz
Скачать CyanogenMod 11 4.4.4 От Никита Pro Android
Скачать CyanogenMod 10 4.1 От Scorpio92666
Скачать CyanogenMod 7.2.0 2.3.x От pryanya96
Скачать AOSPA ParanoidAndroid 4.4.4 От mrAlmid
Скачать Ubuntu phablet 4.4.2_r1 От Каточимото
Скачать repo snapshots cm-10.2 — android5.1 От wladimir_tm
После чего, качаем исходники командой repo sync
Источник
Создание пакетов APK x86 и ARM APK с помощью компилятора Intel® и GNU gcc
Существуют устройства Android на процессорах с архитектурами наборов инструкций (ISA) ARM или x86. Различные архитектуры наборов инструкций не имеют двоичной совместимости, поэтому приложение, содержащее нативный код, должно содержать нативные библиотеки для каждой архитектуры. Одним из механизмов распространения таких приложений являются так называемые «толстые» пакеты приложений Android («толстые» APK).
В этой статье содержатся пошаговые инструкции по созданию такого «толстого» пакета APK, включающего независимые от архитектуры файлы для виртуальной машины Dalvik (Dalvik, 2013), а также библиотеки для разных архитектур. В статье описывается сборка нативной библиотеки приложения x86 с помощью Intel Integrated Native Developer Experience (INDE).
Для демонстрации используем пример hello-jni из дистрибутива NDK r10 (входящий в состав установки Intel INDE).
Подготовка среды сборки
2) для program files (x86).
3. Создайте новую переменную среды:
JAVA_HOME=[jdk7-dir].
4. Установите:
пакет Intel Integrated Native Developer Experience должен быть установлен в [inde-dir].
5. Добавьте эту папку в переменную среды PATH:
каталог [ant-dir]\bin для использования средства ant (расположение [ant-dir] по умолчанию: [inde-dir]\IDEintegration)
Сборка из командной строки
В этом разделе содержатся инструкции по созданию пакетов APK для поддержки устройств Android с архитектурой ARM и x86 в среде сборки с командной строкой.
Откройте окно командной строки или окно терминала в Linux; перейдите в папку примеров Android NDK «hello-jni» [ndk-dir]\samples\hello-jni; выполните следующие действия.
Примечание. Все средства, перечисленные в разделе выше, должны быть доступны из этого окна.
1. Настройка приложения
Выполните следующую команду в папке hello-jni для создания файла build.xml, который будет впоследствии использован для сборки примера.
Примечание. —target android-19 соответствует версии Android 4.4 (KITKAT).
2. Очистка рабочей области приложения
Используйте следующую команду для очистки всей рабочей области, включая библиотеки, для всех архитектур ISA.
Примечание: V=1: печать всех команд по мере их выполнения. APP_ABI=all: принудительная очистка всех промежуточных файлов для всех целевых платформ. Если не указать этот параметр, будет очищен только файл для целевой платформы armeabi.
3. Сборка двоичных файлов для архитектуры ARM
Используйте указанную ниже команду для сборки двоичного файла приложения для архитектуры ARM:
Примечание: APP_ABI=armeabi-v7a: настройка компиляции для целевой платформы ARM. NDK_TOOLCHAIN=arm-linux-androideabi-4.8: вместо используемого по умолчанию GNU gcc 4.6, используется gcc 4.8.
Двоичный файл приложения (libhello-jni.so) создается по адресу .\libs\armeabi-v7a\libhello-jni.so.
4. Сборка двоичных файлов для архитектуры x86 с помощью компилятора Intel
Используйте указанную ниже команду для сборки двоичного файла приложения для архитектуры x86 с помощью компилятора Intel.
Примечание: APP_ABI=x86: настройка компиляции для архитектуры x86. NDK_TOOLCHAIN=x86-icc: замена используемого по умолчанию компилятора gcc 4.6 на компилятор Intel C/C++ для Android. NDK_APP.local.cleaned_binaries=true: отмена удаления библиотеки в каталоге libs/armeabi. См. примечания ниже.
Двоичный файл приложения (libhello-jni.so) создается по адресу .\libs\x86\libhello-jni.so.
5. Подготовка пакета приложения (APK)
После сборки всех двоичных файлов для каждой целевой платформы Android убедитесь, что папка libs\[targetabi] содержит требуемые библиотеки для каждой целевой архитектуры.
Чтобы упростить создание пакета и избежать его подписания, используйте следующую команду для создания отладочного пакета.
После этого новый пакет HelloJni-debug.zip появится в папке .\bin. Его можно запустить в имитаторах x86 или ARM, поддерживающих API уровня 19 или выше, содержащихся в Android SDK.
Пакет HelloJni-debug.zip содержит библиотеки для двух целевых платформ: ARM EABI v7a и x86.
Сборка в интегрированной среде разработки Eclipse
1. Откройте Eclipse и загрузите пример [inde-dir]/IDEintegration/NDK/samples/hello-jni.
В меню выберите File > New > Project > Android.
Нажмите кнопку Android Project from Existing Code.
В поле Root Directory нажмите кнопку Browse. и выберите папку [ndk-dir]/samples.
Затем щелкните Deselect All и выберите только нужный проект: hello-jni
Снимите флажок Copy projects into workspace.
Нажмите кнопку Finish.
2. Добавьте в проект поддержку нативного кода.
Щелкните имя проекта правой кнопкой мыши и выберите Android Tools > Add Native Support.
Нажмите кнопку Finish.
Примечание. Если после этого шага на консоли появляется сообщение об ошибке Unable to launch cygpath, этот шаг можно пропустить, что не повлияет на проект.
3. Создайте отдельную конфигурацию сборки для каждой целевой платформы, задайте команду сборки.
Щелкните проект правой кнопкой мыши и выберите Project properties -> C/C++ Build -> Manage configurations.
Щелкните New. , чтобы добавить новые конфигурации на основе конфигурации по умолчанию.
Имя: x86_icc Описание: для целевой платформы x86 с помощью компилятора Intel icc
Имя: arm_gcc Описание: для целевой платформы ARM с помощью компилятора GNU gcc
В этом же окне свойств проекта установите для параметра Configuration значение x86_icc.
Снимите флажок Use default build command.
Добавьте следующий текст в поле Build command: ndk-build APP_ABI=x86 NDK_TOOLCHAIN=x86-icc.
Щелкните Apply.
В этом же окне свойств проекта установите для параметра Configuration значение arm_gcc.
Снимите флажок Use default build command.
Добавьте следующий текст в поле Build command: ndk-build APP_ABI=armeabi-v7a NDK_TOOLCHAIN=arm-linux-androideabi-4.8.
Нажмите кнопку Apply, затем нажмите кнопку ОК.
4. Очистка всей рабочей области приложения
Если файл Application.mk существует в папке [eclipse-workspace-dir]\HelloJni\jni, убедитесь, что он не содержит следующую строку.
NDK_APP.local.cleaned_binaries=true
Щелкните проект правой кнопкой мыши и выберите Build configurations > Clean all….
5. Создайте файл Application.mk в папке [eclipse-workspace-dir]\HelloJni\jni, если он не существует, и убедитесь, что он содержит следующую строку.
NDK_APP.local.cleaned_binaries=true
6. Соберите двоичный файл для целевой архитектуры ARM* с помощью gcc и для целевой архитектуры x86 с помощью компилятора Intel.
Щелкните проект правой кнопкой мыши и выберите Build Configurations > Build Selected.
Выберите arm_gcc и x86_icc.
Нажмите кнопку ОК.
Проверьте выходные двоичные файлы по следующим адресам.
[eclipse-workspace-dir]\HelloJni\libs\armeabi-v7a\libhello-jni.so
[eclipse-workspace-dir]\HelloJni\libs\x86\libhello-jni.so
7. Создание неподписанных пакетов приложений
Щелкните проект правой кнопкой мыши и выберите Android Tools > Export Unsigned Application Package.
Примечание о невыполнении очистки двоичных файлов в .\libs\[targetabi]
Параметр NDK_APP.local.cleaned_binaries=true для отключения удаления собранных ранее библиотек может не работать в будущих версиях NDK. См. [ndk-dir]/build/core/setup-app.mk для получения информации о том, как отключить действия удаления для установленных двоичных файлов.
Прочие статьи по теме и ресурсы
Дополнительные сведения о средствах Intel для разработчиков Android см. на сайте Intel Developer Zone for Android.
Источник