- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的团队和我一直在努力解决我们在进入 Beta 版之前尝试混淆我们的 Android 应用程序时遇到的异常。
我们得到的异常是:
Error:Uncaught translation error: com.android.dx.cf.code.SimException: com.android.dx.rop.cst.CstInterfaceMethodRef cannot be cast to com.android.dx.rop.cst.CstMethodRef
Possible causes for this unexpected error include:<ul><li>Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
<a href="syncProject">Re-download dependencies and sync project (requires network)</a></li><li>The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.
<a href="stopGradleDaemons">Stop Gradle build processes (requires restart)</a></li><li>Your project may be using a third-party plugin which is not compatible with the other plugins in the project or the version of Gradle requested by the project.</li></ul>In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.
我们正在尝试追踪在 Proguarding 期间发生此错误的位置,但不是非常熟悉 Proguard 以了解如何找到发生故障的位置。
有什么办法可以看出这个翻译错误发生在哪里?如果我知道强制转换异常在我的代码中是什么/在哪里,也许我可以修复它。网上有引用资料指出 Google Play 服务可能会导致其他 sdk 出现问题,但我们已经使用了依赖工具,发现它在所有 sdk 中都正确链接到 8.4.0。
我们的应用程序还使用了 multiDexEnabled true 标志。
这是我们的 proguard 文件:
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /development/adt-bundle-mac/sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# (1)Annotations and signatures
-keepattributes *Annotation*,EnclosingMethod,Signature,InnerClasses
-keepnames class com.fasterxml.jackson.** { *; }
# (2)Simple XML
-keep public class org.simpleframework.**{ *; }
-keepclasseswithmembernames class javax.xml.stream.** { *; }
### Simple XML SERIALIZER SETTINGS
-keepclassmembers,allowobfuscation class * {
@org.simpleframework.xml.* <fields>;
@org.simpleframework.xml.* <init>(...);
}
-keep class javax.xml.stream.**{ *; }
-keep class org.simpleframework.xml.**{ *; }
# Ignore warnings: We are not using DOM model
#-dontwarn com.fasterxml.jackson.databind.ext.DOMSerializer
-dontwarn com.fasterxml.jackson.databind.ext.*
-dontwarn org.apache.http.**
# Keep the pojos used by GSON or Jackson
-keep class com.futurice.project.models.pojo.** { *; }
# Keep Jackson stuff
-dontwarn org.codehaus.**
-dontwarn com.bea.xml.stream.**
-dontwarn com.google.android.gms.*
-dontwarn javax.xml.stream.*
-dontwarn javax.annotation.**
-dontwarn sun.misc.Unsafe
-dontwarn com.google.j2objc.annotations.Weak
-dontwarn java.lang.ClassValue
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-dontwarn okio.*
-dontwarn org.apache.**
-dontwarn org.simpleframework.xml.stream.*
-dontwarn rx.internal.util.unsafe.*
# Keep leakcanary stuff
-dontwarn com.squareup.haha.**
-dontwarn com.squareup.leakcanary.**
# Marshmallow removed Notification.setLatestEventInfo()
-dontwarn android.app.Notification
# warnings
-dontwarn butterknife.internal.*
-dontwarn com.conviva.streamerProxies.*
-dontwarn com.anvato.**
-dontwarn com.apptentive.android.sdk.**
-dontwarn com.comscore.instrumentation.**
-dontwarn com.squareup.okhttp.**
-dontwarn com.urbanairship.json.**
-dontwarn tv.freewheel.renderers.html.*
# notes
-dontnote com.android.vending.**
-dontnote com.anvato.**
-dontnote com.conviva.**
-dontnote com.facebook.stetho.inspector.**
-dontnote com.google.android.gms.**
-dontnote com.google.gson.internal.**
-dontnote com.google.vending.**
-dontnote com.squareup.okhttp.**
-dontnote com.urbanairship.**
-dontnote tv.freewheel.extension.medialets.**
-dontnote org.apache.**
-dontnote org.json.**
#Note: duplicate definition of library class
-dontnote android.net.http.**
# For RxJava:
-dontwarn org.mockito.**
-dontwarn org.junit.**
-dontwarn org.robolectric.**
-dontwarn rx.md.internal.schedulers.NewThreadWorker
#-ignorewarnings
-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.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
##-keep public class com.android.vending.licensing.ILicensingService
#-keep public class com.fasterxml.jackson.databind.ObjectMapper
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
#-keepclasseswithmembernames class * {
# public onStart();
#}
-keep public class com.fasterxml.jackson.** {
public void set*(***);
public *** get*();
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
public void set*(***);
public *** get*();
}
-keep class * {
public void *(android.view.View);
}
如果您需要任何更多信息,请告诉我,我很乐意提供,目前这阻碍了我们发布测试版的能力。
最佳答案
所以对我们来说,解决方案似乎是删除:
-keep class * {
public void *(android.view.View);
}
来自 Proguard,因为在将其与各种库一起使用时肯定存在一些冲突。我希望这能帮助其他遇到这个问题的人,因为我们在这个问题上被困了 6 天。
应该注意的是,您随后应该明确添加对点击处理程序的引用或至少缩小范围,请在此处查看此规则的来源:Android Proguard - how to keep onClick handlers only referenced from XML layouts
关于android - 未捕获的翻译 SimException : dx. rop.cst.CstInterfaceMethodRef 无法转换为 com.android.dx.rop.cst.CstMethodRef (Proguard),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37053305/
我正在尝试将一个字符串逐个字符地复制到另一个字符串中。目的不是复制整个字符串,而是复制其中的一部分(我稍后会为此做一些条件......) 但我不知道如何使用迭代器。 你能帮帮我吗? std::stri
我想将 void 指针转换为结构引用。 结构的最小示例: #include "Interface.h" class Foo { public: Foo() : mAddress((uint
这有点烦人:我有一个 div,它从窗口的左上角开始过渡,即使它位于文档的其他任何位置。我试过 usign -webkit-transform-origin 但没有成功,也许我用错了。有人可以帮助我吗?
假设,如果将 CSS3 转换/转换/动画分配给 DOM 元素,我是否可以检测到该过程的状态? 我想这样做的原因是因为我正在寻找类似过渡链的东西,例如,在前一个过渡之后运行一个过渡。 最佳答案 我在 h
最近我遇到了“不稳定”屏幕,这很可能是由 CSS 转换引起的。事实上,它只发生在 Chrome 浏览器 上(可能还有 Safari,因为一些人也报告了它)。知道如何让它看起来光滑吗?此外,您可能会注意
我正在开发一个简单的 slider ,它使用 CSS 过渡来为幻灯片设置动画。我用一些基本样式和一些 javascript 创建了一支笔 here .注意:由于 Codepen 使用 Prefixfr
我正在使用以下代码返回 IList: public IList FindCodesByCountry(string country) { var query =
如何设计像这样的操作: 计算 转化 翻译 例如:从“EUR”转换为“CNY”金额“100”。 这是 /convert?from=EUR&to=CNY&amount=100 RESTful 吗? 最佳答
我使用 jquery 组合了一个图像滚动器,如下所示 function rotateImages(whichHolder, start) { var images = $('#' +which
如何使用 CSS (-moz-transform) 更改一个如下所示的 div: 最佳答案 你可以看看Mozilla Developer Center .甚至还有例子。 但是,在我看来,您的具体示例不
我需要帮助我正在尝试在选中和未选中的汉堡菜单上实现动画。我能够为菜单设置动画,但我不知道如何在转换为 0 时为左菜单动画设置动画 &__menu { transform: translateX(
我正在为字典格式之间的转换而苦苦挣扎:我正在尝试将下面的项目数组转换为下面的结果数组。本质上是通过在项目第一个元素中查找重复项,然后仅在第一个参数不同时才将文件添加到结果集中。 var items:[
如果我有两个定义相同的结构,那么在它们之间进行转换的最佳方式是什么? struct A { int i; float f; }; struct B { int i; float f; }; void
我编写了一个 javascript 代码,可以将视口(viewport)从一个链接滑动到另一个链接。基本上一切正常,你怎么能在那里看到http://jsfiddle.net/DruwJ/8/ 我现在的
我需要将文件上传到 meteor ,对其进行一些图像处理(必要时进行图像转换,从图像生成缩略图),然后将其存储在外部图像存储服务器(s3)中。这应该尽可能快。 您对 nodejs 图像处理库有什么建议
刚开始接触KDB+,有一些问题很难从Q for Mortals中得到。 说,这里 http://code.kx.com/wiki/JB:QforMortals2/casting_and_enumera
我在这里的一个项目中使用 JSF 1.2 和 IceFaces 1.8。 我有一个页面,它基本上是一大堆浮点数字段的大编辑网格。这是通过 inputText 实现的页面上的字段指向具有原始值的值对象
ScnMatrix4 是一个 4x4 矩阵。我的问题是什么矩阵行对应于位置(ScnVector3),旋转(ScnVector4),比例(ScnVector3)。第 4 行是空的吗? 编辑: 我玩弄了
恐怕我是 Scala 新手: 我正在尝试根据一些简单的逻辑将 Map 转换为新 Map: val postVals = Map("test" -> "testing1", "test2" -> "te
输入: This is sample 1 This is sample 2 输出: ~COLOR~[Green]This is sample 1~COLOR~[Red]This is sam
我是一名优秀的程序员,十分优秀!