初试NDK开发

这里用ndk10er,,编译中遇到的坑
NDK环境配置-----本地native方法-----根据native方法,terminal javah 命令生成JIN文件夹下同时生成h头文件------实现头文件的方法.c/c++文件—写Android.mk,application.mk文件------gradle中引用android.mk文件,配置module名(依赖库名称),so平台-----静态引用so库----cmd到项目JIN目录执行ndk-build生成so文件

1,是否允许ndk编译:gradlew.properties添加
android.deprecatedNdkCompileLease=1515317190556(android.useDeprecatedNdk=true studio3.1中不在用了)
2,找不到MK文件配置Android.mk路径

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

可通过此方法添加
在这里插入图片描述
选择NDK去项目路径下找到Android.mk文件路径

在这里插入图片描述
.c文件和.cpp文件语法不通,,会提示具体语法报错
在这里插入图片描述

项目编译通过跑起来,就可以调用C的方法了,,通过NDK-build可以打包成相应的SO

CMD命令

D:\MyProgect\NDKDemo>
D:\MyProgect\NDKDemo>cd app/src/main/jni/

D:\MyProgect\NDKDemo\app\src\main\jni>ndk-build
Android NDK: APP_PLATFORM not set. Defaulting to minimum supported version android-16.
Android NDK: WARNING: APP_PLATFORM android-16 is higher than android:minSdkVersion 1 in D:/MyProgect/NDKDemo/app/src/main/AndroidManifest.xml. NDK binaries will *not* be compatible with devices older than android-16. See https:/
/android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md for more information.
[arm64-v8a] Compile        : hello-jni <= cjx_liyueyun_ndkdemo_Hello.c
[arm64-v8a] SharedLibrary  : libhello-jni.so
[arm64-v8a] Install        : libhello-jni.so => libs/arm64-v8a/libhello-jni.so
[x86_64] Compile        : hello-jni <= cjx_liyueyun_ndkdemo_Hello.c
[x86_64] SharedLibrary  : libhello-jni.so
[x86_64] Install        : libhello-jni.so => libs/x86_64/libhello-jni.so
[armeabi-v7a] Compile thumb  : hello-jni <= cjx_liyueyun_ndkdemo_Hello.c
[armeabi-v7a] SharedLibrary  : libhello-jni.so
[armeabi-v7a] Install        : libhello-jni.so => libs/armeabi-v7a/libhello-jni.so
[x86] Compile        : hello-jni <= cjx_liyueyun_ndkdemo_Hello.c
[x86] SharedLibrary  : libhello-jni.so
[x86] Install        : libhello-jni.so => libs/x86/libhello-jni.so
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值