Android编译存放秘钥的so文件




[]( )2\. 通过java文件生成 jni

--------------------------------------------------------------------------------



1.  在代码目录`main`目录下创建`jni`的目录

2.  通过创建好的java文件自动生成`.h`文件  

    有两种方法都可以生成  

    (1)通过命令生成  

    (2)可以创建一个类似于快捷操作的方法  

    Setting->Tools->External Tools 添加一个操作方式  

    对应的内容如下:



Name: ndk-build

Program:JDKPathJDKPathJDKPath\bin\javah.exe

Argument:-classpath . -jni -d ModuleFileDirModuleFileDirModuleFileDir/src/main/jni FileClassFileClassFileClass

Working directory:ModuleFileDirModuleFileDirModuleFileDir\src\main\Java




说明: `Program`是 `javah`的路径,需要根据JDK的路径做调整,其它的参数可与上诉保持一致。



3.  光标对准第一步中创建的java文件,右键->External Tools->ndk-build (此时会在jni中生成对应的`.h`文件)



[]( )3\. 创建`Android.mk` 和 `Application.mk` 和 `c 文件`

------------------------------------------------------------------------------------------------------------



Android.mk



LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := web-lib

LOCAL_SRC_FILES := jni.c

include $(BUILD_SHARED_LIBRARY)




Application.mk



APP_ABI:=all




jni.c



#include <stdio.h>

#include <com_xx_jni_JNIUtil.h>

JNIEXPORT jstring JNICALL

Java_com_xx_jni_JNIUtil_initData(JNIEnv *env, jobject jobj){

char *cstr = “xxx”;

jstring jstr = (*env)->NewStringUTF(env, cstr);

return jstr;

}




[]( )4\. 添加build文件

---------------------------------------------------------------------------



在app/build.gradle 中的 android 标签内



sourceSets.main {

    jni.srcDirs = []

    jniLibs.srcDirs = ['src/main/jniLibs']//设置目标的so存放路径

}



task ndkBuild(type: Exec, description: 'Compile JNI source via NDK') {



    commandLine "F:\\AndroidStudioSdk\\ndk\\20.1.5948944\\ndk-build.cmd", //配置ndk的路径



            'NDK_PROJECT_PATH=build/intermediates/ndk', //ndk默认的生成so的文件



            'NDK_LIBS_OUT=src/main/jniLibs', //配置的我们想要生成的so文件所在的位置



            'APP_BUILD_SCRIPT=src/main/jni/Android.mk',//指定项目以这个mk的方式



            'NDK_APPLOCATION_MK=src/main/jni/Application.mk'//指定项目以这个mk的方式



}



tasks.withType(JavaCompile) {

        //使用ndkBuild

    compileTask -> compileTask.dependsOn ndkBuild



}



[]( )5\. 编译成so

-----------------------------------------------------------------------



点击 Build -> Make Project  

此时会在相应的目录中生成so文件。



此时就可以使用so文件了。



直接使用即可使用了



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值