Android studio 3.4.1NDK开发

配置环境

1下载NDK配置

2 配置javaH工具

file--->setting-tools 配置如下参数

$JDKPath$\bin\javah.exe

-classpath . -jni -d $ModuleFileDir$\src\main\jni $FileClass$

-classpath . -jni -d $ModuleFileDir$\src\main\jni $FileClass$

3编写java 类     在java等级目录下创建jni目录

public class JniDemo {
   

    public static native String getString();
}

4右击Moude jni目录下回生成com_example_java_ndk_JniDemo.h文件

5复制com_example_java_ndk_JniDemo.h文件后缀改成.cpp

编写Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := com_example_java_ndk_G.cpp//你的cpp文件
LOCAL_MODULE := xldemo//生成so文件名
include $(BUILD_SHARED_LIBRARY)

Application.mk

APP_PLATFORM := android-16
APP_ABI :=arm64-v8a armeabi-v7a

修改

JNIEXPORT jstring JNICALL Java_com_example_java_1ndk_JniDemo_getString
  (JNIEnv *env, jclass)
  {

   return (*env).NewStringUTF("Hello cpp");
  }
  ;

6 把目录cd 到 jni目录下 执行ndk-build命令  生成libs文件和.so文件 截切到libs目录中 在build文件中配置

defaultConfig {
    applicationId "com.example.java_ndk"
    minSdkVersion 16
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"

    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"


    ndk {
        //moduleName "JniLib"
        abiFilters "armeabi-v7a" //输出指定abi下的so库
    }
    sourceSets.main {
        jni.srcDirs = []
        jniLibs.srcDir "src/main/libs"
    }

}

测试

public class Main3Activity extends AppCompatActivity {

  
 static {
     System.loadLibrary("JniDemo");生成的文件去掉lib 只写 JniDemo
 }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        ButterKnife.bind(this);
      

        Toast.makeText(this, "--"+JniDemo.getString(), Toast.LENGTH_SHORT).show();
发布了113 篇原创文章 · 获赞 120 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/xueshao110/article/details/100039496