如何解决混淆混淆
好的,我在 Android Studio 中使用 Java 构建了一个应用程序。 它正在使用 Knox,我尝试使用 ProGuard 对其进行混淆,并且在很长一段时间之后我设法做到了。 我并没有真正“管理”我添加的
-忽略警告
到 .pro 文件以使其工作。我意识到这不是解决方案,但就目前而言,我似乎无法找到解决方法。我要么收到以下错误:
警告:有 3296 个未解析的类或接口引用。 您可能需要添加缺少的库 jar 或更新它们的版本。 如果您的代码在没有缺少类的情况下运行良好,您可以取消
如果我使用
构建应用程序,我认为这来自混淆过程minifyEnabled 假
它工作正常。我尝试使用 -keep 函数,但我不知道如何使用,我尝试了以下操作:
对于警告线:
Warning: com.samsung.android.knox.ucm.core.UniversalCredentialUtil: can't find referenced class com.sec.enterprise.knox.ucm.core.UniversalCredentialUtil
我试过了:
-保持类 com.samsung.android.knox.ucm.core.UniversalCredentialUtil.**
但我还是遇到了同样的错误。 我试过了:
-keep class com.samsung.android.knox.ucm.core.UniversalCredentialUtil.** { *; }
但还是同样的错误。 我也试过:
-keep class com.samsung.android.knox.ucm.core.** { *; }
和
-保持类com.samsung.android.knox.ucm.core.**
但无济于事。
我尝试从 proguard 中取出整个罐子:
-injars bin/knoxsdk.jar
-dontpreverify
-repackageclasses ''
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation*
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.broadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context,android.util.AttributeSet);
public <init>(android.content.Context,android.util.AttributeSet,int);
public void set*(...);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context,android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context,int);
}
-keepclassmembers class * extends android.content.Context {
public void *(android.view.View);
public void *(android.view.MenuItem);
}
-keepclassmembers class * implements android.os.Parcelable {
static ** CREATOR;
}
-keepclassmembers class **.R$* {
public static <fields>;
}
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
但我得到以下信息:
相同的输入 jar [...\app\libs\knoxsdk.jar] 被指定了两次。 即使我不知道它在哪里指定。
无论如何,在使用上面提到的 -ignorewarnings 之后,我已经设法创建了一个 APK。我尝试使用 dex2jar 检查它,但在反编译它时遇到了问题。尽管如此,我已经尝试将它放在我的设备上,它安装正确,但它引发了异常:
setUsbConnectionType(int) method from a.b.a.a.b.d class is only supported from API level 20 and above (current is 0)
我意识到 setUsbConnectionType 是一个 Knox 函数,但是,为什么我得到当前 API 为 0?
所以基本上,tl;dr:
谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。