JNI - as升级后ndk-build方式编译so

1.环境变量配置

在用户变量中添加NDK_HOME的变量名,值为ndk的目录,在系统变量的path中添加%NDK_HOME%

cmd中ndk-build出现如下说明成功

Android NDK: Could not find application project directory !
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.
D:\as_tool\ndk\android-ndk-r16-beta1\build\\..\build\core\build-local.mk:151: *** Android NDK: Aborting    .  Stop.


2.创建项目编写jni代码

(我的Android studio 升级3.0后用以前的ndk-build 报错了、as支持cmake编译,但是用ndk-build方式咋用)

在as的Terminal下切换到项目的java目录下用javah先创建jni文件夹生成.h文件

E:\androidstudio\jniDemo\app\src\main\java>javah -d  ../jni com.zxy.jnidemo.MainActivity

执行完后直接在main下创建jni目录,jni里生成.h文件,改名为demo.h

根据.h文件编写c文件

#include "demo.h"
JNIEXPORT jstring JNICALL Java_com_zxy_jni1_MainActivity_getStr (JNIEnv *env, jobject obj){
    return (*env)->NewStringUTF(env,"************ Hello World ************");
}

编写Android.mk文件和Application.mk文件

Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := demo
LOCAL_SRC_FILES := demo.c
include $(BUILD_SHARED_LIBRARY)

Application.mk

APP_MODULES := demo
APP_ABI := all


3.配置gradle

项目切换成Android点击app点击File-Lick C++ Project With Gradle,下拉选择ndk-build方式,选择Android.mk路径,


app的gradle下生成

externalNativeBuild {
        ndkBuild {
            path 'src/main/jni/Android.mk'
        }
    }

4.ndk-build在main下生成.so文件

在MainActivity里调用
static {
     System.loadLibrary("demo");
}

public native String getStr();




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值