问题描述
好的,我在 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 (将#修改为@)