借助C/C++进行Android开发:NDK的配置与使用
来源:互联网 发布:淘宝地区编码在哪填写 编辑:程序博客网 时间:2024/05/17 03:36
Android Studio版本 :1.3.2
NDK版本:android-ndk-r10b
1.下载NDK,选用android-ndk-r10b版本
2. 配置环境变量(像当初配java一样配置)
计算机-右键-属性-高级系统设置-环境变量-系统变量-Path一项—双击
将下载的NDK R10d版本的路径添加到变量值后面(记得加分号,路径名不要有空格)
;D:\code\android-ndk-r10d
3.cmd-输入 ndk-build,显示:
在cmd中输入ndk-build,显示以上内容,说明ndk-build命令可以查找到,但是原则伤讲ndk应该是在一个Android项目中的,所以抛出这样的异常,但是这说明环境已经配好了。
4.打开Android Studio,像正常新建项目一样新建一个Android 项目
5.在MainActivity里写上:
public native String getStringFromNative();
即在该类里面定义一个native方法。
附MainActivity.java里的全部代码:
package com.example.pc.ndktest6;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class MainActivity extends Activity { public native String getStringFromNative(); private TextView tv=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv= (TextView) findViewById(R.id.tv); tv.setText(" "+getStringFromNative()); } static { System.loadLibrary("MyJni"); }}
为什么要把名字命名为ndktest6呢?
因为我做到第6个测试demo的时候才运行成功,不要问我之前经历了什么
6.Build-Make Project 一下。
7.休息一下
8.在Terminal下输入命令行 cd app/src/main
回车,进入到app/src/main
9.在app/src/main下输入命令行:
javah -d jni -classpath C:/Users/pc/AppData/Local/Android/sdk/platforms/android-23/android.jar;../../build/intermediates/classes/debug com.example.pc.ndktest6.MainActivity
C:/Users/pc/AppData/Local/Android/sdk/platforms/android-23/android.jar;为Android SDK位置
如果报错无法找到文件MainActivity或者android.app.Activity就多Build-Make Project 几次或者 Clean Project一下
10.
此时,app文件夹下会自动生成一个jni文件夹,文件夹下会包含一个名为
com_example_pc_ndktest6_MainActivity.h
的文件。
文件都建好之后的样子:
11.在jni文件夹下新建两个C文件。
上图是我建完C文件后的样子。
为什么要建两个?
因为有一个是我们测试要用的,但是据说如果只建一个的话会报奇怪的错误,这个错误我也遇到了,解决方法就是再新建一个C文件。
上图中main.c就是要用的,nothing.c就是为了防止报错辅助用的。
12.在main.c里面填上一些测试代码:
#include "main.h"#include "com_example_pc_ndktest6_MainActivity.h"/* * Class: com_example_pc_ndktest6_MainActivity * Method: getStringFromNative * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_example_pc_ndktest6_MainActivity_getStringFromNative (JNIEnv * env, jobject obj){ return (*env)->NewStringUTF(env,"***I come from main.c***");}
13.在gradle.properties的最后面添上一句:
android.useDeprecatedNdk=true表示允许使用NDK
14.在local.properties的最后面加上:
sdk.dir=C\:\\Users\\pc\\AppData\\Local\\Android\\sdkndk.dir=D\:\\code\\android-ndk-r10b
sdk.dir那句应该是本来就有的,就加上后面ndk的就行了
15.在app的build.gradle文件下的defaultConfig中加上:
ndk{ moduleName "MyJni" //设置库(so)文件名称 }
16.
在activity中增加对so的加载:
- static {
- System.loadLibrary("MyJni");
- }
上面贴出来的MainActivity代码是加完这句之后的完整代码
17.完成
- 借助C/C++进行Android开发:NDK的配置与使用
- 借助NDK,Android与C动态链接库的相互调用
- android studio 2.2中进行ndk(c/c++)开发
- 使用Android Studo开发NDK之Gradle的配置(能debug C代码)
- Android NDK开发下使用C/C++的几个概念
- Eclipse进行C/C++开发——Eclipse+CDT+MinGW的配置与使用详解
- Android:Native C源码(NDK)如何使用sqlite3进行编程?
- 在eclipse中进行Android ndk开发时c代码中Unresolved inclusion的解决
- Eclipse进行C/C++开发——JDK+ Eclipse IDE for C/C++ Developers +MinGW的配置与使用详解
- Android NDK开发之配置 adb-bundle、eclipse 支持C/C++ 语言的JNI开发
- Android使用NDK调用C语言写的SO进行加密
- Android studio ndk配置cmake开发native C
- Android NDK开发之从Java与C互调中详解JNI使用(一)
- Android NDK开发 Java与C互相调用实例详解
- Android NDK开发----- Java与C互相调用实例详解
- Android NDK开发----- Java与C互相调用实例详解
- 使用Eclipse进行C/C++开发——Eclipse+CDT+MinGW的配置与使用详解(1)
- 使用Eclipse进行C/C++开发——Eclipse+CDT+MinGW的配置与使用详解(2)
- 细说函数的值传递和引用传递
- Node.js的Path对象
- how to debug the gpu on you target
- 【HDU4474 2012成都现场赛K】【搜索-BFS】Yet Another Multiple Problem 最小的要求字符集的数字倍数 余数哈希BFS
- 大端小端模式的检测代码实现
- 借助C/C++进行Android开发:NDK的配置与使用
- mvc custom validation(check box)
- oracle字符串长度
- test-02
- route table使用傳統指令修改方法(非iproute2)
- test-04
- 插入排序(java 实现)
- 快速排序算法实现C/C++
- Ajax再回首