编辑 - 缩小到问题的根源
启用Multi-Dex时,我收到此错误。
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 here上。
版本信息: ===适用于Mac的Visual Studio社区2017 ===
版本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
=== .NET Core ===
运行时:未安装 SDK:未安装 MSBuild SDKs:/ Library/Frameworks/Mono.framework/Versions/5.2.0/lib/mono/msbuild/15.0/bin/Sdks
=== Xamarin.Profiler ===
版本:1.5.5 地点:/ Applications / Xamarin Profiler.app/Contents/MacOS/Xamarin Profiler
=== 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 Build Tools版本: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 HotSpot(TM)64位服务器VM(版本25.144-b01,混合模式)
此处提供的Android Designer EPL代码: https://github.com/xamarin/AndroidDesigner.EPL
=== Apple Developer Tools ===
Xcode 8.0(11246) 建立8A218a
=== Xamarin.iOS ===
版本:10.12.0.20(Visual Studio Community) 哈希:80b8487d 分公司:d15-3 建设日期:2017-08-18 16:07:26-0400
=== Xamarin.Mac ===
版本:3.6.0.19(Visual Studio社区)
=== Xamarin Inspector ===
版本:1.2.2 哈希:b71b035 分公司:d15-1 建造日期:2017年4月21日星期五17:57:12 GMT
===建立信息===
发布ID:701001297 Git修订版:9c5299666538b2f8baf501418a5c064d784d64da 建设日期:2017-08-07 11:29:35-04 Xamarin插件:3bb0c32a14f1b7e368bf5ac53a84c3581c019391 修建车道:monodevelop-lion-d15-3
===操作系统===
Mac OS X 10.11.6 达尔文15.6.0 Darwin内核版本15.6.0 2016年4月23日星期四18:25:34 root:xnu-3248.60.10~1 / RELEASE_X86_64 x86_64
===启用用户安装的插件===
LiveXAML 1.0 Redth的Addins 1.0.9
答案 0 :(得分:0)
我已针对此问题报告了以下错误:
https://bugzilla.xamarin.com/show_bug.cgi?id=59237
请随时自行决定此问题,以便在修复后收到通知。目前,您必须通过以某种方式重命名.jar来解决此问题。
我希望这有帮助!
答案 1 :(得分:0)
这是因为有一个带有嵌入式Jar文件的绑定库,其文件名中包含括号 - 这会导致ProGuard的命令行失败。
@jondouglas已为此提交了Xamarin bug 59237。希望修复方法是使ProGuard的命令行对奇怪命名的文件更具弹性。
与此同时,我将不得不抓住一个更新的绑定库,嵌入式jar文件中没有带括号的名称(或其他破坏命令行的字符)。
感谢@jondouglas帮助诊断问题。