Android Studio里使用JNI

教程一:在Android Studio里使用JNI

环境
  • Android Studio 1.5.1
  • 已经下载内置ndk
具体操作
  • 新建一个工程,命名为JNI on AS,点击next,选择最低的开发版本,点击next,选择一个空的Activity, 点击next,设置Activity的名字为默认的MainActivity,点击Finish
  • 选择View->Tool Windows->Project,有时候可能因为已经出现了得再点击一下,就是看到左边栏即可。选择Project(不选择Android)
  • 依次点击app,src,main逐层展开,再main目录下右键->New->Folder->JNI Folder->Finish
  • 点击java目录,在MainActivity所在的package里面新增加一个java类JNIKit,并输入以下代码以构建出Java端想要用的函数形式,下一步我们会构建一个名字为JNIDemo的库函数

    public class JNIKit {
        //计算平方
        public static native int square(int num);
        //获取欢迎信息
        public static String welcome();
        static {
            System.loadLibrary("JNIDemo");
        }
    }
  • 打开Android Studio的Terminal,进入java目录,${PROJECT_ROOT}/app/src/main/java,输入命令行参数生成JNI头文件
javah -jni sadcup.android.jnionas.JNIKit

其中每个字端都要与之后的目录结构对应上,就是一直到JNIKit.java的路径,这样在java目录下面就生成了头文件,把这个头文件移动到jni目录下面,并创建一个同名字的.cpp文件,在cpp文件里实现两个函数

JNIEXPORT jint JNICALL Java_sadcup_android_jnionas_JNIKit_square
        (JNIEnv * env, jclass obj, jint num) {
    return num * num;
}

JNIEXPORT jstring JNICALL Java_sadcup_android_jnionas_JNIKit_welcome
        (JNIEnv * env, jclass obj) {
    return (env)->NewStringUTF("I am from JNI");
}
  • Build->Make Project,会提示错误

    Error:Execution failed for task ‘:app:compileDebugNdk’.
    Error: NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin. For details, see http://tools.android.com/tech-docs/new-build-system/gradle-experimental. Set “android.useDeprecatedNdk=true” in gradle.properties to continue using the current NDK integration.


这是因为原来的ndk编辑方式会被更新替代掉,但是 目前处于试验版本,所以要进行一些修改,也就是按照错误的提示进行修改。
在gradle.properties里设置 android.useDeprecatedNdk=true
- 在app的build.gradle里android->defaultConfig下进行如下代码设置NDK编译出的库函数的名称
ndk {
    moduleName "JNIDemo"
}
  • 在MainActivity里面调用JNI函数
String str = JNIKit.welcome();
str += " and 2 * 2 = " + JNIKit.square(2);
((TextView)findViewById(R.id.text)).setText(str);
  • 最终显示结果为
I am from JNI and 2 * 2 = 4

工程源代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值