Themes Ubuntu

thumbnail

Shashlik - aplicativos do Android no Linux

Desenvolvedores do KDE estão trabalhando em Shashlik, um ambiente simulado Android que permitirá aos usuários executar qualquer tipo de aplicações Android no Linux.
Shashlik
Shashlik

Embora o Android está usando um kernel Linux não pode executar aplicativos em Linux nativamente. A equipe do KDE quer construir um ambiente virtual para executar aplicativos Android no topo do Linux. Durante o próximo Akademy 2015 evento no final deste mês a equipe vai mostrar outros desenvolvedores mais sobre este projeto. Aqui está um extrato do anouncement;
"Obter uma introdução à plataforma técnica que constitui o Android Shashlik lançador de aplicativos, e uma breve descrição do como eo porquê. E, claro, uma demo do mesmo, e informações sobre como você pode obtê-lo a si mesmo e executar aplicativos Android em seu próprio sistema. "


Este arquivo descreve como construir Shashlik, o ambiente Android simulado.



Obtendo os fontes
===================

Shashlik usa Dalvik, o intérprete runtime Android, para executar o
aplicações. Além do próprio Dalvik precisamos ter um número de
dependências da árvore fonte Google Android para ser capaz de construir
isto.

Dalvik é normalmente construído dentro da árvore fonte Android completa e queremos
minimizar a árvore de dependência quando a construção em um sistema Linux normal. Aqui está
a lista de fontes que são necessários para construir Shashlik. Para cada componente
abaixo, você deve ser capaz de simplesmente cortar e colar as linhas de comando em um shell.

As árvores de origem deve ser colocado ao lado do outro num subdirectório comum,
por exemplo, $ HOME / SHASHLIK ou algo similar. No resto desse arquivo vamos
assumir que você está usando este local. Se não, você terá que ajustar o
instruções abaixo conformidade.

CD
mkdir SHASHLIK
cd SHASHLIK

Crie o diretório principal para as fontes. Recomendamos a utilização de um separado
diretório para a árvore de origem, porque você também terá o diretório de instalação
a este nível (veja abaixo em Gerando as fontes).

mkdir src
cd src

Em seguida, proceder ao download do Git e SVN repositórios da seguinte maneira.


1. Os 9 repositórios do projeto no github. Shashlik

Shashlik tem 8 repos das fontes Google Android copiados para Github. Estes
8 repos são Dalvik, Android Core, Android Libcore, Frameworks Native, Frameworks Base,
libnativehelper, telefonia e skia.
As alterações nesses repositórios será mantido tão pequeno quanto possível, de modo que ele vai
ser mais fácil de atualizar para uma versão posterior mais tarde. O principal código escrito para Shashlik
é criado no dia 9 de repositório do projeto denominado (surpresa!) shaslik.

A página principal do projeto é https://github.com/shashlik. Aqui
encontrar links para todos os 9 repositórios. Uma vez que os repos shashlik são particulares você
terá de dar o seu nome de usuário e senha para cloná-los.

git clone https://github.com/shashlik/shashlik.git
git clone --branch shashlik-kitkat https://github.com/shashlik/dalvik.git
git clone --branch shashlik-kitkat https://github.com/shashlik/android-core.git
git clone --branch shashlik-kitkat https://github.com/shashlik/android-libcore.git
git clone --branch shashlik-kitkat https://github.com/shashlik/android-frameworks-native.git
git clone --branch shashlik-kitkat https://github.com/shashlik/android-frameworks-base.git
git clone --branch shashlik-kitkat https://github.com/shashlik/android-libnativehelper.git
git clone --branch shashlik-kitkat https://github.com/shashlik/android-telephony.git
git clone --branch shashlik-kitkat https://github.com/shashlik/android-skia.git

2. seguro-iop

Seguro IOP é também uma biblioteca do Google, que é descrito como este sobre o projeto
home page no https://code.google.com/p/safe-iop/:

"Esta biblioteca fornece um conjunto de funções (com base em macro) para
realização de operações com números inteiros seguras em toda a plataforma e arquitetura com um
API simples. "

Esta biblioteca é mantido em subversão. Para verificá-la, faça o seguinte:

svn checkout http://safe-iop.googlecode.com/svn/trunk/ seguro-iop
cd seguro-iop
svn mudar http://safe-iop.googlecode.com/svn/tags/r0.3.1
cd ..

Nós vamos usar uma versão específica, neste caso 0.3.1, para obter uma plataforma estável.
Esta é a razão para o interruptor SVN.


3. biônico

Bionic é uma derivação do código da biblioteca C padrão do BSD, que era
originalmente desenvolvido pela Google para o seu Android [2] sistema operacional
(Wikipedia). É uma versão enxuta do libc que contém exatamente o que
é necessária no Android. É necessário construir Dalvik, embora haja uma
projeto à porta Dalvik a GNU libc.

Há um projeto chamado dvk (https://code.google.com/p/dvk/), cujo objetivo é
à porta Dalvik para outras arquiteturas de CPU e longe de precisar biônico, mas nós
não ter ido por esse caminho.

git clone https://android.googlesource.com/platform/bionic

Nós usamos a tag kitkat para um presente, ou seja, você precisa executar:

cd bionic
git checkout android-4.4.4_r2.0.1
cd ..

que vai deixar você com uma cabeça destacada


4. openssl

openssl é a biblioteca secure socket layer estréia usado por projetos de software livre,
android e fez algumas modificações para isso que o torna difícil de simplesmente
usar o fornecido pela maioria das distribuições Linux. Então, usamos theit versão modificada.

git clone https://android.googlesource.com/platform/external/openssl
cd openssl
git checkout android-4.4.4_r2.0.1
cd ..

5. bibliotecas ext

Um conjunto de bibliotecas Java utilizado por android e embalados juntos em um frasco.

git clone https://android.googlesource.com/platform/external/nist-sip
git clone https://android.googlesource.com/platform/external/apache-http
git clone https://android.googlesource.com/platform/external/tagsoup
git clone https://android.googlesource.com/platform/external/libphonenumber
git clone https://android.googlesource.com/platform/external/okhttp
git clone https://android.googlesource.com/platform/external/bouncycastle

para tudo o que precede:
cd nist-gole
git checkout android-4.4.4_r2.0.1
cd ..
cd apache-http
git checkout android-4.4.4_r2.0.1
cd ..
cd TagSoup
git checkout android-4.4.4_r2.0.1
cd ..
cd libphonenumber
git checkout android-4.4.4_r2.0.1
cd ..
cd okhttp
git checkout android-4.4.4_r2.0.1
cd ..
cd bouncycastle
git checkout android-4.4.4_r2.0.1
cd ..

6. Os requisitos JNI

git clone https://android.googlesource.com/platform/frameworks/opt/net/voip
git clone https://android.googlesource.com/platform/external/liblzf
git clone https://android.googlesource.com/platform/external/protobuf
git clone https://android.googlesource.com/platform/external/sqlite
git clone https://android.googlesource.com/platform/frameworks/opt/emoji android-emoji
git clone https://android.googlesource.com/platform/build android-build
cd voip
git checkout android-4.4.4_r2.0.1
cd ..
cd liblzf
git checkout android-4.4.4_r2.0.1
cd ..
cd protobuf
git checkout android-4.4.4_r2.0.1
cd ..
cd sqlite
git checkout android-4.4.4_r2.0.1
cd ..
cd android-emoji
git checkout android-4.4.4_r2.0.1
cd ..
cd android-build
git checkout android-4.4.4_r2.0.1
cd ..

Exigimos também a versão Android 5.1 do libhardware e mestre chefe do android
núcleo (por libbase)
git clone https://android.googlesource.com/platform/hardware/libhardware
git clone https://android.googlesource.com/platform/system/core core-cabeça
cd libhardware
git checkout android-5.1.0_r1
cd ..

As seguintes bibliotecas não são usados ​​atualmente, mas será necessária uma vez Renderscript
apoio é funcional.
git clone https://android.googlesource.com/platform/frameworks/compile/libbcc
git clone https://android.googlesource.com/platform/frameworks/rs
cd libbcc
git checkout android-4.4.4_r2.0.1
cd ..
rs cd
git checkout android-4.4.4_r2.0.1
cd ..

7. bibliotecas gráficas de assistência

Essas bibliotecas são uma tentativa de obter SurfaceFlinger para trabalhar em Linux normal, e assim por
nós pegar carona em que trabalho. Pequenas mudanças foram feitas para o módulo drm_gralloc, e
até aqueles que são upstreamed ou de outra forma fixa, mantemos um clone local ele.

git clone https://android.googlesource.com/platform/hardware/libhardware_legacy
git clone git: //anongit.freedesktop.org/mesa/mesa
git clone https://github.com/shashlik/drm_gralloc.git
cd drm_gralloc
git checkout lollipop-x86
cd ..

A seguir, são de https://wiki.linaro.org/BenjaminGaignard/HWComposer_DRM e
eles são uma parte de uma tentativa de fazer as coisas que funcionam em um linux sangue completo, bem
é claro que se alinha muito bem com os nossos esforços.

git clone git: //git.linaro.org/people/benjamin.gaignard/gralloc.git
git clone https://github.com/shashlik/hwcomposer-linaro.git hwcomposer

8. Gentroid

Este código é um clone e a modificação do código gentroid, utilizado no ramo leinir2
para construir jni

git clone https://github.com/shashlik/gentroid-frameworks-base.git

9. JarJar

Esta é uma ferramenta utilizada para fazer modificações em arquivos JAR, como a deslocalização pacotes
para outros sub-domínios (por exemplo, org.conscrypt. * torna-se com.android.conscrypt ...).

Deixe este arquivo no diretório fonte base para o sistema de compilação pode encontrá-lo. Como google
código está sendo desligado, este pode precisar de mudar em algum ponto (existem outros espelhos,
mas este é o endereço de liberação canônica para o arquivo)

wget https://jarjar.googlecode.com/files/jarjar-1.4.jar

Construindo das Fontes
====================

O objetivo do Shashlik é criar um autônomo runtime Android
ambiente. Isto significa basicamente Dalvik com uma série de recursos de suporte
tais como sensores emuladas e uma tela.

Si dalvik precisa de um número de classes de suporte e outras partes de bibliotecas
das fontes Android. Infelizmente-se as dependências arrastar em mais
dependências e assim por diante até que a maioria do Android está presente. Acontece que
O próprio Dalvik não usar que muitas classes e funções na dependência
bibliotecas isso selecionando a construir apenas as classes que são realmente necessários
podemos manter baixo o número de repositórios que precisamos check-out.

Nesta descrição assumimos que você tenha baixado as fontes acima e
que todos eles estão em $ HOME / shashlik.

Neste momento as instruções supõem que você está construindo em um Linux padrão
sistema de desktop com um kit de desenvolvimento de software instalado. Consulte o seu
distribuição sobre como instalar esse. Tanto quanto sabemos não há nenhum
distribuição problemas ou peculiaridades específicas.


Pré-requisitos
-------------

Além de usar um sistema Linux normal de desenvolvimento (marca, gcc, etc) que você precisa
uma variedade de componentes que podem não estar no everybodys computadores:
- CMake, versão 2.8.8 mínimo
- Qt 5.3
- KDE Frameworks 5 (KF5), especificamente os seguintes módulos:
I18n WindowSystem Serviço Pacote declarativa Plasma PlasmaQuick Wayland
- Cabeçalhos do Kernel
- Versão Java SDK 6 (ou mais recente, estamos apenas forçando-alvo / source)
- Flex e bison

- Cabeçalhos de desenvolvimento de 32 bits para as seguintes bibliotecas, utilizados pela VM android
Fontconfig
Freetype
giflib
libjpeg62
libwebp
libpng - versão 1.2
harfbuzz
glu-devel
libcap
zlib-devel
ffi
icuuc
icui18n
expatriados
cripto
openssl
Qt5Core
GLESv2
GLESv1_CM
selinux
Wayland EGL
Qt 5.3 módulos: Core, Gui, Widgets, X11Extras
Nota! Todas as bibliotecas acima deve ser versões de 32 bits, tal como são utilizados pela
(sempre) de 32 bits android runtime

para o openSUSE, você pode executar os seguintes comandos para conseguir o que você precisa:
sudo zypper install -t padrão devel_c_cpp devel_java devel_qt5 devel_kde_frameworks
sudo zypper instalar libharfbuzz0-32bit libharfbuzz-icu0-32bit glibc-devel-32bit \
libstdc ++ - devel-32bit-32bit gcc gcc-c ++ - 32bit libwebp-devel libwebpdecoder1-32bit \
libwebpdemux1-32bit libwebpmux1-32bit fontconfig-devel-32bit zlib-devel-32bit \
freetype2-devel-32bit glu-devel-32bit giflib-devel-32bit libpng12-devel-32bit \
libpng12-compat-devel-32bit libjpeg62-32bit libjpeg62-devel-32bit \
libicu-devel-32bit libdrm-devel-32bit libcap-devel \
libQt5Core-devel-32bit libffi48-devel-32bit libexpat-devel-32bit libopenssl-devel-32bit \
java-1_7_0-openjdk-devel JarJar libselinux-devel \
libQt5Widgets-devel-32bit-libqt5-qtx11extras-devel 32bit \
libwayland-egl-devel-32bit kwayland-devel-32bit

Esta instrução será daqui em supor que você tenha estes instalados
corretamente. Se não, você terá que instalá-los (provavelmente construir-se)
usando suas respectivas instruções de instalação.

NOTA: Mesmo depois de instalar Qt5.3 e KF5 corretamente para o uso normal você vai
ainda tem que adicionar uma variável de ambiente específica para ser capaz de usá-los
para o desenvolvimento usando CMake:

CMAKE_PREFIX_PATH exportação = $ KF5: $ CMAKE_PREFIX_PATH

Sugerimos também para criar uma variável de ambiente com o caminho do
SHASHLIK diretório superior.

SHASHLIK exportação = $ HOME / SHASHLIK

No restante deste documento usaremos essa variável em nossos exemplos.


Ramos
--------

Estamos tentando minimizar as mudanças em cada componente, tanto quanto
possível. No entanto, algumas alterações são necessárias e não podem ser evitados. Assim, para
cada dependência que não precisa ser mudado, nós criamos um ramo chamado
shashlik-kitkat.

Alguns dos componentes têm etiquetas de libertação que estamos usando para que possamos ter
uma compilação estável. Aqui está uma lista das ramificações e marcas que estamos usando. E se
de ter verificado os repositórios usando os comandos indicados acima eles
deve estar no ramo correto já.

* Shashlik: master ramo
* Dalvik: ramo shashlik-kitkat
* Android-core: ramo shashlik-kitkat
* Android-libcore: ramo shashlik-kitkat
* Android-estruturas nativo: ramo shashlik-kitkat
* Android-estruturas de base de: ramo shashlik-kitkat

* Estruturas de nativo ramo kitkat-lançamento
* Seguro-iop: tag http://safe-iop.googlecode.com/svn/tags/r0.3.1
* Libnativehelper: ramo kitkat-lançamento
* Biônico: tag android-4.4.4_r2.0.1
* Skia: tag android-4.4.4_r2.0.1
* Openssl: tag android-4.4.4_r2.0.1

Como você pode ver acima, a própria shashlik repo é aquela em que tentamos colocá
todas as nossas mudanças de modo que deve ser mestre no ramo, a menos que você está trabalhando
em alguma característica nova em um ramo de funcionalidade.


Construção
--------

Edifício Shashlik é um pouco mais complicado do que a construção de uma fonte normal,
árvore. Isto é porque nós estamos tomando fontes da árvore de origem e Android
construí-los de uma forma que eles não são projetados para.

Você pode instalar em qualquer lugar que você gosta, basicamente, mas é altamente recomendável que você
fazê-lo através da criação de um SHASHLIK / diretório de instalação. Note-se que o diretório de instalação
deve ser _outside_ a árvore de origem repo shashlik mas sob o top SHASHLIK
diretório.

cd $ SHASHLIK
mkdir instalar

Para a construção, o procedimento é, em si, semelhante à forma como você normalmente compilar
qualquer outro projeto baseado cmake, no entanto, a estrutura de diretório é vital. o
sistema de construção espera que a localização das fontes de ser como sugerido em Getting
As fontes acima. Em outras palavras, você deve ter uma estrutura de diretório
semelhante ao seguinte árvore. Aqueles marcados com * são diretórios que deveria
criar, todos os outros são clones git (e que check-out um svn):

+ SHASHLIK *
+ Instalar *
+ Src *
+ Android-core
+ Android-frameworks-nativas
+ Android-estruturas base
+ Android-libcore
+ Biônico
+ Dalvik
+ Libnativehelper
+ Safe-iop
+ (Etc, outros checkouts)
+ Shashlik
+ Construção *


Finalmente você vai ter que construir as fontes shashlik que dependem do selecionado
Bibliotecas Android que foram criados no diretório builddeps. Isto é feito
no $ SHASHLIK / src / shashlik / construção / diretório e é muito fácil:

cd $ SHASHLIK / src / shashlik / build
cmake .. -DCMAKE_INSTALL_PREFIX = $ SHASHLIK / install
make install


O controle principal para o shashlik android tempo de execução é shashlik-controlador, o
única binário instalado fora da raiz do android. Executar este comando com --help
para ver que opções você tem. Este binário atualmente faz suposições sobre
a configuração do seu sistema. Estes pressupostos será removido numa data posterior.

Para executar um aplicativo, execute o seguinte:
shashlik-controlador --start
shashlik-controlador --launchapk = / path / to / apk-file.apk
 Advertise with Anonymous Ads

Subscribe by Email

Follow Updates Articles from This Blog via Email

No Comments

About

Monetize your website traffic with yX Media