Edited at

Andorid サーバーコンパイル 

More than 3 years have passed since last update.

しばらくSpringにはまっていたのですが、1年くらい前からやろうと思ってたのでちょっとづつ進めようと思います。

Unityだとアセットローダーみたいな機能が付いているのですが、AndoridSDKだとその辺の機能が弱いので、もっと簡単に動的に機能をガシガシ追加したいですね。

1.事前準備

2.サーバーでのアンドロイドアプリのコンパイル

(3.アプリ内でのクラスロード)

 *これが鬼門すぎるw


1.事前準備

既に入っている方も多いと思いますがコンパイル時のエラーで対処したので一応入れておきます。


1.1 libstdcのインストール

yum install libstdc++.x86_64

yum install libstdc++-devel.x86_64
yum install compat-libstdc++-33.x86_64
yum install libstdc++.i686


1.2 JDKインストール

tools.jarが必要なので事前にJDKを入れてパスを通しておきます。

yum install java-1.8.0-openjdk-devel.x86_64

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64/


1.3 apacheインストール

yum install httpd.x86_64


2.サーバーでのアンドロイドアプリのコンパイル


2.1 Andorid SDK ダウンロード

Linux版のSDKダウンローダーが使えます。

android list sdkとかやってみましょう。

# download platform tools

curl --location http://dl.google.com/android/android-sdk_r22.3-linux.tgz | tar -x -z -C $HOME
export ANDROID_HOME=$HOME/android-sdk-linux
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

# show list
android list sdk --all

# 1- Android SDK Tools, revision 24.4.1
android update sdk -a -u -t 1
# 1- Android SDK Platform-tools, revision 23.0.1
android update sdk -a -u -t 1
# 9- Android SDK Build-tools, revision 21.1.2
android update sdk -a -u -t 9
# 27- SDK Platform Android 5.1.1, API 22, revision 2
android update sdk -a -u -t 27


2.2 Andorid SDKの場所を指定

local.propertiesでサーバー上のAndroidSDKの場所を指定してあげます。


local.properties

cd /home/vagrant/MyAndroid/MyAndroid

vi local.properties
->sdk.dir=/Applications/adt-bundle-mac/sdk
+>sdk.dir=/home/vagrant/android-sdk-linux/

これをやらないと下記のようなエラーで怒られます。


エラー

* Where:

Build file '/home/vagrant/MyAndroid/MyAndroid/app/build.gradle' line: 17

* What went wrong:
A problem occurred evaluating project ':app'.
> SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.


app/build.gradle内の

compileSdkVersion 22

buildToolsVersion "21.1.2"

とバージョンを合わせてあげましょう

# check installed sdk

[vagrant@kalturaadmin MyAndroid]$ ls /home/vagrant/android-sdk-linux/build-tools/
19.1.0 21.1.2
[vagrant@kalturaadmin MyAndroid]$ ls /home/vagrant/android-sdk-linux/platforms/
android-19 android-22


2.3 サポートライブラリ追加

appcompat-v7がないエラーがでるので、Android Support RepositoryとAndroid Support Libraryを追加します。


エラー

> Could not resolve all dependencies for configuration ':app:_debugCompile'.

> Could not find com.android.support:appcompat-v7:22.2.1.
Searched in the following locations:
https://jcenter.bintray.com/com/android/support/appcompat-v7/22.2.1/appcompat-v7-22.2.1.pom
https://jcenter.bintray.com/com/android/support/appcompat-v7/22.2.1/appcompat-v7-22.2.1.jar
Required by:
MyAndroid:app:unspecified

> Could not find com.android.support:design:22.2.1.
Searched in the following locations:
https://jcenter.bintray.com/com/android/support/design/22.2.1/design-22.2.1.pom
https://jcenter.bintray.com/com/android/support/design/22.2.1/design-22.2.1.jar
Required by:
MyAndroid:app:unspecified



インストール

# 144- Android Support Repository, revision 25

android update sdk -a -u -t 144
# 145- Android Support Library, revision 23.1.1
android update sdk -a -u -t 145
# check installed
ls /home/vagrant/android-sdk-linux/extras/android/support


2.4 コードのビルド

rm -fR MyAndroid

git clone https://github.com/MariMurotani/MyAndroid.git
cd MyAndroid
./gradlew build

BUILD SUCCESSFULがみれたら終了です。


おまけ

apacheにVirtualHostを作成してコンパイルしたリソースがダウンロードできるようにとりあえず設定します。

今回はテストなのであんまり気にしません、


host8888.conf

<VirtualHost *:8888>

DocumentRoot /home/vagrant/MyAndroid/MyAndroid/app/build/
ServerName localhost
</VirtualHost>

<Directory "/home/vagrant/MyAndroid/MyAndroid/app/build/">
Options Indexes FollowSymLinks Includes
Order deny,allow
Deny from all
Allow from all
</Directory>


http://192.168.3.3:8888/intermediates/classes/release/com/example/mari/myandroid/TestDinamicLoad.class