AndroidStudio如何快速制作.so

之前写过一篇Eclipse制作.so的文章,http://blog.csdn.net/baiyuliang2013/article/details/44306921使用的是GNUstep模拟Linux环境,过程现在看来是想相当麻烦,后来发现一个简单的方法就是通过项目右键添加Native
Supprot...可以快速创建.so而不使用命令行,

由于AS越来越被大家使用,所以Eclipse的制作过程就不再写了,这篇主要讲的是如何用AS快速制作一个简单的.so文件!

如果之前对制作.so一点了解也没有的话,在看这一篇之前可以看下文章开头提到的文章,会对这篇文章的理解上有所帮助,因为本篇文章不打算讲解的太过详细!

步骤1:

创建一个新的AS项目(模板选择EmptyActivity即可)jnitest,包名:com.byl.jnitest:

步骤2:

添加NDK支持:

按Ctrl+Alt+Shift+S,出现如图:

ok,完成后,打开项目根目录下的local.properties文件:

ndk的路径会自动添加进来,表示操作成功!

步骤3:

打开根目录下gradle.properties文件,添加代码:

android.useDeprecatedNdk=true

步骤4:

项目>app>src>main文件夹下,新建jni文件夹,并放入三个文件.h、.c、.c:

注意:

.h文件命名的命名方式,包名+调用.so的Activity名且"."需要更换成下滑线"_";

jnitest.c的命名可以随便定义;

util.c是一个空的.c文件,作用就是在ndk编译时避免一个错误:

make.exe: *** No rule to make target

com_byl_jnitest_MainActivity.h:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_byl_jnitest_MainActivity */

#ifndef _Included_com_byl_jnitest_MainActivity
#define _Included_com_byl_jnitest_MainActivity
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_byl_jnitest_MainActivity
 * Method:    getSec
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_byl_jnitest_MainActivity_getSec
  (JNIEnv *, jclass);

#ifdef __cplusplus
}
#endif
#endif

jnitest.c:

#include  <string.h>
#include  <jni.h>

jstring
Java_com_byl_jnitest_MainActivity_getSec
   (JNIEnv* env,jobject thiz){
	return (*env)->NewStringUTF(env,"调用jni成功");
}

步骤5:

在MainActivity中调用.so:

    public static native String getSec();//.so中的方法名

    static{
        System.loadLibrary("jnitest");
    }

注意:.so最终的名称默认为lib+项目名如:libjnitest.so。

步骤6:

最后一步,打开app目录下build.gradle文件,修改gradle配置:

 defaultConfig {
        applicationId "com.byl.jnitest"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"

        ndk {
            moduleName "jnitest"
            ldLibs "log", "z", "m"
            abiFilters "armeabi"
        }
    }

以上步骤全部完成后,直接点击run>>:

运行必然要报错的,因为之前.so文件并不存在,经此一调,ndk便自动为我们生成了想要的东西:

将.so文件复制出来,然后在main文件夹下建立jniLibs/armeabi,并将.so放入:

再次运行>>:

此例只是简单的输出一个字符串,一般的项目放入一个不想外露的密钥之类的还是非常有用的!

时间: 2024-10-11 07:16:06

AndroidStudio如何快速制作.so的相关文章

arcgis 3种方法快速制作tpk文件(转)

arcgis 3种方法快速制作tpk文件(转) 作者:www.cnblogs.com  来源:www.cnblogs.com  发布日期:2015-03-22 来自:http://blog.csdn.net/arcgis_mobile/article/details/8048549 tpk是ArcGIS10.1推出的一种新的数据文件类型,主要是用于将切片文件打包形成离线地图包,tpk可以在ArcGIS Runtime或者ArcGIS for Android/iOS中作为切片底图被加载,有多种制作

在Altium Designer中使用AUTOCAD快速制作元件封装

笔者通过使用AutoCAD处理图形,并将其导入Altium Designer中,快速绘制元件封装,省去算间距的时间. 本例中以NPN管(B772),封装为SOT-89为例: 第一步:使用PDF Editor工具打开B772的说明文档,并定位到封装页面. 将该页面单独导出为pdf格式. 第二步:利用pdf2pxf工具,将导出的含有封装的单页pdf转化为dxf格式. 第三步:使用AutoCAD打开,并标注其中任意一边长,会发现标注和封装上的示数不同.这时使用缩放工具,成功缩放至相同示数. 第四步:删

Pablo(快速制作图片

插件介绍: 在QQ.微信等社交网络上,图片是信息传播很重要的部分.Pablo是一款帮助用户快速制作个性化图片并分享的插件. 可以自定义大小.字体.格式等等,让用户们都成为设计师,Pablo的设计师门已经设计超过5000万张图片. 使用说明: 在谷歌商店里安装Pablo,并在扩展器里启动它,在选择了一个图片以后,就可以使用Pablo插件对该图片进行个性化的编辑.编辑完成以后,用户可以选择把图片下载下来,或者复制该图片的地址直接在社交网站上进行分享. 功能介绍: +任何页面上突出显示文本,然后点击鼠

office快速制作简历

毕业的一年是由学校向社会转变的一年,面临着人生的一个重大转折--找工作.在如今信息爆炸的时代,纵使力拔山兮气盖世也难免会被遗落芳草之中而不得一展宏图.对未来的憧憬,对美好生活的向往,或多或少你需要一份登堂入室的通行证--简历.借助Office中所具有的便捷功能,我们可以方便快速的制作出精美,极具个性的简历.通用的个人介绍来几句:学习能力强,勤奋执着有韧性,能吃苦,思虑周密,有主见,做事认真负责且有始有终,为人坦诚,心胸豁达,善与人沟通,有良好的团队精神. 1.启动"Microsoft Word&

图片热点,内嵌网页,表单,快速制作网页

1.图片热点 阿达撒 设计显示 2.内嵌网页 代码: <body><iframe src="http://lol.qq.com/" width="500" height="500"></iframe><iframe src="http://tieba.baidu.com/f?kw=%BD%E4%CD%F8" width="600" height="600&

Dw快速制作细线表的实用技巧

对于不熟悉HTML语言的网页制作者,如何快速制作出细边线的表格呢? 下面,给大家介绍一个小技巧--巧用背景颜色和间距制作细边线表格. 以制作一个4行3列.边框线为红色细线的表格为例: 1.在Dreamweaver的设计视图中插入一个4行3列的表格. 2.在“属性”面板中设置此表格的属性如下:边距(CellPad)根据需要自行设置值(例如10);间距(CellSpace)为1;边框(Border)为0;背景颜色(Bg Color)为红色. 3.选中此表格的所有单元格,在“属性”面板中设置所有单元格

使用HTML 5/CSS3五步快速制作便签贴特效

使用HTML 5/CSS3五步快速制作便签贴特效(1)      本篇文字将展示给你的是,如何利用HTML5/CSS3,仅用5步就可以制作便签贴效果的HTML页面,效果图如下:      (注:图里的文字纯属杜撰,搞笑目的,如有雷同,纯属巧合,谢谢! 注:该效果可以在Safari, Chrome,Firefox和Opera在看到效果,IE上由于对HTML5的支持不完全,所以看不出效果.      第一步:创建基本HTML和正方形      首先添加基本的HTML结构以及构建基本的正方形,代码如下

HTML第二部分表单及使用Photoshop快速制作网页

一.表单 <form id="" name="" method="post/get" action="负责处理的服务端">id不可重复:name可以重复:get提交有长度限制,并且编码后的内容在地址栏可见,post提交无长度限制,且编码后内容不可见. </form> 1.文本输入 文本框<input type="text" name="" id="

html表单 和快速制作网页的方法

表单: <form id="" name="" method="post/get" action="负责处理的服务端"> id不可重复,name可重复,get提交有长度限制,并且编码后的内容在地址栏可见, post提交没有长度限制,且编码后内容不可见. </form> 1.文本输入 文本框<input type="txt" name="" id="