Android Ant+NDK构建自动生成C/C++头文件

参考大神博客:

http://www.boyunjian.com/do/article/snapshot.do?uid=7571259727878832318

http://whithin.blog.51cto.com/690417/1174645


对于ANT生成头文件,可以使用 javah命令


具体命令是在项目的bin/classes目录下执行:

 javah -d ../../jni -jni com.ndk.test.YourClass

或者在src目录下 如下

 javah -d ../jni -jni com.ndk.test.YourClass


ANT构建主要是描述javah命令,因此需要进行一系列的配置:


第一种方式如下,直接配置javah命令,但成功率不高,本人菜鸟一枚,下面的命名老是包空指针异常,但有人确实弄成功了。

<?xml version="1.0" encoding="UTF-8"?>
<!-- ====================================================================== 
     2014年12月22日 下午10:18:53                                                        

     NDKBuild    
     description
                   
     Administrator                                                                
     ====================================================================== -->
<project name="NDKBuild" default="BuildAllHeaders">
    <description>
    	NDKBuild description
    </description>

    <!-- ================================= 
          target: default              
         ================================= -->
    <target name="BuildAllHeaders">
        <antcall target="BuildNDkBookDao"></antcall>
        <antcall target="BuildNDkUserDao"></antcall>
    </target>

	
	<target name="BuildNDkBookDao">
		<javah destdir="./jni" classpath="./bin/classes/" class="com.ndk.ant.build.NDKBookDao"></javah>
	</target>
	
	
	<target name="BuildNDkUserDao">
		<javah destdir="./jni" classpath="./bin/classes/" class="com.ndk.ant.build.NDKUserDao"></javah>
	</target>
    <!-- - - - - - - - - - - - - - - - - - 
          target: depends                      
         - - - - - - - - - - - - - - - - - -->
    <target name="depends">
    </target>

</project>

第二种方式,成功率极高,适合菜鸟我来使用,这种写法参考自:http://www.boyunjian.com/do/article/snapshot.do?uid=7571259727878832318

<?xml version="1.0" encoding="UTF-8"?>
<!-- ====================================================================== 
     2014年12月22日 下午10:18:53                                                        

     NDKBuild    
     description
                   
     Administrator                                                                
     ====================================================================== -->
<project name="NDKBuild" default="BuildAllHeaders">
    <description>
    	description
    </description>

    <!-- ================================= 
          target: default              
         ================================= -->
    <target name="BuildAllHeaders">
        <antcall target="BuildNDkBookDao"></antcall>
        <antcall target="BuildNDkUserDao"></antcall>
    </target>

	
	<target name="BuildNDkBookDao">
		 	<exec dir="${basedir}/bin/classes/" executable="javah">
		        	<arg value="-d"/>
		        	<arg value="${basedir}/jni/"/>
		        	<arg value="-jni"/>
		        	<arg value="com.ndk.ant.build.NDKBookDao"/>
		    </exec>
	</target>
	
	<!--<javah destdir="./jni" classpath="./bin/classes/" class="com.ndk.ant.build.NDKUserDao"></javah>-->
	<target name="BuildNDkUserDao">
		<exec dir="${basedir}/bin/classes/" executable="javah">
				 <arg value="-d"/>
				 <arg value="${basedir}/jni/"/>
				  <arg value="-jni"/>
				 <arg value="com.ndk.ant.build.NDKUserDao"/>
		</exec>
	</target>
    <!-- - - - - - - - - - - - - - - - - - 
          target: depends                      
         - - - - - - - - - - - - - - - - - -->

</project>



你可能感兴趣的:(C++,ant,jni,NDK,javah,AntBuild)