当前位置: 首页 > 知识库问答 >
问题:

生成xamarin时CREATEMULTIDEXMAINDEXCLASSLIST错误。使用Multidex的android

燕钟展
2023-03-14

编辑-减少到问题的根源

我在启用多索引时遇到此错误。

CREATEMULTIDEXMAINDEXCLASSLIST:错误:期望类路径分隔符':'之前'. jar'在参数2

我已经找到了包含在ProGuard命令行中的这个jar文件:

obj/Debug/__library_projects__/DeviceAPI_Android/library_project_imports/DeviceAPI_Android.Jars.cw-deviceapi(2016.05.16).jar

导致错误的是文件名中的括号。我已经通过在终端提示符下运行命令证明了这一点,并且删除了这个jar文件,并且一切正常。

那么问题是——这个文件来自哪里?是打包的吗?我在那里看不到它。

如果我能找到,我应该能够纠正的名称和建设项目。

我已经追踪到一个名为DeviceAPI_Android.dll的第三方绑定库,它包装了一个用于控制硬件条码扫描器的jar文件。jar文件的文件名中确实有括号和日期。

因此,解决方案是一个或多个:

>

  • 从具有更好命名的jar文件的供应商处获取新版本的绑定库。

    用一个更好的jar文件自己重建库。可能有问题,因为我必须从头开始创建转换等。

    调整构建工具/makefile,使ProGuard命令行对命名奇怪的jar文件更有弹性。

    GitHub上有一个演示此问题的示例项目。

    版本信息:===Visual Studio Community 2017 for Mac===

    版本7.1(构建1297)安装UUID: 650b4c91-c7f5-4ee5-ad70-6f178f314906运行时:单声道5.2.0.215(d15-3/da80840)(64位)GTK 2.24.23(罗利主题)

    Package version: 502000215
    

    ==NuGet===

    版本:4.3.0.2418

    === .网芯===

    运行时:未安装SDK:未安装MSBuild SDK:/Library/Frameworks/Mono。framework/Versions/5.2。0/lib/mono/msbuild/15.0/bin/Sdks

    ==沙马林。剖析器===

    版本:1.5.5位置: /Applications/XamarinProfiler.app/Contents/MacOS/Xamarin分析器

    ==沙马林。Android===

    版本:7.4。0.21(Visual Studio社区)Android SDK:/Users/jameslavery/Library/Developer/Xamarin/Android SDK macosx支持的Android版本:2.3(API级别10)4.0。3(API等级15)4.1(API等级16)4.3(API等级18)4.4(API等级19)5.0(API等级21)5.1(API等级22)6.0(API等级23)7.0(API等级24)7.1(API等级25)

    SDK工具版本:25.2。5 SDK平台工具版本:25.0。5 SDK构建工具版本:25.0。3.

    Java SDK:/Library/Java/JavaVirtualMachines/jdk1。8.0_144.jdk/Contents/Home java版本“1.8.0_144”java(TM)SE运行时环境(构建1.8.0_144-b01)java热点(TM)64位服务器虚拟机(构建25.144-b01,混合模式)

    Android Designer EPL代码可在这里:https://github.com/xamarin/AndroidDesigner.EPL

    ==苹果开发者工具===

    Xcode8.0 (11246)构建8A218a

    ===Xamarin. iOS===

    版本:10.12。0.20(Visual Studio社区)散列:80b8487d分支:d15-3构建日期:2017-08-18 16:07:26-0400

    ==沙马林。苹果===

    版本:3.6。0.19(Visual Studio社区)

    ==Xamarin检查员===

    版本:1.2。2哈希:b71b035分支机构:d15-1构建日期:2017年4月21日星期五17:57:12 GMT

    ===构建信息===

    发布ID: 701001297 Git修订版: 9c5299666538b2f8baf501418a5c064d784d64da构建日期:2017-08-07 11:29:35-04Xamarin addins: 3bb0c32a14f1b7e368bf5ac53a84c3581c019391构建车道:单开发狮-d15-3

    ==操作系统===

    Mac OS X 10.11.6 Darwin 15.6.0 Darwin内核版本15.6.0 Thu Jun23 18:25:34PDT 2016 root: xnu-3248.60.10~1/RELEASE_X86_64x86_64

    ==已启用的用户安装的加载项===

    LiveXAML 1.0 Redth的插件1.0。9

  • 共有2个答案

    胡弘毅
    2023-03-14

    这是因为有一个绑定库,其中嵌入了一个文件名中带有括号的Jar文件——这会导致ProGuard的命令行失败。

    @jondouglas为此提交了Xamarin bug 59237。希望解决办法是使ProGuard的命令行对命名奇怪的文件更具弹性。

    同时,我将必须获得一个更新的绑定库,其中嵌入的jar文件没有带括号(或其他打断命令行的字符)的名称。

    感谢@jondouglas帮助诊断问题。

    龚沛
    2023-03-14

    我报告了此问题的以下错误:

    https://bugzilla.xamarin.com/show_bug.cgi?id=59237

    请随时抄送您自己到这个问题得到通知时,它得到修复。目前,您必须通过重命名来解决此问题。在某种程度上说是罐子。

    我希望这有帮助!

     类似资料:
    • 我最近打破了64K参考的Dalvik限制(https://developer.android.com/studio/build/multidex.html) /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/XamarinAndroid。Common.targets:错误:工具退出代码:2.输出:麻烦写入输出:字段

    • 我正在使用Jenkins构建Xamarin Android项目。 我看到了错误: /图书馆/框架/Xamarin。Androidframework/Versions/Current/bin/mono-symbolicate:line 6:exec:mono:notfound/Library/Frameworks/mono。framework/External/xbuild/Xamarin/Andr

    • 问题内容: 我已将我的应用程序转换为MultiDex以承受64k dex限制。现在看起来像这样: 我已经从App中提取了所有常用的逻辑以进行工作。而且在其他队友的计算机上也可以正常工作。但是不和我在一起。它不断抛出应用程序创建: 我有相同的Android Studio,gradle,sdk,jdk版本和相同的代码。我什至尝试格式化硬盘驱动器并重新安装OS,以确保环境相同。造成这个奇怪问题的原因是什

    • 我已经安装了Xamarin。谷歌游戏服务。将基本nuget包放入我现有的Xamarin中。Android应用程序。此后,它无法生成,并显示以下错误消息: /库/框架/单声道。framework/External/xbuild/Xamarin/Android/Xamarin。Android常见的目标(3,3):错误:错误XA4212:Type实现了Android。运行时。IJavaObject但不继

    • 大家好,我在一条死胡同里! 使用VisualStudio 2015、Xamarin和MvvmCross开发PCL应用程序。Android应用程序超过了65K的限制。我需要使用多重索引! 为执行该计划,我采取了以下指导方针: 启用多索引复选框 扩展多索引应用程序类 一般考虑因素: 调试模式 明斯克:21 TargetSdk:25 构建工具 jdk1.8。0_121 Xamarin。Android7.