NDKでPlatinumをコンパイルする

2713 ワード

バージョン:Platinum-a 4 ab 7 c
(1)NDK用android-ndk-r 6(r 7 buildで失敗!sconsスクリプトのいくつかのパスから推定すると、少なくともr 5)
(2)targetの指定
(2.1)コマンドラインオプションを指定してscons target=arm-android-linux build_を実行config=Release
(2.2)Platinum/Build/Bootを修正する.sconsファイルのoptions.AddVariables(...) 上記2つのオプションを直接書き込むのがデフォルトの場合、sconsコマンドを実行するときにオプションを指定する必要はありません.
options = Variables()
options.AddVariables(
EnumVariable('target', 'build target', 'arm-android-linux', allowed_values=['arm-android-linux']),
BoolVariable('stop_on_warning', 'Stop the build on warnings', False),
ListVariable('build_config', 'build configurations', 'Release', names=['Debug', 'Release'])
)

(3)Platinum/Build/Targes/arm-android-linux/Clonfigを修正する.scons
(3.1)デッドNDKパスを書く
ANDROID_NDK_ROOT='/home/toor/android-ndk-r6'
##ANDROID_NDK_ROOT=os.getenv('ANDROID_NDK_ROOT')
##if not ANDROID_NDK_ROOT:
## raise Exception('ANDROID_NDK_ROOT environment variable not set')

(3.2)Android APIを書き込み
##if env.has_key('target_variant') and env['target_variant']:
## ANDROID_PLATFORM=env['target_variant']
##else:
## ANDROID_PLATFORM='android-9'
ANDROID_PLATFORM='android-5'

(4)作成したライブラリとサンプルプログラムをPlatinum/Build/Targets/arm-android-linux/Releaseでコンパイルする
 
その他:
(1)scons-cはmake cleanに相当する
(2)sconsはpython 2.4以上が必要
c++ランタイムライブラリへの動的リンク:
/home/toor/android-ndk-r6/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-objdump -x /home/toor/Platinum-a4ab7c-android/Platinum/Build/Targets/arm-android-linux/Release/libPlatinumJNI.so | grep NEEDED
NEEDED libc.so
NEEDED libstdc++.so
NEEDED libm.so
NEEDED libdl.so
NEEDED liblog.so