【发布时间】:2017-11-12 10:36:51
【问题描述】:
大家好,我陷入了死胡同!
使用 VisualStudio 2015、Xamarin 和 MvvmCross 开发 PCL 应用程序。 Android 应用超过 65K 限制。我需要使用 Multidex!
为了实现它,我已经采取了这些指南:
- 为 MultiDex 启用复选框
- 扩展的 MultiDexApplication 类
一般注意事项:
调试模式
MinSdk:21
TargetSdk:25
构建工具:23.0.3
JDK 1.8.0_121
Xamarin.Android 7.3
结果:
"java.exe" exited with code 2. C:\Program Files (x86)\MSBuild\Xamarin \Android\Xamarin.Android.Common.targets 1965
<!-- Compile java code to dalvik -->
<CompileToDalvik
DxJarPath="$(DxJarPath)"
JavaToolPath="$(JavaToolPath)"
JavaMaximumHeapSize="$(JavaMaximumHeapSize)"
JavaOptions="$(JavaOptions)"
ClassesOutputDirectory="$(IntermediateOutputPath)android\bin\classes"
ToolPath="$(DxToolPath)"
ToolExe="$(DxToolExe)"
UseDx="$(UseDx)"
MultiDexEnabled="$(AndroidEnableMultiDex)"
MultiDexMainDexListFile="$(_AndroidMainDexListFile)"
JavaLibrariesToCompile="@(_JavaLibrariesToCompileForAppDx)"
OptionalObfuscatedJarFile="$(IntermediateOutputPath)proguard\__proguard_output__.jar"
/>
编译过程中出现错误。
我查阅了以下来源:
“https://developer.android.com/studio/build/multidex.html”
“http://www.jon-douglas.com/2016/09/05/xamarin-android-multidex/”
“http://www.jon-douglas.com/2016/09/23/xamarin-android-multidex-keep/”
“https://przemekraciborski.eu/”
“http://frogermcs.github.io/MultiDex-solution-for-64k-limit-in-Dalvik/”
我也有 ClassyShark.jar 工具,但没有生成 dex 或 apk 文件来探索它。只有 mono.android.jar 文件存在
我需要帮助。
非常感谢。
回复答案1和Luke Pothier的评论是结果:
设置输出详细程度 = 诊断
案例一:
使用 Android Sdk 位置:C:\Program Files (x86)\Android\android-sdk 与 Visual Studio 2015 一起安装。
4>_CompileToDalvikWithDx:
4> Creating directory "obj\Debug\proguard".
4> C:\Program Files\Java\jdk1.8.0_121\\bin\java.exe -Xmx1G -jar "C:\Program Files (x86)\Android\android-sdk\build-tools\25.0.3\\lib\dx.jar" --no-strict --dex --output= ...
4> trouble writing output: Too many field references: 68102; max is 65536.
4> You may try using --multi-dex option.
4> References by package:
(list of references by packages)
4>C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(1965,3): error MSB6006: "java.exe" exited with code 2.
案例2:
使用 Android Sdk 位置:c:\android\sdk 与 Android Studio 一起安装的最后一个 proguard 版本 5.3.3。
4>_CompileToDalvikWithDx:
4> Creating directory "obj\Debug\proguard".
4> C:\Program Files\Java\jdk1.8.0_121\\bin\java.exe -Xmx1G -jar C:\Android\sdk\build-tools\25.0.0\\lib\dx.jar --no-strict --dex --output=
4> trouble writing output: Too many field references: 68102; max is 65536.
4> You may try using --multi-dex option.
4> References by package:
(list of references by packages)
4>C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(1965,3): error MSB6006: "java.exe" exited with code 2.
【问题讨论】:
标签: android xamarin mvvmcross android-multidex