gpt4 book ai didi

android - Visual Studio 2015 中的 Xamarin MultiDex

转载 作者:行者123 更新时间:2023-11-29 01:09:17 30 4
gpt4 key购买 nike

大家好,我在死胡同里!

使用 VisualStudio 2015、Xamarin 和 MvvmCross 开发 PCL 应用程序。Android 应用程序超过 65K 限制。我需要使用 Multidex!

为了实现它,我遵循了这些指南:

  • 为 MultiDex 启用复选框
  • 扩展的 MultiDexApplication 类

一般注意事项:

Debug模式

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/ "

"https://forums.xamarin.com/discussion/64234/multi-dex-app-with-a-custom-application-class-that-runs-on-pre-lollipop "

"http://frogermcs.github.io/MultiDex-solution-for-64k-limit-in-Dalvik/ "

我也有 ClassyShark.jar 工具,但没有生成 dex 或 apk 文件来探索它。只有 mono.android.jar 文件存在

enter image description here

我需要帮助。

非常感谢。


回复答案1和Luke Pothier的评论是结果:

设置输出详细程度=诊断


案例一:

使用 Android Sdk 位置:C:\Program Files (x86)\Android\android-sdk installed with 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.

案例二:

使用 Android Sdk 位置:c:\android\sdk,最后一个 proguard 版本 5.3.3 随 Android Studio 安装。

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.

最佳答案

这可能是由 Xamarin 和 ProGuard 之间的问题引起的,详细的修复是 here .本质上,您需要替换 proguard.jar Android SDK 目录中的文件,最新的文件来自 SourceForge (目前为 v5.3.3)。

编辑:根据您编辑中的错误消息,编译期间未传递 --multi-dex 选项。我会检查你的 Android .csproj确保 <AndroidEnableMultiDex>选项设置为 True对于所有构建配置。如果这没有帮助,您可能需要在某处上传可重现的样本。

编辑 2:根据评论,您的 Android SDK 位置需要位于路径不包含空格的位置。 Program Files不好。我个人把我的放在C:\Android\android-sdk .

关于android - Visual Studio 2015 中的 Xamarin MultiDex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44474236/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com