文档章节

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

IamOkay
 IamOkay
发布于 2014/12/22 23:53
字数 377
阅读 135
收藏 0

参考大神博客:

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>



© 著作权归作者所有

IamOkay

IamOkay

粉丝 204
博文 483
码字总数 403228
作品 0
海淀
程序员
私信 提问
加载中

评论(1)

z
zifil
第一种方式为什么成功率不高?
Android Studio向项目添加C/C++原生代码教程

原文:http://www.cnblogs.com/lsdb/p/9337285.html 说明:本文相当于官方文档的个人重新实现,官方文档链接:https://developer.android.com/studio/projects/add-native-code 向项目添加C...

炎林2018
01/21
0
0
如何为Android,Mac和Windows平台创建Java JNI动态链接库

Java Native Interface (JNI) 是Java和C/C++之间的桥梁。在一些情况下,为了提高Java程序的性能,扩展Java程序的功能,我们需要使用JNI。比如数据库的调用,当我们下载一个JDBC的jar包之后,...

yushulx
2014/09/17
1K
0
Android: NDK编程入门笔记

为何要用到NDK? 概括来说主要分为以下几种情况: 1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。 2. 在NDK中调用第三方C/C++库,因为大部分的开源库都是用C/C...

xubohui
2012/08/20
292
0
Android: NDK编程入门笔记

为何要用到NDK? 概括来说主要分为以下几种情况: 1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。 2. 在NDK中调用第三方C/C++库,因为大部分的开源库都是用C/C...

JORDANSG
2012/08/14
204
0
android studio 使用CMAKE

原文地址 前言 之前,每次需要边写C++代码的时候,我的内心都是拒绝的。 1. 它没有代码提示!!!这意味着我们必须自己手动敲出所有的代码,对于一个新手来说,要一个字母都不错且大小写也要...

shzwork
05/20
19
0

没有更多内容

加载失败,请刷新页面

加载更多

用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
2
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
10
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
13
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
6
0
Django的ChoiceField和MultipleChoiceField错误提示,选择一个有效的选项

在表单验证时提示错误:选择一个有效的选项 例如有这样一个表单: class ProductForm(Form): category = fields.MultipleChoiceField( widget=widgets.SelectMultiple(), ...

编程老陆
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部