首页 > 解决方案 > 错误“java.exe”以代码 1 退出 - Xamarin

问题描述

我想减小 .apk 文件的大小,所以我在 Android 项目的属性窗口中检查Enable ProGuard选项,但出现编译时错误

错误“java.exe”以代码 1 退出。

我尝试了几件事

日志:

8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax$a: can't find superclass or interface org.apache.http.client.ResponseHandler
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.Instrumentation: can't find referenced class com.appdynamics.eumagent.runtime.BuildInfo
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.Instrumentation: can't find referenced class com.appdynamics.eumagent.runtime.BuildInfo
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.methods.HttpUriRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.HttpResponse
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.methods.HttpUriRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.protocol.HttpContext
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.HttpResponse
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.HttpHost
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.HttpRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.HttpResponse
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.HttpHost
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.HttpRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.protocol.HttpContext
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.HttpResponse
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.methods.HttpUriRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.ResponseHandler
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.methods.HttpUriRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.ResponseHandler
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.protocol.HttpContext
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.HttpHost
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.HttpRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.ResponseHandler
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.HttpHost
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.HttpRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.client.ResponseHandler
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.InstrumentationCallbacks: can't find referenced class org.apache.http.protocol.HttpContext
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.Header
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpEntity
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpEntityEnclosingRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpHost
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpResponse
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.RequestLine
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.StatusLine
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.methods.HttpUriRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpHost
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.Header
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.Header
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpEntity
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpEntityEnclosingRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpResponse
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpResponse
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpResponse
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.RequestLine
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.StatusLine
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.StatusLine
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.methods.HttpUriRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.methods.HttpUriRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpHost
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.methods.HttpUriRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpHost
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpEntity
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpResponse
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.methods.HttpUriRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpResponse
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.methods.HttpUriRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.protocol.HttpContext
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpResponse
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpHost
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpResponse
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpHost
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.protocol.HttpContext
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpResponse
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.methods.HttpUriRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.ResponseHandler
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.methods.HttpUriRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.ResponseHandler
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.protocol.HttpContext
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpHost
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.ResponseHandler
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.HttpClient
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpHost
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.HttpRequest
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.client.ResponseHandler
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax: can't find referenced class org.apache.http.protocol.HttpContext
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax$a: can't find referenced class org.apache.http.client.ResponseHandler
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax$a: can't find referenced class org.apache.http.client.ResponseHandler
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax$a: can't find referenced class org.apache.http.HttpResponse
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax$a: can't find referenced class org.apache.http.client.ResponseHandler
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax$a: can't find referenced class org.apache.http.client.ResponseHandler
8>PROGUARD : warning : com.appdynamics.eumagent.runtime.private.ax$a: can't find referenced class org.apache.http.HttpResponse
8>PROGUARD : warning : there were 123 unresolved references to classes or interfaces.
8>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2550,3): error MSB6006: "java.exe" exited with code 1.
========== Build: 7 succeeded, 1 failed, 4 up-to-date, 0 skipped ==========

我正在使用 proguard 4.7 文件。我不能使用最新的 proguard 文件,因为我不允许下载任何外部文件。我该如何解决这个问题?

标签: androidxamarinxamarin.androidproguard

解决方案


经过长时间的研究,我找到了解决这个问题的方法。

首先从这里下载最新的 Proguard 文件解压缩并复制到 sdk 路径C:\Program Files (x86)\Android\android-sdk\tools,这个路径在你的情况下可能会有所不同。

必须已经有一个 proguard 文件夹,将其重命名为 proguard.old。现在从 proguard.old 文件夹复制和粘贴proguard-android,文件到新创建的 proguard 文件夹proguard-android-optimizeproguard-project

之后需要按照以下步骤

  • 在您的 PC 中的某处创建 txt 文件并将扩展名更改为.cfg.
  • 将使用 Notepad++ 的 proguard.cfg 文件编码更改为不带 BOM 的 UTF-8 并在某处另存为。
  • 现在将这个新的 proguard.cfg 添加到您的 android 项目级别。
  • 将 proguard.cfg 文件构建操作更改为 ProguardConfiguration
  • 清理你的项目。

如果你得到warnings这样的前缀 progurd

PROGUARD:警告:com.appdynamics.eumagent.runtime.private

现在您需要将此包添加到您的自定义 proguard.cfg 文件中,例如

-dontwarn com.appdynamics.eumagent.runtime.**

-dontwarn不使用关键字class。这里**取给定包的所有子类。

如果你得到了,exception那么你需要找出导致问题的库并将其添加到 proguard.cfg 文件中,并带有-keep关键字

-keep public class android.support.v7.widget.** { *; } 

如果您仔细查看完整日志,progaurd 会给出所有警告,以便我们轻松发现问题。


推荐阅读