为了增加apk反编译难度,逐渐学习android加密的相关知识,这里做一个整理.

        将Android里面一些常用如url,还有ssl证书等可以放入so.这个就涉及到ndk.下面以Mac 版android studio 为例进行操作.

        网上别人写的都很好,我这里主要讲下自己的操作情况和遇到的坑.

1.配置ndk开发路径,如果没有去download,在android studio 中找到sdk路径的目录,最下面那个就是ndk的路径

2.如下图建立一个类,loadLibrary里面是想要生成的so的名字

3.建立好之后,Build --> Make Project,找到build生成的对应class文件记住目录


4.打开as自带的命令行:

(1.)cd app/src/main

(2).javah -d jni -classpath (你的class的绝对路径)

以我为例子:

javah -d jni -classpath /Users/tusm/xxx....此处省略..xxx/app/intermediates/classes/debug com.xxxxx此处省略.NativeUtils

5.确定之后会在main下面生成一个jni目录,点进去发现多了一个.h文件,我们建立一个.c的文件.c里面代码如下

#include "com_xx_xx_xx_NativeUtils.h"

JNIEXPORT jstring JNICALL Java_com_xx_xx_xx__NativeUtils_getStringFromNative

(JNIEnv *env, jobject obj) {

return (*env)->NewStringUTF(env,"啦啦啦");

}

(1)注意这里 include 后面的名字为你生成的.h文件的全名 包括后缀

(2)下面的方法名和.h里面的方法名要一直

(3)啦啦啦那行是自己写的代码

6.配置项目的gradle.properties,在最后复制上下面几句话

android.useDeprecatedNdk=true

如果是3.0 注释掉上面那句话,复制粘贴android.deprecatedNdkCompileLease=1522807211997

(此处稍微注意下,后面那串数字可能每个用户都不一样,如果你是3.0的话,你可以先用上面的那个,然后编译,这时候会有log,你把对应的数字替换我上面那句话的1522807211997就可以)

7.打开app下对应的build.gradle。

在defaultConfig节点下添加

ndk {

          moduleName "zbx"        //生成的so名字

           abiFilters "armeabi", "armeabi-v7a", "x86"  //输出指定三种abi体系结构下的so库。

       }

重新rebuild

7.编译好了之后,会在app/intermediates/ndk下面 生成几个so文件,怎么使用so,这个自己去了解,大功告成

更多相关文章

  1. 使用GDB调试Android(安卓)NDK native(C/C++)程序
  2. android Sqlite数据库事务处理*.sql 语句集文件
  3. Android中使用讯飞语音合成(报21001)组件未安装
  4. AndroidStudio 编译项目报错 Android(安卓)resource linking fai
  5. Android(安卓)ScrollView用法
  6. Android(安卓)运行崩溃找不到so包解决方案 UnsatisfiedLinkError
  7. 常用方法(1)------根据图片的url路径获得Bitmap对象
  8. Android程序调试时生成main.out.xml文件,报错: Resource entry mai
  9. 使用android中的AIDL让Service与Activity通信[转]

随机推荐

  1. EditText属性描述
  2. 【Android學習專題】實用參考:android权限
  3. 【Android】调用系统应用常用uri & inten
  4. Androd学习笔记——Android中Touch事件的
  5. 【转】How to port native (C/C++) libra
  6. 《Android 获取当前app的版本号和版本名
  7. Android(安卓)Studio运行Hello World程序
  8. android 中给图片加圆角效果
  9. Android API 中文 (112) ―― ThumbnailU
  10. Android Binder机制(三) ServiceManager