记录:
1、ndk-build配置
1.1nkd-build参数设置,网上没有参数的都是忽悠的,感谢
https://blog.csdn.net/heiheiya/article/details/80772567
File->Settings->Tools->External Tools
点击”+”号,添加NDK Build
Name: NDK Build
Group: NDK
Description: NDK Build
Tools Settings:
Program: Ndk安装目录/ndk-build.cmd
Parameters:NDK_PROJECT_PATH=$ModuleFileDir$/build/intermediates/ndk NDK_LIBS_OUT=$ModuleFileDir$/src/main/libs NDK_APPLICATION_MK=$ModuleFileDir$/src/main/jni/Application.mk APP_BUILD_SCRIPT=$ModuleFileDir$/src/main/jni/Android.mk V=1
NDK_PROJECT_PATH=$FileDir$/../../../build/intermediates/ndkBuild/release
NDK_LIBS_OUT=$FileDir$/../libs
NDK_APPLICATION_MK=$FileDir$/Application.mk
APP_BUILD_SCRIPT=$FileDir$/Android.mk
Working directory: $SourcepathEntry$ //一定要写这个,网上写其他参数的都没有通用性
2、javah配置
2.1 javah参数设置
Name: Javah
Group: NDK
Description: Javah
Tools Settings:
Program: 你的Java JDK安装目录/bin/javah.exe
Parameters: -v -jni -d $ModuleFileDir$/src/main/jni $FileClass$
Working directory: $SourcepathEntry$
3、NDK混淆的相关注意事项
-dontskipnonpubliclibraryclasses # 不忽略非公共的库类
-optimizationpasses 5 # 指定代码的压缩级别
-dontusemixedcaseclassnames # 是否使用大小写混合
-dontpreverify # 混淆时是否做预校验
-verbose # 混淆时是否记录日志
-keepattributes *Annotation* # 保持注解
-ignorewarning # 忽略警告
-dontoptimize # 优化不优化输入的类文件
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆时所采用的算法
-keepclasseswithmembernames class * {
native <methods>;
}
-keep class com.pax.ndk.PaxNdk { *; }
-keep class com.pax.utils.NativeScanner {
public void callback(java.lang.String);
}
-keepclasseswithmembers class com.pax.ndk.PaxNdk{
public static void callbackPrint();
}
3.2、回调方法不能混淆,否则JNI将不能找到方法,注意上面两处红色地方,都可达到不混淆方法的效果