LoginSignup
1
1

More than 5 years have passed since last update.

Andorid サーバーコンパイル 

Last updated at Posted at 2015-12-06

しばらく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>

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1