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,比较容易上手. ...
 
随机推荐
- Codeforces 666E Forensic Examination
			
题意:给定主串s和m个模式串,每次询问[l,r]的模式串中出现s[pl...pr]次数最多的串和次数. 这题挺简单的,先把所有模式串拿来建广义后缀自动机,询问相当于子树众数,用线段树合并即可. 那我为 ...
 - 从零安装Scrapy心得 | Install Python Scrapy from scratch
			
1. 介绍 Scrapy,是基于python的网络爬虫框架,它能从网络上爬下来信息,是data获取的一个好方式.于是想安装下看看. 进到它的官网,安装的介绍页面 https://docs.scrapy ...
 - 文本分类学习 (五) 机器学习SVM的前奏-特征提取(卡方检验续集)
			
前言: 上一篇比较详细的介绍了卡方检验和卡方分布.这篇我们就实际操刀,找到一些训练集,正所谓纸上得来终觉浅,绝知此事要躬行.然而我在躬行的时候,发现了卡方检验对于文本分类来说应该把公式再变形一般,那样 ...
 - web框架和django基础(粗糙版)
			
web框架本质: 浏览器:socket客户端 服务器:socket服务端 1.自己写socket服务端(最傻) #!/usr/bin/env python ...
 - Mianbot:基于向量匹配的情境式聊天机器人
			
Mianbot是采用样板与检索式模型搭建的聊天机器人,目前有两种产生回覆的方式,专案仍在开发中:) 其一(左图)是以词向量进行短语分类,针对分类的目标模组实现特征抽取与记忆回覆功能,以进行多轮对话,匹 ...
 - input text focus去掉默认光影
			
input:focus { outline:none; }
 - js变量的一点认识
			
js中变量包含两种不同数据类型的值,基本类型值(简单的数据段)和引用类型值(可能由多个值组成的对象).那么他们在保存方式和复制变量值是上有什么不同呢? 一.保存 只能给引用类型的值动态添加属性,不能给 ...
 - FastDFS+Nginx安装配置
			
下载相关包: libevent-2.0.22-stable.tar.gz => https://github.com/libevent/libevent/releases/download/re ...
 - SpringMVC注解@Component、@Repository、@Service、@Controller区别
			
SpringMVC中四个基本注解: @Component.@Repository @Service.@Controller 看字面含义,很容易却别出其中三个: @Controller 控制层, ...
 - Vue国际化处理 vue-i18n 以及项目自动切换中英文
			
1. 环境搭建 命令进入项目目录,执行以下命令安装vue 国际化插件vue-i18n npm install vue-i18n --save 2. 项目增加国际化翻译文件 在项目的src下添加lang ...