Android Studio为Java程序添加JNI本地代码

本文提供了一种在Android Studio上为Java程序添加JNI本地代码的新方法。通过具体步骤指导如何创建JNI.java文件、编译JNI类、生成并实现.h头文件、配置CMakeLists.txt等,最终成功生成.so库。
摘要由CSDN通过智能技术生成

    传统地,在Android Studio上为Java程序添加JNI本地代码的方法主要是:

在build.gradle(Module: app)中的defaultConfig添加:

ndk {
moduleName "native-lib"//so库名
ldLibs "log", "z", "m"
abiFilters "armeabi", "armeabi-v7a", "x86"
}


在gradle.properties中添加:

android.useDeprecatedNdk=true 

    随着Android Studio的不断更新,该方法似乎已经失效。android.useDeprecatedNdk=true产生提示使用:android.deprecatedNdkCompileLease=1524619220074,又产生错误“Process 'command ……' finished with non-zero exit value 2”。网上教程又说在build.gradle(Module: app)的android{}中添加:

sourceSets.main {

        jni.srcDirs = []

    }

但这又导致无法生成库文件。各种曲折方法都试过,现在直接呈上最新解决方案。

1. 新建类JNI.java,声明native方法;
public class JNI {
static {
System.loadLibrary("native-lib);//加载so库,实现native方法
}

public static native String sayHello();//声明native方法
}


2. 使用android studio终端编译JNI.java,生成JNI.class;

javac JNI.java

3. 在类包名的上一级使用javah生成.h头文件;
javah -jni com.example.xxx.xxx.JNI

4. 在app/src/main下建立jni文件夹,新建native-lib.cpp并实现上一步生成的头文件中的函数;

5. 在build.gradle(Module: app)的defaultConfig{}中添加:

externalNativeBuild {

    cmake {
        cppFlags ""
    }
}

6. 在build.gradle(Module: app)的android{}中添加:
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}


7. 在app\下新建CMakeLists.txt文件,并添加如下内容:

cmake_minimum_required(VERSION 3.4.1)

add_library(
             native-lib#库名
             SHARED
             src/main/jni/native-lib.cpp )#本地文件路径

find_library(
              log-lib

              log )

target_link_libraries( 、
                       native-lib#库名

                       ${log-lib} )

8. rebuild后在app\build\intermediates\cmake\debug\obj下生成.so库

有图有真相!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值