经过修改的ant,实现ndk-build,打包和启动。
第一步:进入android工程目录,执行以下命令,生成build.xml
android updateproject -p . –s
第二步:在build.xml根节点<project>的最后添加上以下命令:
当然,你要配好相关的android环境变量才能正常build
<!-- ==================以下为新增加的内容================== -->
<target name="easy">
<!-- 编译生成最新的so文件 -->
<antcall target="ndk_build"/>
<!-- 编译apk工程 -->
<antcall target="debug"/>
<!-- 执行安装 -->
<antcall target="install" />
<!-- 启动主界面 -->
<antcall target="startActivity" />
</target>
<!-- target<description>可通过ant -p命令查看 -->
<target name="ndk_build"
description="Compile c/c++ code to so file.">
<!--这里是和原版有区别的地方,这里修复一下没进入jni目录就执行build的bug-->
<exec executable="ndk-build${bat}">
<arg value="-C"/>
<arg value="jni"/>
</exec>
<echo message="out.final.file----${out.final.file}"></echo>
</target>
<target name="install"
description="install debug.apk">
<!-- target:debug调用过后,out.filal.file才会作为常量被初始化。所以单独调用install是无效的 -->
<echo message="adb install -r ${out.absolute.dir}/${ant.project.name}-debug.apk"/>
<apply executable="${adb}" failοnerrοr="true">
<arg value="install" />
<arg value="-r" />
<file file="${out.absolute.dir}/${ant.project.name}-debug.apk"/>
</apply>
</target>
<target name="startActivity"
description="Start Activity: app_package/app_launch_activity">
<!-- 这里是和原版有区别的地方,之前楼主的是在local.properties里面定义的app_package 及app_launch_activity,这里实现了自动从manifest里面读取-->
<xpath input="AndroidManifest.xml"
expression="/manifest/@package" output="app_package" />
<xpath input="AndroidManifest.xml"
expression="/manifest/application/activity[intent-filter/action[@android:name='android.intent.action.MAIN'] and intent-filter/category[@android:name='android.intent.category.LAUNCHER'] ]/@android:name" output="app_launch_activity" />
<echo message="adb shell am start -n ${app_package}/${app_launch_activity}"/>
<exec executable="${adb}">
<arg value="shell"/>
<arg value="am"/>
<arg value="start"/>
<arg value="-n"/>
<arg value="${app_package}/${app_launch_activity}"/>
</exec>
</target>
第三步:执行构建命令
ant easy
搞定!
过程请参考:http://blog.youkuaiyun.com/sodino/article/details/39526731