问题描述
有两个模块:
- app(包含 Java 和 Kotlin 类的主/应用程序模块)
- lib-wrapper(包含 Java 类的 Android 库模块)
lib-wrapper 发布在 Amazon S3 存储桶上,用作应用程序模块中的库依赖项。混淆规则适用于 lib-wrapper。到目前为止一切正常。
然后将lib-wrapper的所有类从java转为kotlin。
-
即使在 Java 类中使用“无法解析符号”,应用程序也可以编译并运行而不会出错。但是对于新用户来说,使用 lib-wrapper 非常困难,因为它不会将库类和方法显示为自动完成建议。
-
反编译 apk 文件,lib-wrapper 类显示所有预期的类和方法都是公共的,公共成员是纯/去混淆的。 (这是预期的。)
-
如果我禁用 Proguard(lib-wrapper 的 build.gradle 中的“minifyEnabled false”),一切正常。
所以我在 lib-wrapper 的 proguard-rules.pro 文件中添加了以下 kotlin 特定的 proguard 规则,但没有帮助:
-keep class kotlin.*.* { *; }
-keep class kotlin.Metadata { *; }
-dontwarn kotlin.**
-keepclassmembers class **$WhenMappings {
<fields>;
}
-keepclassmembers class kotlin.Metadata {
public <methods>;
}
-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
public static void checkParameterIsNotNull(java.lang.Object,java.lang.String);
}
lib-wrapper 的 build.gradle 文件中使用的插件:
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'maven-publish'
apply plugin: 'org.jetbrains.dokka-android'
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
任何帮助将不胜感激。提前致谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)