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(注意是app目录下而不是根目录下)文件,修改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放入:
再次运行>>:
此例只是简单的输出一个字符串,一般的项目放入一个不想外露的密钥之类的还是非常有用的!
另:多种cpu类型,可在abiFilters后添加cpu类型即可,如:
ndk {
moduleName "jnitest"
ldLibs "log", "z", "m"
abiFilters "armeabi","x86"
}
运行结果:
AndroidStudio如何快速制作.so的更多相关文章
- Photoshop将普通照片快速制作二次元漫画风格效果
今天为大家分享Photoshop将普通照片快速制作二次元漫画风格效果,教程很不错,对于喜欢漫画的朋友可以参考本文,希望能对大家有所帮助! 一提到日本动画电影,大家第一印象肯定是宫崎骏,但是日本除了宫崎 ...
- 【公开课】《奥威Power-BI基于微软示例库(MSSQL)快速制作管理驾驶舱》文字记录与反馈
本期分享的内容: <奥威Power-BI基于微软示例库(MSSQL)快速制作管理驾驶舱> 时间:2016年11月02日 课程主讲人:叶锡文 从事商业智能行业,有丰富的实施经验,擅长 ...
- 10月26日 奥威Power-BI基于微软示例库(MSOLAP)快速制作管理驾驶舱 腾讯课堂开课啦
本次课是基于olap数据源的案例实操课,以微软olap示例库Adventure Works为数据基础. AdventureWorks示例数据库为一家虚拟公司的数据,公司背景为大型跨国生产 ...
- HTML第二部分表单及使用Photoshop快速制作网页
一.表单 <form id="" name="" method="post/get" action="负责处理的服务端&qu ...
- 如何用Axure快速制作APP交互原型
对于产品经理来说,熟练使用一些常用软件是一项十分必要的技能.其中,作为一个专业的快速原型设计工具,Axure RP无疑在产品人心中拥有一个难以撼动的地位.但就要PS一样,虽然足够专业,但同样也会存在使 ...
- PS快速制作下雪效果
PS快速制作下雪效果 具体的制作步骤如下: 1.打开PS,打开素材,打开窗口-动作 2.创建新动作,参数如下图 3.回到图层,建立一个图层,填充黑色,如下图 4.滤镜-像素化-点状化,参数如下图 5. ...
- 如何使用Python快速制作可视化报表----pyecharts
如何使用Python快速制作可视化报表 数据可视化能力已经越来越成为各岗位的基础技能.领英的数据报告显示,数据可视化技能在2017年中国最热门技能中排名第一. 就数据分析而言,可视化探索几乎是你正 ...
- PS基础教程[6]如何快速制作一寸照片
一寸照片使我们经常会用到的,很多的证件照都是使用一寸的照片作为存档的.写这个经验也是因为刚刚有网友求助做一寸照片,所以就顺便写个经验.废话不多说了,进入正题,PS基础教程之快速制作一寸的照片. 制作方 ...
- h5快速制作工具-企业级. 非个人无水印
Epub360 Epub是团队引入的专业级H5应用开发工具,能够快速制作出高质量的H5运营交互页面,具有动画控制.交互设定.社交应用和数据应用的特点,其制作过程就类似于制作一个PPT,比较容易上手. ...
随机推荐
- hdu 2296 aC自动机+dp(得到价值最大的字符串)
Ring Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu 5113(2014北京—搜索+剪枝)
题意:有N*M的棋盘,用K种颜色去染,要求相邻块不能同色.已知每种颜色要染的块数,问能不能染,如果能,输出任一种染法. 最开始dfs失败了- -,优先搜索一行,搜完后进入下一列,超时.本来以为搜索不行 ...
- 2015 ICL, Finals, Div. 1 Ceizenpok’s formula(组合数取模,扩展lucas定理)
J. Ceizenpok’s formula time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- MQ(消息队列)常见的应用场景解析
前言 提高系统性能首先考虑的是数据库的优化,之前一篇文章<数据库的使用你可能忽略了这些>中有提到过开发中,针对数据库需要注意的事项.但是数据库因为历史原因,横向扩展是一件非常复杂的工程,所 ...
- day5 liaoxuefeng---实战篇
- Linux文件系统的介绍
1.Linux的文件系统是一个典型的树形结构,只有一个根节点 如下图: 2.在Linux中一切皆文件 Linux 对数据文件(.mp3..bmp),程序文件(.c..h.*.o),设备文件(LCD.触 ...
- java异常处理之throw, throws,try和catch
转自 http://blog.csdn.net/zhouyong80/article/details/1907799 程序运行过程中可能会出现异常情况,比如被0除.对负数计算平方根等,还有可能会出现 ...
- webstorm 设置uglify 压缩js文件
第一步:打开npm,全局安装 npm install uglify-js -g 第二步: 打开webstorm的file->settings ->External Tools,点击左上角的 ...
- 数据结构之堆Heap
1. 概述 堆(也叫优先队列),是一棵完全二叉树,它的特点是父节点的值大于(小于)两个子节点的值(分别称为大顶堆和小顶堆).它常用于管理算法执行过程中的信息,应用场景包括堆排序,优先队列等. 2. 堆 ...
- Spring Boot 参数校验
1.背景介绍 开发过程中,后台的参数校验是必不可少的,所以经常会看到类似下面这样的代码 这样写并没有什么错,还挺工整的,只是看起来不是很优雅而已. 接下来,用Validation来改写这段 2.Spr ...