しばらく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の場所を指定してあげます。
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を作成してコンパイルしたリソースがダウンロードできるようにとりあえず設定します。
今回はテストなのであんまり気にしません、
<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>