Android Studio NDK开发配置

Home / Android MrLee 2016-2-17 4029

一直用eclipse开发安卓项目,因为可以顺带做下Java程序,所以一直没换。最近公司有一个项目,从别人手中接过来的,用的Andtoid Studio编译的。因为Android Studio的NDK环境和Eclipse结构不一样,所以移植也麻烦,因为依赖相当多的库,于是学下怎么使用Android Studio(后面简称AS)。特此做下笔记!
首先来个简单的工程,我啥都不改了,名称:MyApplicationJNI,放在D盘根目录。然后新建一个java class文件,用于放置JNI代码,如果放到什么activity或者用到了android的api类文件中,编译就需要带一些参数,相当麻烦。我们这里为了省事,怎么简单怎么整!路径和MainActivity一样。创建好了按CTRL+F9编译一下,或者在Build-Make Project点下即可。完成之后准备生成.h的头文件,此时在AS中选择终端(Terminal),然后会自动进入工程的根目录,我们要切换到app\src\main,为什么要切换到这个目录呢?稍后就知道了。然后执行以下命令,当然了,如果你的SDK目录不是在C盘的话需要作出适当的改动。
D:\MyApplicationJNI\app\src\main>javah -d jni -classpath C:\Users\Windows\AppData\Local\Android\sdk\platforms\android-23\android.jar;..\..\build\intermediates\classes\debug com.example.windows.myapplicationjni.JNI

javah是JDK自带的一个工具,配置我就不多说了。完成了这步之后,然后在AS左project中,点击2下下app目录(关闭,展开)相当于刷新了目录列表,此时jni目录就出来了,如下图:

QQ截图20160217140227


然后创建一个cpp source文件,注意不要勾选头选项,选择Cpp格式的好处就是写代码简洁些,不像C文件那么多。

QQ截图20160217140322


当然也可以要头文件,除非你有需求!然后代码如下:
//
// Created by Windows on 2016/2/17.
//
#include "com_example_windows_myapplicationjni_JNI.h"
JNIEXPORT jstring JNICALL Java_com_example_windows_myapplicationjni_JNI_stringFromJNI
        (JNIEnv *env, jclass clazz){
    return env->NewStringUTF("Hello,ITHTW"); }

再按CTRL+F9编译,此时会报错: 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. 那里这里提示我们,需要在gradle.properties中添加一行代码
android.useDeprecatedNdk=true

添加完成之后再CTRL+F9编译,OK,错误没了,提示成功了。如下图:

QQ截图20160217141355


OK,点击运行成功,效果图如下:

QQ截图20160217141932


这里需要注意的是,我没有配置其它的NDK设置,系统默认是的生成了libapp.so,所以加载的只能加载名称为:app
public class JNI {
    static{
        System.loadLibrary("app");
    }
    public static native String stringFromJNI();
}

这些当然是可以改的啦,这个在build.gradle中改,切记别改错了,是在Module不是Project

QQ截图20160217142551


这个有代码提示的,自己手打很快的。再次CTRL+F9,稍等几秒看看Gradle Console提示成功
……
:app:compileDebugJavaWithJavac UP-TO-DATE
:app:compileDebugNdk
:app:compileDebugSources
:app:compileDebugAndroidTestJavaWithJavac UP-TO-DATE
:app:compileDebugAndroidTestNdk UP-TO-DATE
:app:compileDebugAndroidTestSources UP-TO-DATE
BUILD SUCCESSFUL
Total time: 4.233 secs

然后把java代码里面加载库名称改成配置中的JNI即可运行
 System.loadLibrary("JNI");

 

本文链接:https://www.it72.com/7843.htm

推荐阅读
最新回复 (0)
返回