wreszelewski / compilation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
#Some references: |
# by Huber Flores: |
# https://gist.github.com/huberflores/4687766 |
# https://gist.github.com/huberflores/9886339 |
# https://gist.github.com/huberflores/4714824 |
# by Hai on StackOverflow: |
# http://stackoverflow.com/questions/14951374/didnt-find-class-foo-on-path-dexpathlist |
# AOSP tutorial: https://source.android.com/source/index.html |
#Create t2.medium instance with 100GB storage |
#Initialize build environment |
sudo add-apt-repository ppa:webupd8team/java |
sudo apt-get update |
sudo apt-get install oracle-java6-installer |
sudo update-java-alternatives -s java-6-oracle |
sudo apt-get install bison g++-multilib git gperf libxml2-utils |
sudo apt-get install git |
sudo apt-get install flex |
sudo apt-get install zip |
sudo apt-get install lib32z1 |
echo «export USE_CCACHE=1» >> ~/.bashrc |
echo «PATH=~/bin:$PATH» >> ~/.bashrc |
#Reload bash in order to apply changes you’ve made |
mkdir ~/bin |
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo |
chmod a+x ~/bin/repo |
mkdir android |
cd android |
#Download source |
repo init -u https://android.googlesource.com/platform/manifest -b android-4.4.4_r2 |
#Command below is time consuming, using screen is recommended. |
#Due to server overload or exceeding quota this command may fail. |
#You should run it again and again to complete it without error message. |
repo sync |
#Building. It may be time consuming, using screen is not necessary but may be helpful. |
prebuilts/misc/linux-x86/ccache/ccache -M 50G |
. build/envsetup.sh |
lunch 2 #aosp-x86_eng (or sth similar) |
make -j4 dalvikvm core dexopt ext framework android.policy services libjavacore |
#After that you should have exec ~/android/out/host/linux-x86/bin/dalvikvm |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
#Some references: |
# by Huber Flores: |
# https://gist.github.com/huberflores/4687766 |
# https://gist.github.com/huberflores/9886339 |
# https://gist.github.com/huberflores/4714824 |
# by Hai on StackOverflow: |
# http://stackoverflow.com/questions/14951374/didnt-find-class-foo-on-path-dexpathlist |
# AOSP tutorial: https://source.android.com/source/index.html |
# by kohviuba on Github: https://github.com/kohviuba/scalingAndroidImages/blob/master/rund.sh |
#Compile dalvikvm |
#Create t1.micro with 8GB free space |
#On bigger machine: |
scp -r ~/android/out ubuntu@10.10.10.10: |
#On micro machine: |
sudo mkdir /opt/android |
sudo mv ~/out /opt/android/ |
#Create file /bin/rund with contents: |
#!/bin/sh |
# base directory, at top of source tree; replace with absolute path |
base=/opt/android |
# configure root dir of interesting stuff |
root=$base/out/host/linux-x86 |
export ANDROID_ROOT=$root |
# configure bootclasspath |
bootpath=$base/out/target/product/generic_x86/system/framework |
export BOOTCLASSPATH=$bootpath/core.jar:$bootpath/ext.jar:$bootpath/framework.jar:$bootpath/android.policy.jar:$bootpath/services.jar |
export LD_LIBRARY_PATH=$bootpath/lib:$LD_LIBRARY_PATH |
# this is where we create the dalvik-cache directory; make sure it exists |
export ANDROID_DATA=/tmp/dalvik_$USER |
mkdir -p $ANDROID_DATA/dalvik-cache |
exec dalvikvm -Xdexopt:none $@ |
sudo ln -s /opt/android/out/host/linux-x86/bin/dx /bin/dx |
sudo ln -s /opt/android/out/host/linux-x86/bin/dalvikvm /bin/dalvikvm |
#Install dependencies: |
sudo add-apt-repository ppa:webupd8team/java |
sudo apt-get update |
sudo apt-get install oracle-java6-installer |
sudo update-java-alternatives -s java-6-oracle |
sudo apt-get install lib32z1 |
sudo apt-get install bison g++-multilib git gperf libxml2-utils |
#Here you can create AMI with Amazon console. |
#Now you can test your installation, create Foo.java: |
public class Foo |
public static void main (String[] args) |
System.out.println(System.currentTimeMillis() + «»); |
System.out.println(«Here we do smt»); |
System.out.println(System.currentTimeMillis() + «»); |
> |
> |
#Compile it: |
javac Foo.java |
#Create dex: |
dx —dex —output=foo.jar Foo.class |
#And run: |
rund -cp foo.jar Foo |
Как собрать/запустить dalvik
Исходники я каким-то чудом таки нашёл тут https://android.googlesource.com/platform (кстати они ли это?). А вот что делать с тем что я оттуда выкачал сильно неясно, мейкфайла нет, ридми нет, растительности нет, населена роботамиандроидами.
Гугл не помог. Есть где-то какое-нибудь руководство?
Собираешь прошивку, прошиваешь прошивку, запускаешь прошивку. Инфа 100%, гайдов — завались.
А тебе нужна виртуализация, еще на прошлой неделе выяснили же.
В том то и дело что мне нафиг не нужна прошивка/виртуализация. Мне нужен далвик, что б запустить его через quemu на арме на нём запустить apkшку и смотреть что отпадывает.
Во всяком случае это мне так сейчас это видится.
В том то и дело что мне нафиг не нужна прошивка/виртуализация. Мне нужен далвик, что б запустить его через quemu на арме на нём запустить apkшку
Отпадет все, починка — пара десятков тысяч человеко-часов.
Во всяком случае это мне так сейчас это видится.
Неправильно видится. Давай начнем с супербазового аргумента — если бы это было нужно и легко — ты бы уже сделал бы это с HOWTO на первой странице гугла по любому мало-мальски связному запросу.
Можешь обяснить для чего мне прошивка?
Отпадет все, починка — пара десятков тысяч человеко-часов
Неправильно видится. Давай начнем с супербазового аргумента — если бы это было нужно и легко — ты бы уже сделал бы это с HOWTO на первой странице гугла по любому мало-мальски связному запросу.
Ты так говоришь как будто при сборки прошивки далвик готовый из /dev/astral выкачается. Всё равно ведь происходит сборка.
Можешь обяснить для чего мне прошивка?
Чтобы запустить это на Android-девайсе и перестать тратить время.
Отпадет все, починка — пара десятков тысяч человеко-часов
Нет, только здравый смысл — откровенно глупо полагать, что Android-приложени зависят только от dalvik’а, а все остальное, что есть в системе, там тупо для красоты.
Ты так говоришь как будто при сборки прошивки далвик готовый из /dev/astral выкачается.
Нет, соберется. И даже сможет функционировать. Но только под Android-userland’ом. Его тоже надо собрать. А как соберешь — запускай виртуалочку или прошивай девайс.
Чтобы запустить это на Android-девайсе и перестать тратить время.
Моё время — хочу трачу. К тому же какой смысл мне запускать что-то на андроид-девайсе если цель запустить это вне андроид-девайса?
Нет, только здравый смысл — откровенно глупо полагать, что Android-приложени зависят только от dalvik’а, а все остальное, что есть в системе, там тупо для красоты.
Боюсь что всё остальное для вендрлока. Я же не собираюсь переписывать весь андроидовский рантайм, мне нужно понять что нужно и подсунуть библиотеки/воткнуть заглушки.
ya-betmen ★★★★★ ( 23.06.15 08:54:50 MSK )
Последнее исправление: ya-betmen 23.06.15 08:55:18 MSK (всего исправлений: 1)
1) нафига эмулятором мучиться? Далвик и под х86 можно собрать.
2) Шукай файлик Android.mk это типа местный Makefile.
нафига эмулятором мучиться? Далвик и под х86 можно собрать.
Ну мне сейчас не принципиально, главное понять как.
Шукай файлик Android.mk это типа местный Makefile.
Угу, это я догадался. Проблема в том, что на http://android.mk/ он так подробно описан, что не осталось места что б описать чем его билдить.
Вот у меня есть у меня android.mk и андроидовкий СДК, а что дальше сижу голову ломаю.
Ну и билдят в NDK с помощью ndk-build.
Спасибо, теперь ясно чего не хватает.
Repo is a tool that makes it easier to work with Git in the context of Android.
Они что нарочно всё через задницу делают?
Тебе уже говорили, что ты полез в дебри. Я могу только присоединится к этому утверждению.
Теперь ты на личном опыте поймешь, что Android != Linux.
С радостью бы не лез, к сожалению за меня это сделать некому.
Мне нужен далвик, что б запустить его через quemu на арме на нём запустить apkшку
Поставь андроид в любую виртуалку (например обычный VB) и запускай что хочешь.
Чувак, это тяжело
В принципе, все это собирабельно. Тот же aapt я осиливал J4F собрать нативный 64х битный. Но 1) мейкфайл будешь писать сам; 2) если какого-нибудь говна будет не хватать – будешь искать его в андроидовских репах и собирать ещё и его.
Короче это сложно. Если нет опыта собирать софт из говна, палок и libastral – лучше забей.
Это для NDK. И можно без него, если обычный мейкфайл руками запилить.
Я так понял что на основе android.mk можно мейк файл состряпать. Если ты такое уже делал, можешь примерчиком поделиться? В смысле оригинальный mk и мейкфайл под него.
У цианогена свои репы или они тоже аосповские пользуют?
ya-betmen ★★★★★ ( 24.06.15 00:23:28 MSK )
Последнее исправление: ya-betmen 24.06.15 00:24:04 MSK (всего исправлений: 1)
Именно так и надо сделать. Есть. Genymotion специально для быстрой (x86) разработки. Для тех кто не торопиться эмулятор псевдо ARM входит в состав SDK.
Dalvik вынули из Android давно — Alien Dalvik. Потратив на это те самые тысячи человекочасов.
Гугли еще Android ART. Если уж решил убить год на сборку чего-то, будь в тренде.
Можно написать Activity почти на голом C++. Поведение Java прослойки тоже важно, но поток событий, холст/контекст EGL можно обработать и без Java.
«Запускать и смотреть что отваливвется» я бы начал с определения цели.
tlx ★★★★★ ( 24.06.15 07:05:47 MSK )
Последнее исправление: tlx 24.06.15 07:07:12 MSK (всего исправлений: 1)
Dalvik вынули из Android давно — Alien Dalvik
Да мало ли, скайп из стартового поста или например опера или какой нить ватсап.
Я слышал про него, но казалось там нужно специально пересобирать приложения. Оказывается нет, фигасе, скайп и опера могут быть запущены через эту штуку не на арме? Вот это интересно.
Java код переносим. Нативные либы можно скомпилировать для всех архитектур и включить в apk, в ущерб его размеру. На Маркет обычно срабатывает автоматическое определение архитектуры и тот же Skype скачается только с либами под неё.
На x86 полно устройств. Intel их даже субсидировал. У меня одно даже на MIPS.
Да кстати, вспомнил: akp в Chrome . Способ не для всех apk.
libhybris тебе, наверное, нужен и прочие куски от mer project. Ты хочешь что-то типа alien davlik замутить? Но его, вроде бы, целая команда разработчиков долго долго пилила. Гугл как-то сделал оригинальный рантайм андроида непортабельным, хоть там и java.
Но его, вроде бы, целая команда разработчиков долго долго пилила.
Подозреваю что большая часть времени ушла на написание осиливание сборки.
Мне то не нужна возможность запускать всё подряд. Мне пары приложений хватит, а значит надо просто заткнуть те вызовы которые этим приложениям нужны.
фигасе, скайп и опера могут быть запущены через эту штуку не на арме? Вот это интересно.
ART это замена Dalvik’а, и на вход принимает байт-код Dalvik’а, а не платформо-зависимые бинарники.
Но вообще-то, портировать приложения с native-компонентами тоже возможно: plasma^W opera не падает
Подозреваю что большая часть времени ушла на написание осиливание сборки
Ты понимаешь, что android != desktop Linux? Там даже ведро передлопачено довольно заметно, а юзерспейс вообще на других принципах построен. Начиная хотя-бы с того, что в ведроиде нету даже libc — зкаместо неё там bionic крутится. То, что ты хлчкшь сделать, сравнимо с запуском elf-бинариков с линукса род маком. Без знаний ты ничего не сделаешь. А знаний у тебя нету, это сразу видно.