android - dexguard 库无法加密类
问题描述
我尝试在我的 android 库项目中加密类。但我不能那样做。变量和字符串由 dexguard 更改,但 -encryptclasses 没有影响。我在构建输出中收到日志:
Warning: not encrypting kept class com.justexample.SomeClass1
Warning: not encrypting kept class com.justexample.SomeClass2
Warning: the configuration specifies to encrypt 2 classes that it keeps at the same time.
Not encrypting those classes to avoid problems at runtime.
Note: inner class com.justexample.SomeClass1 is unencrypted, while its outer class is encrypted.
Note: inner class com.justexample.SomeClass2 is unencrypted, while its outer class is encrypted.
Note: one or more encrypted classes have unencrypted inner classes.
我的 dexguard-project.txt 是:
-verbose
-encryptstrings com.justexample.SomeClass1
-encryptclasses com.justexample.SomeClass1, com.justexample.SomeClass2
还有我的模块:
apply plugin: 'com.android.library'
apply plugin: 'dexguard'
android {
compileSdkVersion 25
defaultConfig {
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName gitVersionName()
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFile getDefaultDexGuardFile('dexguard-library-release.pro')
proguardFile 'dexguard-project.txt'
}
}
sourceSets { main {
assets.srcDirs = ['src/main/assets', 'src/androidTest/assets/']
} }
}
dependencies {
//my dependecies
}
解决方案
您正在使用默认库配置:dexguard-library-release.pro,默认情况下将保留所有公共/受保护类。
您不能对保留的类进行加密。
要解决该问题,请使用激进配置:dexguard-library-release-aggressive.pro 并指定不应混淆的库的公共 API。
不要忘记也使用 -repackageclasses com.mypackage.internal
将所有混淆的类移动到这个包中。
推荐阅读
- c# - 代码优先实体类创建跳过表,我应该重新设计吗
- javascript - 检测 Chrome 扩展程序何时安装,无需内联安装
- angular - 将 Angular6 项目部署到 docker
- bash - 在命令中的命令中带有参数的命令
- php - 如何从 php 中的逗号分隔列表生成 sendgrid json 格式
- node.js - Koa 如何帮助避免“猴子补丁”以及“Hapi”或“Express”如何不做同样的事情?
- c++ - 未初始化的局部变量错误,即使我认为我已初始化它(C++)
- javascript - 如何在简易饼图中添加延迟?
- c# - FCM 令牌检索 [Xamarin] - 由于不推荐使用的方法而更新
- java - React-native-uploader Android 错误