Android Studio Jni 环境搭建
第一步:NDK环境搭建,点击下图红色框区域查看NDK下载和环境配置
安照正常情况是很慢的或者无法下载成功的,这个时候可以去下载NDK压缩包进行解压。下面给出两个下载地址
(1)官网:http://wear.techbrood.com/tools/sdk/ndk/
(2)社区:http://tools.android-studio.org/
下载完成解压:如下图
第二步:新建测试JNI示例 HelloJni 显示C文件里面的字符串
新建JAVA文件NdkJniUtils并定义本地接口
然后clean project 再rebuild project 生成class文件,
这时候打开如下图的文件夹看是否生成了classes文件夹,没有生成请重新来过。
头文件生成
再打开Terminal输入指令进入debug文件夹下
cd app/build/intermediates/classes/debug
然后再输入指令生成头文件,这里javah -jni后面跟的是NdkJniUtils类的全路径
javah -jni
com.boyoi.ysj.hello.jni.NdkJniUtils
如果没有报错就说明生成头文件成功,如果报错请检查环境是否配置错误。
这时候打开classes/debug下面的文件发现多了一个文件
com_boyoi_ysj_hello_jni_NdkJniUtils.h
然后在src/main下新建文件夹jni,把生成的.h文件复制或者剪切到jni文件夹下面去,新建一个c类随便取一个名字,添加代码如下
配置文件
(1)在gradle.properties文件末尾添加android.useDeprecatedNdk=true
(2)在app文件下得build.gradle ->defaultConfig括号内添加如下代码
ndk {
moduleName "NdkJniDemo" //生成的so名字
abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库,目前可有可无。
}
重新build项目,发现已经没有变红了。接下来就是运用了,在JniUtils类里面添加如下代码
static {
System.loadLibrary("HelloJNI");//之前在build.gradle里面设置的so名字,必须一致
}
测试是否成功
在 activity_main:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</RelativeLayout>
在 MainActivity:
public class MainActivity extends AppCompatActivity { private TextView mTextView;
NdkJniUtils jni = new NdkJniUtils();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); mTextView = (TextView) this.findViewById(R.id.test); NdkJniUtils jni = new NdkJniUtils(); mTextView.setText(jni.hello());
}
运行结果:
另外:打开app->intermediates-ndk-debug发现生成了三个文件夹,并且对应了之前我们在build.gradle配置的abiFilters
注意:我也在mac下android studio 通过重复如上步凑也是成功的,下图为证
Android Studio Jni 环境搭建的更多相关文章
- Android studio 开发环境搭建
Android studio 开发环境搭建 一.环境: 下载java jdk:http://www.oracle.com/technetwork/cn/java/javase/downloads/jd ...
- tensorflow lite的demo在android studio上环境搭建
由于很久没有接触过Android开发,而且最早用的是eclipse,所以这个demo在android studio上的搭建过程,真的是踩了不少坑.记录这篇文章,纯粹是给自己一点收获. 环境搭建的过程, ...
- 【Android Studio安装部署系列】二、Android Studio开发环境搭建
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio开发环境安装步骤 下载Android Studio 下载地址: http://www.wanandroi ...
- windows平台下Android studio开发环境搭建教程
最近,Google 已宣布,为了简化 Android 的开发力度,以重点建设 Android Studio 工具,到今年年底将停止支持Eclipse等其他集成开发环境 .而随着Android stud ...
- Android开发学习之路--MAC下Android Studio开发环境搭建
自从毕业开始到现在还没有系统地学习android应用的开发,之前一直都是做些底层的驱动,以及linux上的c开发.虽然写过几个简单的app,也对android4.0.3的源代码做过部分的分析,也算入门 ...
- android studio集成环境搭建
1 下载JDK(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) An ...
- android ndk jni 环境搭建
关于ndk jni网上的介绍很多,其实我了解这个主要是因为自己是做嵌入式的,一则是对C语音有感情 二则是知道jni 可以绕过framework 框架直接操作硬件抽象层. 1.概述 对于ndk, j ...
- Android Studio 之 环境搭建
从网上整理的安装步骤及初次使用问题解决. 一.安装步骤 1.安装前确认JDK已经安装并配置好环境变量(要求JDK1.7以上的版本). 2.官网下载Windows安装包,网上下载的版本是android- ...
- 【Android学习笔记】Mac下Android Studio开发环境搭建
本文由@ray 出品,转载请注明出处. 文章链接:http://www.cnblogs.com/wolfray/p/7829069.html 对于移动端这块,笔者之前一直都是进行iOS开发的,也从来 ...
随机推荐
- 防止 jsp被sql注入的五种方法
一.SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库. 二.SQL注入攻击的总体 ...
- HDU1003 简单DP
Max Sum Problem Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the ...
- Salt安装(yum不可用时)
salt-master安装 [salt-master]# yum install salt-master 或者 curl -L http://bootstrap.saltstack.o ...
- CSS居中布局总结【转】
居中布局 <div class="parent"> <div class="child">demo</div> </d ...
- Java Gson 简要笔记
Gson是Google开发的Java比较好用的 Json工具. 使用挺简单,假设有个类: class Runner { int attr; String name; public Runner(int ...
- php5.6+apache2.4环境配置
Apache2.4 环境:https://www.microsoft.com/en-US/download/details.aspx?id=48145php5.6 环境:http://www.micr ...
- ouath原理
1.OAuth的简述 OAuth(Open Authorization,开放授权)是为用户资源的授权定义了一个安全.开放及简单的标准,第三方无需知道用户的账号及密码,就可获取到用户的授权信息,并且这是 ...
- Python traceback【转】
1. Python中的异常栈跟踪 Python,在2.x中,异常对象可以是任何对象,异常对象和异常栈是分开的.python中用于处理异常栈的模块是traceback模块,它提供了print_excep ...
- DataBinding examples
Databinding in Windows Forms demo (CSWinFormDataBinding) /************************************* Modu ...
- 利用JavaScript生成随机数字!
<!DOCTYPE html> <html> <head> <title>1-99的随机数字</title> <script type ...