を参考に、EclipseでNDKを利用する設定を行なってみたわけですが
毎回手動でBuildersを追加するのめんどくねー!?
と思ったので自動化しました。
スクリプト
作ったのが以下のスクリプト
xpathが入っていれば普通に動くはず
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ndk_path="$ANDROID_NDK_ROOT/ndk-build" | |
project_name=`xpath .project "/projectDescription/name/text()" 2> /dev/null` | |
project_path=`pwd` | |
external_tool_builders=.externalToolBuilders | |
file_name=ndk-build.launch | |
if [ ! -d $external_tool_builders ]; then | |
mkdir $external_tool_builders | |
fi | |
echo "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?> | |
<launchConfiguration type=\"org.eclipse.ui.externaltools.ProgramBuilderLaunchConfigurationType\"> | |
<stringAttribute key=\"org.eclipse.debug.core.ATTR_REFRESH_SCOPE\" value=\"\${working_set:<?xml version="1.0" encoding="UTF-8"?> <resources> <item path="/$project_name/libs" type="2"/> </resources>}\"/> | |
<booleanAttribute key=\"org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND\" value=\"false\"/> | |
<stringAttribute key=\"org.eclipse.ui.externaltools.ATTR_BUILD_SCOPE\" value=\"\${working_set:<?xml version="1.0" encoding="UTF-8"?> <resources> <item path="/$project_name/jni" type="2"/> </resources>}\"/> | |
<stringAttribute key=\"org.eclipse.ui.externaltools.ATTR_LOCATION\" value=\"$ndk_path\"/> | |
<stringAttribute key=\"org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS\" value=\"full,incremental,\"/> | |
<booleanAttribute key=\"org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED\" value=\"true\"/> | |
<stringAttribute key=\"org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY\" value=\"$project_path\"/> | |
</launchConfiguration>" > "$external_tool_builders/$file_name" | |
builder_exists=`xpath .project "/projectDescription/buildSpec/buildCommand/name/text()" 2> /dev/null | grep "org.eclipse.ui.externaltools.ExternalToolBuilder"` | |
if [ "$builder_exists" = "" ]; then | |
project_file=`while read LINE; do | |
echo $LINE | |
if [ "$LINE" = "<buildSpec>" ]; then | |
echo "<buildCommand> | |
<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name> | |
<triggers>full,incremental,</triggers> | |
<arguments> | |
<dictionary> | |
<key>LaunchConfigHandle</key> | |
<value><project>/.externalToolBuilders/ndk-build.launch</value> | |
</dictionary> | |
</arguments> | |
</buildCommand>" | |
fi | |
done < ".project"` | |
echo $project_file > ".project" | |
fi |
環境
adt-bundle-mac
android-ndk-r8c
使い方
ANDROID_NDK_ROOTにパスを通す
ndk導入時にANDROID_NDK_ROOTにパスを通しているとは思いますが念のため。
ついでにPATHにも通しておくとよりよい
ANDROID_NDK_ROOTの位置にndk-gen-externalToolBuildersを置く
ANDROID_NDK_ROOTにはndk-buildが居るはず。
同じ所に上のgistのコードを置く。
ファイル名は適当でいいけどここでは"ndk-gen-externalToolBuilders"
chmod +xで実行権限の付与を忘れずに

EclipseでAndroid Projectを作る
ndk-gen-externalToolBuildersはEclipseのプロジェクトファイルである.projectの内容に依存するのでまずEclipseプロジェクトを作ります。
NDKなので試しにsampleプロジェクトをimportしてみます。


.projectが出来ます

プロジェクトのディレクトリでndk-gen-externalToolBuildersを実行する
で、ターミナルからプロジェクトの所に行って、ndk-gen-externalToolBuildersを実行
その後Eclipse側のプロジェクトをRefreshしての設定からBuildersを見ると・・・
(゚д゚)ウマー

キタ━━━━(゚∀゚)━━━━!!
ndk-buildが追加されています。
後は普通にビルドして実行すると・・・

動いた・・・!
仕組み
めんどくさいので適当に。
Eclipseのプロジェクトファイルである.projectにBuildersを追加してます。
Buildersの定義ファイルを.externalToolBuilders/ndk-build.launchに吐いてます。
ndk-build.launchを生成するのに.project内の情報が必要なのでxpath使ってます。
以上
0 件のコメント:
コメントを投稿