作者:洗吉精洗白菜_773 | 来源:互联网 | 2023-10-13 08:39
Androidstudiondkdemo本文使用的是Androidstudio2.0:新建工程并添加一个新的类NDKTest.java1.加载即将生成的.so文件
Android studio ndk demo 本文使用的是Android studio 2.0:
新建工程 并添加一个新的类
NDKTest.java 1.加载即将生成的.so文件 2.native接口
package com.example.test.demo;/*** Created by admin on 2017/8/20.*/ public class NDKTest {static {System.loadLibrary("nkdTest" );}public native String getString (); }
进行编译 会在的build文件加下生成对应的class文件,如下图所示
(此处要切换到project模式下)
生成.h文件 添加.c文件 编译生成.lib文件 命令行切换到你的工程main目录下 D:\demo\app\src\main>javah -d jni -classpath D:\demo\app\build\intermediates\classes\debug com.example.test.demo.NDKTest 运行后 在该目录下将会生成jni/com_example_test_demo_NDKTest.h
在该目录下添加.c文件com_example_test_demo_NDKTest.c
JNIEXPORT jstring JNICALL Java_com_example_test_demo_NDKTest_getString(JNIEnv *env, jobject jobject){return (*env) -> NewStringUTF(env, "hello ndk test" ); }
build.gradle 文件添加配置 此处moduleName就是创建的java文件加载的库 要保持一致
ndk {moduleName "nkdTest" abiFilters "armeabi" , "armeabi-v7a" , "x86" stl "stlport_static" }
编译与运行 编译成功后会生成.lib文件
在MainActivity.java修改
package com.example.test.demo;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.TextView;public class MainActivity extends AppCompatActivity {@Override protected void onCreate (Bundle savedInstanceState) {super .onCreate(savedInstanceState);setContentView(R.layout.activity_main);TextView textView = (TextView)findViewById(R.id.test);textView.setText(new NDKTest().getString());} }
可能出现的错误: 1.
Consider trying the new experimental pluginSet "android.useDeprecatedNdk=true" in gradle.properties to continue using the current NDK integration
按照提示在gradle.properties文件中末尾添加android.useDeprecatedNdk=true
2.
Error:java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor version 52.0 ... ...
修改版本 重新运行
运行结果: