Android NDKビルドにANTスクリプトを使用できますか?はいの場合はどのようにですか?いいえの場合はなぜですか?
わからない
次のように、ndk-build
ターゲットから-pre-build
を呼び出します。
<target name="-pre-build">
<exec executable="${ndk.dir}/ndk-build" failonerror="true"/>
</target>
<target name="clean" depends="Android_rules.clean">
<exec executable="${ndk.dir}/ndk-build" failonerror="true">
<arg value="clean"/>
</exec>
</target>
次に、ndk.dir
ファイルからNDKディレクトリを指すようにlocal.properties
を設定するか、コマンドラインで設定します。私はこれをします:
ant -Dsdk.dir=/home/dg/apps/Android-sdk-linux_x86-r11/ -Dndk.dir=/home/dg/apps/Android-ndk-r6b release
これでantを実行すると、ネイティブコードが自動的にビルドされます。さらに、「ant clean」を実行すると、ネイティブコードがクリーンアップされます。
更新しました:failonerror="true"
タスクに<exec>
を追加しました---これにより、makeが失敗した場合にantが中止されます。それがないと、すぐに実行され、無効なバイナリを含むAPKが生成されます。良くない!
他の人が述べたように、build.xmlに追加するものは次のとおりです。
<target name="-pre-build">
<exec executable="${ndk.dir}/ndk-build" failonerror="true"/>
</target>
<target name="clean" depends="Android_rules.clean">
<exec executable="${ndk.dir}/ndk-build" failonerror="true">
<arg value="clean"/>
</exec>
</target>
local.propertiesファイルでndk.dirを定義します:ndk.dir = C:\ EclipseWorkspace\Android-ndk-r8d
これを実行した後に言及したい状況では、このターゲットオーバーライドに対してANTを実行しているときに、「%1は有効なWin32アプリケーションではありません」というエラーが発生します。私の場合、NDK R8dにアップグレードし、次の行を更新して、ndk-build.cmdをフェッチする必要がありました(このバージョンのndkは、Windowsおよびcygwin経由で実行できます。
exec実行可能ファイル= "$ {ndk.dir}/ndk-build .cmd" failonerror = "true"