2014年1月17日金曜日

Android NDKビルド環境をUbuntu Serverに作ってみた

AndroidのNDKビルド用の環境はWindowsやMac上でも作れるのですが、
Windowsだとcygwinとか面倒くさいし
Macだとたまにldtoolがないとか怒られるので
VMWare上のUbuntuに作成することにしました。
これだとコピペで環境を保存したり増やしたりえきるので便利ですね。


VMWare上にすでにUbuntuがインストールされていることが前提です。
Serverなのは消費メモリが少ないとかリソースの問題です。

Build環境
sudo apt-get install build-essential

1.Javaのインストール

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get install oracle-java7-installer 
 
 

2. Android NDKインストール

 
Android NDKをダウンロードします 

tar -xvjof android-ndk-r9c-linux-x86_64.tar.bz2
sudo mv ./android-ndk-r9c /usr/local/
echo 'export PATH=$PATH:/usr/local/android-ndk-r9c' >> .bashrc 
echo 'export NDKROOT=/usr/local/android-ndk-r9c' >> .bashrc 
 
 


3. Android SDK インストール

 
Android SDKをダウンロードします
unzip adt-bundle-linux-x86_64-20131030.zip
sudo mv adt-bundle-linux-x86_64-20131030 /usr/local/

echo 'export PATH=$PATH:/usr/local/adt-bundle-linux-x86_64-20131030/sdk/tools' >> .bashrc 
echo 'export PATH=$PATH:/usr/local/adt-bundle-linux-x86_64-20131030/sdk/platform-tools' >> .bashrc 
 


ライセンス許可

Android SDKの実行には最初にライセンスの認証が必要です
 
cd /usr/local/adt-bundle-linux-x86_64-20131030/sdk/tools
echo "y" | ./android update sdk --no-ui


 

SDK一覧

次のコマンドでSDKの一覧が表示されます
./android list sdk

 

SDKアップデート

必要なSDKをインストール、アップデートします
android update sdk -u --filter platform-tools,android-16,android-8,extra-android-support

 
 
動かしてみる
ndk-buildを実行してみる 
 
 

4.ビルドする際のメモ

 
個人的にAndroid.mkを利用するよりも
Configure時にSysroot, CC, CFLAG, LD, AR等を指定して
クロスコンパイルするほうがiOSと同じ要領なので楽

lib作成時にだいたいは次のようにして、static libraryを作って
あとで、static libraryを参照するAndroid.mkでsoにします
 
build.sh :  
 
BINPATH=$NDK_ROOT/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin
export CROSS_COMPILE=$BINPATH/arm-linux-androideabi
export CC=${CROSS_COMPILE}-gcc
export CXX=${CROSS_COMPILE}-g++
export LD=${CROSS_COMPILE}-ld
export AR=${CROSS_COMPILE}-ar
export CFLAGS="--sysroot $SYSROOT -std=gnu99 -L$LIB_DIR -L${NDK_ROOT}/usr/lib -I${NDK_ROOT}/usr/include"
 
./configure --prefix="一時フォルダ" --enable-static --disable-shared --host=arm-linux-androideabi

 
 
※おそらくConfigure時にarm-linux-androideabiの定義がないと怒られるので
下のリンクからconfigure.guess, configure.subをダウンロードして
configureのあるフォルダに移動、上書きします 
http://git.savannah.gnu.org/gitweb/?p=automake.git;a=blob_plain;f=lib/config.guess
http://git.savannah.gnu.org/gitweb/?p=automake.git;a=blob_plain;f=lib/config.sub


 
Android.mk : 
この辺りが参考になるかと 
https://groups.google.com/forum/#!topic/android-group-japan/NMoJAioGi04



0 件のコメント: