我正在为Java SDK构建Xamarin绑定。我设法构建它并将其部署在设备上。但是,我不得不向该库添加更多依赖项,并达到了Dalvik Executable授权的最大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-调试--multi-dex --main-dex-list = obj \ Debug \ MonoAndroid80 \ multidex.keep-输出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 \调试\ 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”选项。
我尝试过的事情:
Targeting API Level 26-Android 8.0(Oreo)
MinSDkVersion现在处于Api级别22-Android 5.1(Lolipop)
更新: 如果我创建另一个空白的Android App项目并启用Multi-Dex选项,它将正确构建。
答案 0 :(得分:0)
供参考:
我安装了一个NuGet软件包“ xamarin-android-d8-build”,其中添加了对Xamarin.Android的d8编译器支持。这就是为什么它无法识别“ --multi-dex”选项的原因。