Android NDK环境搭建(Android Studio)

Win7下安装

 

准备相关安装包

java环境:java官方网站下载jdk1.7(含)以上版本

Android SDK:下载或更新到最新,可以只下载几个关键的android版本,因为需要翻墙,下载办法参照《迅雷下载Android SDK

Android NDK:官网下载,我下载的是android-ndk-r10d-windows-x86_64.exe,最好下载最新版本,直接执行解压。

Android Studio:android官网下载不包含sdk的exe文件,复制下载地址后可通过迅雷下载。

安装配置:

java:直接安装,增加环境变量JAVA_HOME和在Path里增加JAVA_HOME\bin

Android Studio:直接安装

启动Android Studio

1.        在安装目录下启动studio64.exe文件

2.        其中一步是指定SDK目录,指定后会出现更新的提示,可能需要翻墙后才能更新,我的电脑没翻墙也更新成功了。

新建Android项目

1.        新建一个android项目,注意包名,Android Studio自动生成的包名很奇怪。

工程放置的目录是在D:\team\and_prj\OneJni,工程包名com.jifeng.onejni

2.        新建两个java类,注意不能只建一个,如果只有一个,编译的步骤会报错,应该ndk的bug。java类内容如下

public class MathKit {
    public static native int square(int num);
    static {
       System.loadLibrary("JniDemo");
    }
}
public class StringKit {
    static {
        System.loadLibrary("JniDemo");
    }
    public static native String getStr(Stringstr);
}

3.        生成.h文件,放到jni目录

打开cmd,进入指定目录,运行命令如下


相同目录下会生成com_jifeng_onejni_MathKit.h和com_jifeng_onejni_StringKit.h文件

建立jni目录


拷贝之前的文件进去。

4.        编辑cpp文件

com_jifeng_onejni_MathKit.cpp

#include <com_jifeng_onejni_MathKit.h>

JNIEXPORT jint JNICALL Java_com_jifeng_onejni_MathKit_square
  (JNIEnv *env, jclass cls, jint num) {
  return num *num;
  }
com_jifeng_onejni_StringKit.cpp(这个文件内容比较多,部分内容与本测试无关)

#include <jni.h>
#include <com_jifeng_onejni_StringKit.h>
#include <android/log.h>
#include <string.h>

#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "MainActivity", __VA_ARGS__))
#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "MainActivity", __VA_ARGS__))

JNIEXPORT jstring JNICALL Java_com_jifeng_onejni_StringKit_getStr(JNIEnv *env, jclass cls, jstring str){
  const char* charStr = env->GetStringUTFChars(str, NULL);
  LOGI("GetParam:%s", charStr);
  jstring js = env->NewStringUTF("Hello World! I am native jni!大家好1234!");
  return env->NewStringUTF(charStr);
}

5.        设置项目

设置根目录中的:local.properties

设置 APP 项目 build.gradle,添加NDK节点。

该设置是为了设置生成的Jni名称为:JniDemo

6.        测试


相关链接:

java官网jni文档

http://docs.oracle.com/javase/8/docs/technotes/guides/jni/spec/jniTOC.html

注意:

文件编码格式都要用UTF-8,不然输出中文时会产生乱码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值