Android dalvik on linux

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-бинариков с линукса род маком. Без знаний ты ничего не сделаешь. А знаний у тебя нету, это сразу видно.

Источник

Читайте также:  Linux unmount usb drive
Оцените статью
Adblock
detector