我最近打破了64K参考的Dalvik限制(https://developer.android.com/studio/build/multidex.html)
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/XamarinAndroid。Common.targets:错误:工具退出代码:2.输出:麻烦写入输出:字段引用过多:77369;max为65536。您可以尝试使用--Multi-dex选项。
更新MonoDroid 7的某些NUGET后出错。
当我在android设置中打开MultiDex选项并编译我的项目时,我得到-
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets:错误:工具退出代码:10。输出:错误:无法读取[/库/框架/Xamarin。ndroid.framework/Versions/7.0.1-3/lib/xbuild-frameworks/MonoAndroid/v7.0/mono.android.jar](不能处理类[android/app/ActivityTracker.class](不支持的类版本号[52.0](最大51.0,Java1.7))(pjr.mob.android)
我可以看到与此相关的bug-
https://bugzilla.xamarin.com/show_bug.cgi?id=44187
https://bugzilla.xamarin.com/show_bug.cgi?id=44013
https://bugzilla.xamarin.com/show_bug.cgi?id=33052
https://bugzilla.xamarin.com/show_bug.cgi?id=35491
看起来我必须手动下载并安装ProGuard 5。X如这些答案中详述的那样-
沙马林。Android Proguard-不支持的类版本号52.0
Xamarin Android ProGuard启用
并克服由此产生的任何问题。
然而,Xamarin Studio在proguard选项旁边的(i)信息框中明确告诉我们,不建议为调试构建运行proguard,我们应该在尝试proguard之后才运行multidex。
这是否意味着我们在启用后不能有效地调试?但是我不能调试无论如何(我甚至不能运行一个发布构建,即使我认为可能有帮助的链接)现在没有启用它?
是否有某种Xamarin支持,或者我是否需要考虑以某种方式减少我们使用的软件包等(我不确定我能做什么,因为大部分都与Google Play服务相关)。
任何帮助都很感激。
来自Xamarin Studio帮助的其他信息
JavaSDK: /usrjava版本"1.8.0_112"Java(TM)SE运行时环境(构建1.8.0_112-b16)JavaHotSpot(TM)64位服务器VM(构建25.112-b16,混合模式)
在Xamarin工作室之下-
为了向未来的读者阐明我的观点-
a)52.0错误是由于包含Xamarin的ProGuard版本需要更新到最新版本(即使在我将JDK升级到1.8之后)-
沙马林。Android Proguard-不支持的类版本号52.0
注意:AFAIIA:如果不先修复proguard错误,我无法运行multi-dex。
b) 不幸的是,Xamarin Studio允许您为调试构建勾选pro guard,但反过来又不会为调试构建实际运行ProGuard,如果您非常不熟悉如何使用ProGuard来解决问题,就会造成混乱。
xamarin文档在检查时告诉您这一点,这可能是VS的情况-
默认情况下禁用ProGuard。只有当项目设置为发布模式时,启用ProGuard选项才可用。除非选中启用ProGuard,否则将忽略所有ProGuard构建操作。
c) 因此,当达到多指标极限时;为了进步-
调试-仅启用多路复用,这应该(在工作时,我仍在使用XS)允许您按预期绕过64K错误,调试将按预期工作。对于调试生成,您应该像往常一样将链接器设置为“无链接”。
释放-首先启用ProGuard,看看您是否可以配置它来降低您的方法计数,而不需要开销或多德克斯,因为它在运行时引入了次要方法。如果你不想弄乱ProGuard配置,那么作为一个中间步骤,你从DEBUG进行的Multidex设置应该在完全测试后适用于你的版本。
当任何文档说明您应该首先尝试ProGuard,然后尝试multidex时,这意味着只针对一个版本,而不是调试构建。
更新:我还必须通过Xamarin支持来构建我的Multi-dex,但从https://releases.xamarin.com/stable-release-cycle-8-service-release-1/这是现在工作良好。我在XS中的Android项目有一个自定义应用程序类,当勾选multidex时,构建工具没有从所需的multidex类正确继承该类。
不支持的类版本号[52.0](最多51.0,Java 1.7)
1)您得到的错误是因为没有安装Java v8和/或配置Xamarin来使用它。
Ref: java ang不支持Xamarin Studio中的ClassVersion错误
第二)MultiDex
可以在没有Proguard
的情况下使用,并且仅在API-20及以下版本上需要。启用Multi-Dex
可以让Android SDK工具根据需要创建尽可能多的辅助性文件。
第3)如果您正在启用Proguard
,则应考虑更换Proguard。jar
在您的android idk中
使用Facebook版本,因为它要快得多;-)
裁判:https://github.com/facebook/proguard
或者使用基于SourceForge的版本:
参考:Xamarin。Android ProGuard-不支持的类版本号52.0
我得到以下错误: 找不到[Android/view/view](有2个已知超级类)和[com/rey/Material/widget/listpopupwindow$DropDownListView](有2个已知超级类)的通用超级类
问题内容: 我的应用程序在没有启用proguard的情况下可以完美运行,但是当我启用它时,该应用程序立即崩溃。我尝试了配置中的许多组合都无济于事。 有什么我应该保留的东西,我丢失了吗? proguard配置:https : //gist.github.com/hanleyhansen/99fc07807950bae8e4f5 完整的日志:https ://gist.github.com/hanle
这几天我试图解决这个问题,但还是没有成功。如果我建立发布版本没有proGuard然后一切都好。 我读了许多关于可能问题的话题,但对我来说没有任何帮助。到目前为止,我做了如下: Java最大堆大小-1G 一般Android-dontwarnorg.apache.http.**-dontwarnandroid.net.http.Android HttpClient -保持课堂秩序。支持多重索引。多索引
你好,我想缩小我的apk文件在反应本地与proGuard.后启用proGuard在我的bulid.gradle文件: def ENABLEPROGUARDINRELEASEBILDS=true 运行此代码后,我遇到错误: 错误: F:\awesomeproject\android\app\build\intermediates\transform\proguard\release\0。ja:D8:
在发布模式下,当我只启用multi-dex时,我的应用程序大小为33.30MB,这相当大。经过一系列的研究,我意识到PROGUARD缩小了apk的大小。在我的解决方案中启用proguard,会出现此错误。PROGUARD的解决方案中可能缺少什么(缩小我的应用程序大小)? proguard.cfg
我正在工作xamarin应用程序。当我启用"ProGuard"在Android属性,而建立的应用程序,我得到以下错误: 开发环境: Visual Studio 2015 Xamarin 4.0。4.4