美文网首页
Android Studio 编译JNI(with Extern

Android Studio 编译JNI(with Extern

作者: 天天_盖世英雄 | 来源:发表于2017-03-14 11:46 被阅读1615次

    1. 创建一个普通的Android Studio的工程(New Project时不勾选Include C++ support),然后开始配置External Tools。

    Preferences -> Toools -> External Tools

    添加我们需要用的三个工具(图里我已经加好了),点击“+”添加。下面是javah、ndk-build、ndk-build clean的配置。

    图中的宏可以点击Insert macros插入。

    2. 配置完之后在任意位置点击右键,选择External Tools就可以使用上面三个命令了。

    3. 右键单击你的Module新建jni目录

    4.修改app下的build.gradle文件, 如下图

    5.修改MyNdk下的gradle.properties文件(如果没有此文件,自己新建一个),如下图

    android.useDeprecatedNdk=true

    如果不这么做的话印象中小于r12版本的ndk会报错。(使用Preferences-> Appearance & Behavior -> System Settings -> Android SDK 可以更新到最新NDK)

    6.新建TestJni.java

    7.运行Build -> Make Project,然后再执行External Tools -> javah,结果如下图:

    这个地方最开始我遇到了这样一个问题:

    Exception in thread "main" java.lang.IllegalArgumentException: Not a valid class name: Studio.app/Contents/jre/jdk/Contents/Home/jre/lib/charsets.jar:/Applications/Android

    at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:129)

    at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:107)

    at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:64)

    at com.sun.tools.javah.JavahTask.run(JavahTask.java:503)

    at com.sun.tools.javah.JavahTask.run(JavahTask.java:329)

    at com.sun.tools.javah.Main.main(Main.java:46)

    查了一下charsets.jar是GBK编码需要用到的库,到对应目录下找charsets.jar果然没有。然后到自己装的Java目录下找发现是有的,然后修改Android Studio的JDK Location。如下图:

    再次执行External Tools -> javah,成功。

    8.会在cpp目录下生成我们想要的头文件com_testjni_TestJni.h,接下来我们需要在cpp目录下创建Android.mk、Application.mk以及native_lib.cpp。

    9.右键单击jni目录,执行External Tools -> ndk build

    10.编译成功的so文件就在sec/main/libs目录下。

    11.编写MainActivity中的代码,调用Native方法。

    12.编译运行成功。

    相关文章

      网友评论

          本文标题:Android Studio 编译JNI(with Extern

          本文链接:https://www.haomeiwen.com/subject/fakggttx.html