StringFog
StringFog copied to clipboard
一款自动对字节码中的字符串进行加密Android插件工具
Android Studio: 4.2 gradle: com.android.tools.build:gradle:3.3.0 Sample1 clone下来之后,直接跑跟打Release包,结果log都是明文,没报错
we use this library for encrypting strings so no other can not find the decoded value. but it is easy to get the original string by simply decompiling the apk....
FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:transformClassesWithStringFogForRelease'. > java.lang.UnsupportedOperationException: NestHost requires ASM7
#80 适配 ASM7
报错如下: Execution failed for task ':app:transformClassesWithStringFogForRelease'. > PermittedSubclasses requires ASM9
项目使用kotlin编码,反编译之后,发现一旦使用拼接的字符串,如"this is a $it" 或者 "abc"+"bcd",等。就没办法进行字符串加密。反编译apk之后。发现这些字符串仍然存在。编译之后,kotlin会将这些字符串转化为StringBuilder的形式。导致Stringfog没有生效。反编译之后还是原始字符串。大家有遇到这个问题么?怎么解决呢?
#152 解决 PermittedSubclasses requires ASM9 JavaVersion.VERSION_17 使用 JavaVersion.VERSION_11 可能会有问题
agp:8.1.2 java:17 compileSdk 34 报错内容: Execution failed for task ':app:transformReleaseClassesWithAsm'. > A failure occurred while executing com.android.build.gradle.tasks.TransformClassesWithAsmTask$TransformClassesFullAction PermittedSubclasses requires ASM9
一个项目多项配置`StringFog`导致的Bug 一个项目里面多个`Project`都配置`StringFog`会导致找不到所需的`StringFog.java` 提示`Missing class packageName.StringFog`, 这里的`packageName`是插件`apply`方法获取的最后一个`Project` 复现: 分别创建包名为`com.github.sample.A`和包名为`com.github.sample.B`的两个`Library`都配置`StringFog`, `ALibrary`打`release`包的时候会提示找不到`com.github.sample.B.StringFog`类 这里`BLibrary`是项目运行时插件获取到的最后一个`Project`,如果配置了三个`StringFog`分别是`A`,`B`,`C` 就会提示找不到`C`包名下的`StringFog.java` 原因: `StringFogTransform`的数据都是通过静态变量赋值,`className`一直都是最后一个`Project`的包名, 配置一个没有这个问题