当前位置: 首页 > 知识库问答 >
问题:

2015年VisualStudio中的Xamarin MultiDex

楮乐邦
2023-03-14

大家好,我在一条死胡同里!

使用VisualStudio 2015、Xamarin和MvvmCross开发PCL应用程序。Android应用程序超过了65K的限制。我需要使用多重索引!

为执行该计划,我采取了以下指导方针:

  • 启用多索引复选框
  • 扩展多索引应用程序类

一般考虑因素:

html" target="_blank">调试模式

明斯克:21

TargetSdk:25

构建工具

jdk1.8。0_121

Xamarin。Android7.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/"

我还有古典音乐。jar工具,但没有生成用于探索它的dex或apk文件。只有单声道。Androidjar文件存在

拜托我需要帮助。

非常感谢。

回答1和卢克·波蒂尔的评论是结果:

设置输出详细程度=诊断

使用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.

使用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.

共有2个答案

赫连冠玉
2023-03-14

在调整了android sdk的路径、删除了空格并在Droid平台的项目文件中设置了所有配置中的属性AndroidEnableMultiDex(显示为AndroidEnableMultipleDex)后,我能够无误地编译。此外,我还能够检查生成的dex文件的内容,并且两者都引用了Mvvmcross。

当我执行应用程序时,它会显示启动视图(ok!!!),但是,处理具有绑定viewmodel的视图(活动)时会发生异常。现在,viewmodel具有空值。(在必须激活multidex之前,应用程序将在没有任何关联的情况下执行)

我现在面临的挑战是,是否所有对Mvvmcross的引用都应该在主索引中,还是因为我忽略了另一个问题?

提前感谢他花时间@LukePothier。

我的自我反应:

编译并生成dex类后:

>

  • 使用dex2jar

    要非常耐心和坚持。

    删除innesesary代码和插件,如果你可以自己做。

  • 宋勇
    2023-03-14

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

    编辑:根据编辑中的错误消息,编译期间未传递--multi-dex选项。我会检查你的Android。csproj以确保

    编辑2:根据注释,您的Android SDK位置需要位于路径不包含空格的位置<代码>程序文件不好。我个人把我的放在C:\Android\Android sdk中。

     类似资料:
    • Visual Studio 2015和ASP.NET 5前端开发工具集 最近微软发布了一本白皮书-JavaScript Web Tools ,谈到了一些可以和Visual Studio 2015和ASP.NET 5配合使用的JS/前端Web开发工具(比如:函数库、任务执行器、框架等)。 由于现在前端开发的生态系统在快速增长,也变得越来越复杂和庞大。所以,微软特意发布了这么一个白皮书来讲解一些可以集

    • 《架构师》是由 InfoQ 中文站制作发布的刊物,为高级技术开发和管理人员提供关于技术创新方面的深度文章与最新观点,范围包括但不限于语言开发、架构设计、团队管理、流程管理、基础架构、企业架构等方面。每月8日发布的《架构师》月刊是电子刊物,可从 InfoQ 中文站上下载获取;每年《架构师》也会精选内容制作一本实体书,可从QCon大会、QClub 技术沙龙等线下活动获取。

    • VisualStudio (GitHub Extension for Visual Studio) 是 GitHub 的 Visual Studio 插件。 主要功能: 连接 GitHub 一键 clone 创建新库 发布本地库

    • 我在Visual Studio中看到了新的比较工具 有没有一种方法,我可以只是比较两个文件与内置的功能在Visual

    • 主要内容:前言:,后记:前言: 关于《2015年最新Android基础入门教程目录》终于在今天落下了帷幕,全套教程 共148节已编写完毕,附上目录,关于教程的由来,笔者的情况和自学心得,资源分享 以及一些疑问等可戳:《2015最新Android基础入门教程》完结散花~ 下面是本系列教程的完整目录: 1.0 Android基础入门教程 1.1 背景相关与系统架构分析 1.2 开发环境搭建 1.2.1 使用Eclipse +

    • 我正在尝试从Visual Studio发布应用程序,但出现错误: 命令"节点node_modules/webpack/bin/webpack.js--env.prod"以代码1退出。first azure app C:...\firstazureapp C:... firstazureapp\firstazureapp.csproj497 我已经按照这篇文章开始使用Angular 5和ASP. N