【发布时间】:2018-10-17 08:02:08
【问题描述】:
我正在为 Java SDK 构建 Xamarin 绑定。我设法构建它并将其部署在设备上。但是,我不得不向库中添加更多依赖项,并达到了 Dalvik 可执行文件授权的最大 64k 方法。我决定通过我的应用程序的 Android Options 属性启用 Multi-Dex 以绕过该限制。
我现在在构建应用程序时遇到错误,我在网络上找不到它的任何参考。
这是构建输出的示例:
3> C:\Program Files\Java\jdk1.8.0_181\bin\java.exe -Xmx1G -jar C:\Users\witol.nuget\packages\xamarin-android-d8-build\0.2.1\ build\d8.jar --debug --multi-dex --main-dex-list=obj\Debug\MonoAndroid80\multidex.keep --output obj\Debug\MonoAndroid80\android\bin C:\Users\witol\source \repos\VoxeetBinding4\VoxeetBinding4Sample2\obj\Debug\MonoAndroid80\android\bin\classes.zip "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\ v8.0\mono.android.jar" "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Xamarin\Android\android-support-multidex.jar" obj\Debug\MonoAndroid80\lp\ 0\jl\eventbus-3.0.0.jar obj\Debug\MonoAndroid80\lp\10\jl\bin\classes.jar obj\Debug\MonoAndroid80\lp\11\jl\bin\classes.jar obj\Debug\MonoAndroid80 \lp\12\jl\bin\classes.jar obj\Debug\MonoAndroid80\lp\13\jl\bin\classes.jar obj\Debug\MonoAndroid80\lp\14\jl\bin\classes.jar obj\Debug\ MonoAndroid80\lp\15\jl\bin\classes.jar obj\Debug\MonoA ndroid80\lp\16\jl\bin\classes.jar obj\Debug\MonoAndroid80\lp\17\jl\bin\classes.jar obj\Debug\MonoAndroid80\lp\18\jl\bin\classes.jar obj\Debug \MonoAndroid80\lp\19\jl\bin\classes.jar obj\Debug\MonoAndroid80\lp\20\jl\public-sdk-1.1.7.1.jar obj\Debug\MonoAndroid80\lp\20\jl__reference__adapter-rxjava-2.1 .0.jar obj\Debug\MonoAndroid80\lp\20\jl__reference__guava-19.0.jar obj\Debug\MonoAndroid80\lp\20\jl__reference__jackson-annotations-2.7.0.jar obj\Debug\MonoAndroid80\lp\20\jl__reference__jackson- core-2.7.2.jar obj\Debug\MonoAndroid80\lp\20\jl__reference__jackson-databind-2.7.2.jar obj\Debug\MonoAndroid80\lp\20\jl__reference__logging-interceptor-3.4.0-RC1.jar obj\Debug \MonoAndroid80\lp\20\jl__reference__rxandroid-1.2.1.jar obj\Debug\MonoAndroid80\lp\20\jl\bin\classes.jar obj\Debug\MonoAndroid80\lp\21\jl\bin\classes.jar obj\ Debug\MonoAndroid80\lp\22\jl\classes.jar obj\Debug\MonoAndroid80\lp\23\jl\classes.jar obj\Debug\MonoAndroid80\lp\24\jl\retrofit-2.1.0.jar obj\Debug \MonoAndroid80\lp\25\jl\o khttp3.jar obj\Debug\MonoAndroid80\lp\26\jl\rxjava-1.1.8.jar obj\Debug\MonoAndroid80\lp\27\jl\nv-websocket-client-2.3.jar obj\Debug\MonoAndroid80\lp \27\jl__reference__hamcrest-core-1.3.jar obj\Debug\MonoAndroid80\lp\27\jl__reference__junit-4.12.jar obj\Debug\MonoAndroid80\lp\28\jl\classes.jar obj\Debug\MonoAndroid80\lp\29\ jl\classes.jar obj\Debug\MonoAndroid80\lp\3\jl\arch-core-common.jar obj\Debug\MonoAndroid80\lp\30\jl\okio.jar obj\Debug\MonoAndroid80\lp\31\jl \classes.jar obj\Debug\MonoAndroid80\lp\4\jl\arch-lifecycle-common.jar obj\Debug\MonoAndroid80\lp\5\jl\bin\classes.jar obj\Debug\MonoAndroid80\lp\6\ jl\bin\classes.jar obj\Debug\MonoAndroid80\lp\8\jl\bin\classes.jar obj\Debug\MonoAndroid80\lp\9\jl\bin\classes.jar (TaskId:283)
3> 编译失败:未知选项:--multi-dex (TaskId:283)
3>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2521,3):错误 MSB6006:“java.exe”退出使用代码 1。
显然 java 可执行文件无法识别“--multid-dex”选项。
我尝试过的:
- 更新我的 Android BuildTools
- 从 SourceForge 下载最新的 ProGuard 版本
- 尝试不同的 MinSdkVersion (19, 21)
- 创建一个新的 Android 应用项目
针对 API 级别 26 - Android 8.0 (Oreo)
MinSDkVersion 现在处于 Api 级别 22 - Android 5.1 (Lolipop)
更新: 如果我创建另一个空白 Android App 项目并启用 Multi-Dex 选项,它会正确构建。
【问题讨论】:
标签: java android xamarin xamarin.android android-multidex