CUIでのapk作成 ~ 環境設定編
はじめに
ビルドだけするならEclipseは重すぎる、と言う理由から、
CIも視野にいれての前提となる環境に設定の調査を行いました。
設定するサーバの環境の確認
- AWS
- CentOS
既知の情報は上記レベルなので、下調べが必要でした。
32bitか64bitか
$uname -a
サーバは64bitでしたので、以降はすべて64bitでの設定をおこなっています。
ディスク容量の確認
$ df
容量が大きすぎるフォルダを探すときに使う
$ du | sort -nr
ライブラリ周り
こちらはSDKをインストール後にant実行時にエラーが表示され、その対応を書いたものです
$ yum list | grep libstdc++
$ yum whatprovides libstdc++.so.6
$ sudo yum install libstdc++48-4.8.2-7.87.amzn1.i686
インストールするものの準備
- Java
- ANT
- SDK
Java
java6のJDKを Oracle Java Archive からダウンロードします。
http://www.oracle.com/technetwork/java/archive-139210.html
ダウンロードにはメールでの送信確認を含むユーザ登録が必要でした。
jdk-6u45-linux-x64.binをダウンロード
画面の Accept Licence Agreement を選択する必要があります。
ANT
こちらから、Binary Distribution をつかいました。
http://ant.apache.org/bindownload.cgi
SDK
Linux32&64bit を選びました。
インストール
自分のホームディレクトリにandroidというディレクトリを作成して
今回の設定に関係するところをまとめています。
Java
もとの環境には別のJavaがはいっているため、あまり干渉しないように設定をします
はいっているjavaの置き場所を確認
$ which java
サイトからダウンロードしたファイルを実行します
$ sh jdk-6u45-linux-x64.bin
update-alternativesの設定
デフォルトで設定済みのjavaのバージョンを変えたいときなどに利用します。
設定を追加
$ sudo update-alternatives --install /usr/bin/java java [ホームディレクトリ]/android/jdk1.6.0_45/bin/java 10
使いたいバージョンのjavaを設定する
sudo update-alternatives --config java
バージョンから使用しているjavaを確認
java -version
Ant
解凍
$ tar xvfz apache-ant-1.9.4-bin.tar.gz
確認
Eclipseで作成したプロジェクトを変換する場合などに
次のコマンドを使います
$ cd [プロジェクトフォルダ]の場所
$ android update project -p ./[プロジェクトフォルダ]
ant.propertiesが作成されます
$ cd [プロジェクトフォルダ]
正常に終わるかを確認します
$ ant
Android SDK
解凍
$ tar xvfz android-sdk_r23-linux.tgz
PATHの設定
ホームディレクトリにある.bash_profileを編集します。
PATHの編集はsourceで読み込むことで即反映されますが
なれていない人はあまりおすすめしません。
もとの設定が残った状態のTerminalを設定後も閉じずに
別でterminalを開いて設定の反映を確認する方がより安全です。
.bash_profileからのPATHの記載があるところ以降の抜粋
PATH=$PATH:$HOME/bin
ANDROID_TOOLS=$HOME/android/android-sdk-linux/tools
ANT_HOME=$HOME/android/apache-ant194
JAVA_HOME=$HOME/android/jdk1.6.0_45
PATH=$PATH:$ANDROID_TOOLS:$JAVA_HOME/bin:$ANT_HOME/bin
Android SDKの追加パッケージをダウンロード
EclipseのSDK Manager で管理するパッケージのダウンロードをコマンドから行います。
ディスクの空きを気にするサーバであれば、下記のコマンドは実行せずに
$ android update sdk
このコマンドのままだと全パッケージをダウンロードします。
SDK Manager同様に追加パッケージを選択
オプションを確認します
追加できるパッケージのリストを表示
$ android list sdk
Terminalへの表示は次のような感じになります。
(略)
Packages available for installation or update: 61
1- Android SDK Tools, revision 23.0.2
2- Android SDK Platform-tools, revision 20
3- Android SDK Build-tools, revision 20
4- Documentation for Android 'L' Preview SDK, revision 1
5- SDK Platform Android 4.4W, API 20, revision 1
6- SDK Platform Android L Preview, revision 1
7- SDK Platform Android 4.4.2, API 19, revision 3
8- SDK Platform Android 4.3, API 18, revision 2
9- SDK Platform Android 4.2.2, API 17, revision 2
10- SDK Platform Android 4.1.2, API 16, revision 4
11- SDK Platform Android 4.0.3, API 15, revision 3
12- SDK Platform Android 4.0, API 14, revision 3
13- SDK Platform Android 3.2, API 13, revision 1
14- SDK Platform Android 3.1, API 12, revision 3
15- SDK Platform Android 3.0, API 11, revision 2
16- SDK Platform Android 2.3.3, API 10, revision 2
17- SDK Platform Android 2.2, API 8, revision 3
(略)
表示された中から使うものをあげると
$ android update sdk -u -t 1,2,3,7,8,9,10,11,12,16
オプションについては --help をつけると確認できます。
$ android --help update sdk
ダウンロードしてローカルにはいったパッケージの内容を確認します
$ android list target
ハマりどころ(参考までに・・・)
設定によるもの
ant debugでエラー
android/android-sdk-linux/build-tools/20.0.0/aapt:error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
android/android-sdk-linux/build-tools/20.0.0/aapt:error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
64bit環境なので、なんで32bit?なのですが足さないと進まなかったので追加しました。
$ rpm -ql libstdc++ | cat -n
$ yum list | grep libstdc++
$ yum whatprovides libstdc++.so.6
$ sudo yum install libstdc++
$ sudo yum install libstdc++48-4.8.2-7.87.amzn1.i686
ここのインストールはインターネットの情報を見ながらで判断したものの
理解できていないので気持ちが悪いところです。
注意不足
ディスクを使い切る
もとから容量がない状態で android update sdk を実行してディスクフル
PATHの設定ミスでPATHからviが外れる
別のTerminalを開いていたのでwhichしたりで拾いましたが・・・
参考URL
duコマンド
JDKのインストール
update-alternativesの使い方
libstdc++.so.6まわり
http://d.hatena.ne.jp/language_and_engineering/20130309/Linux64BitAndroidDevelopmentEnvironment
http://forums.tripwireinteractive.com/showthread.php?t=81822
さいごに
サーバは他のサービス、設定に影響しない設定を意識したいので
- 実行するユーザをわける:ビルド用に別ユーザを作成して環境変数などは.bash_profileなどにまとめる
- バージョンの異なるコマンドはupdate-alternativesなどで切り替える
などで進めたいです。
それでもけっこう大雑把に設定している感が残ってしまいました。
後ほど追記すると思います。
Author And Source
この問題について(CUIでのapk作成 ~ 環境設定編), 我々は、より多くの情報をここで見つけました https://qiita.com/nofrmm/items/d54f4b095026de98bc88著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .