美文网首页
Android Studio 简单制作so文件

Android Studio 简单制作so文件

作者: glory辉 | 来源:发表于2018-11-15 17:54 被阅读0次
    有时候一些数据需要放在一些不可阅读的文件中进行存储,由于java的特性,注定了这些私密信息不能放到Java文件中去,而android中一般放在so库文件中,来增加破解难度下面开始做一些android studio 开始做so库之前的一些准备工作,首先,先去下载android NDK 屏幕快照 2018-11-15 下午4.52.14.png

    CMaker我还不会用😂,用的是NDK方式

    其次配置项目目录下的local.properties 文件下的ndk目录

    屏幕快照 2018-11-15 下午5.01.40.png

    然后配置app下的bulid.gradle
    指定你要做so库的名字,和你需要支持的类型

     ndk {
    
                moduleName "hyUtils2_jni"
                abiFilters "armeabi", "armeabi-v7a", "x86"
    
            }
    

    首先写一个工具类,这里先声明一点,也是我踩坑的地方就是,这个工具类的地方必须跟你将来要调用so库文件的工具类的地方的包名必须一致

    public class HYTools {
    
        static {
            System.loadLibrary("hyUtils2_jni");
        }
        public static native String getKey2();
    }
    
    

    写完这个类后,点击Bulid --->MakeProject 构建一下

    然后去 WechatIMG28.png

    找到这个文件的路径,然后通过命令cd 到当前com.test.test.utils所在的dbug文件夹下,
    执行命令 Javah -jni com.test.test.utils.HYTools
    执行完后再debug文件夹下会生成一个.h文件,内容如下

    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    #include "../../../../../Library/Android/sdk/android-ndk-r16b/sysroot/usr/include/jni.h"
    /* Header for class com_test_utils_HYTools */
    
    #ifndef _Included_com_test_utils_HYTools
    #define _Included_com_test_utils_HYTools
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
     * Class:     com_test_utils_HYTools
     * Method:    getKey1
     * Signature: ()Ljava/lang/String;
     */
    JNIEXPORT jstring JNICALL Java_com_test_utils_HYTools_getKey2
      (JNIEnv *, jclass);
    
    #ifdef __cplusplus
    }
    #endif
    #endif
    
    

    这个文件是自动生成的不需要修改

    然后在src-->main-下新建一个包名为jni把上面生成的文件拷贝到当前目录

    如图所示
    这里忽略其他两个文件


    1542275136907.jpg

    build.gradle 里面配置android.mk构建文件

     buildTypes {
           release {
               minifyEnabled false
               proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
           }
    
           externalNativeBuild {
               ndkBuild {
                   path 'src/main/jni/Android.mk'
               }
           }
       }
    

    下面贴android.mk文件,其他是固定格式(我也没研究过了)

    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    LOCAL_MODULE    := hyUtils2_jni    //so库名
    
    LOCAL_SRC_FILES := ndkdemo.c   //这个文件里就要写你要做的逻辑内容了 
    
    include $(BUILD_SHARED_LIBRARY)
    
    
    

    下面贴ndkdemo.c的文件内容,这个是个c文件大家看内容就大概知道是做什么的了

    
    
    #include <jni.h>
    #include "com_test_utils_HYTools.h"
    
    JNIEXPORT jstring JNICALL Java_com_test_utils_HYTools_getKey2
            (JNIEnv *env, jobject obj){
        return (*env)->NewStringUTF(env,"123244343424");
    }
    
    
    
    

    对的,你的需要他做什么就是在这里面写的

    写到这里其实已经接近成功了 ,剩下的就是重新Make Project一下了 如果没有报错的话,这个路径下就有你想要的so库文件了

    1542275474199.jpg

    拿去用就好了

    相关文章

      网友评论

          本文标题:Android Studio 简单制作so文件

          本文链接:https://www.haomeiwen.com/subject/eqnyfqtx.html