Xamarin Forms java.exe" 以代码 1 (ProGuard) 退出
Posted
技术标签:
【中文标题】Xamarin Forms java.exe" 以代码 1 (ProGuard) 退出【英文标题】:Xamarin Forms java.exe" exited with code 1 (ProGuard) 【发布时间】:2017-11-02 09:52:13 【问题描述】:我在使用 ProGuard 的 Xamarin Forms 项目时遇到问题,出现以下错误:java.exe" exited with code 1
以及多个警告,例如:okio.Okio: can't find referenced class java.nio.file.Path
我尝试了很多解决方案,例如:
下载最新版本的 Proguard 并将其替换到特定文件夹中。 将我的 Java 最大堆大小设置为 1G 创建我自己的 proguard.cfg 并将构建操作设置为 ProguardConfiguration这些解决方案都不起作用,我也尝试了多次清理和构建。 然而有一点很奇怪,当我的 Linking 设置为“None”而不是“SDK Assemblies Only”时,我可以构建我的项目。当启用 ProGuard 并且我的 Linking 设置为 SDK Assemblies Only 时它不起作用,是否正常?
这是我的输出构建示例:
注意:有 7 个对未知类的引用。 (任务 ID:223) 1> 你应该检查你的配置是否有错别字。 (任务 ID:223) 1> (http://proguard.sourceforge.net/manual/troubleshooting.html#unknownclass) (TaskId:223) 1> 注意:有 2 个类试图使用反射访问通用签名。 (任务 ID:223) 1>您应该考虑保留签名属性(TaskId:223) 1>(使用“-keepattributes 签名”)。 (任务 ID:223) 1> (http://proguard.sourceforge.net/manual/troubleshooting.html#attributes) (TaskId:223) 1> 注意:保留类成员中有 17 个未保留描述符类。 (任务 ID:223) 1>您应该考虑明确保留提到的类(TaskId:223) 1>(使用'-keep')。 (任务 ID:223) 1> (http://proguard.sourceforge.net/manual/troubleshooting.html#descriptorclass) (TaskId:223) 1> 注意:有 10 个未解析的对类或接口的动态引用。 (任务 ID:223) 1>您应该检查是否需要指定其他程序jar。 (任务 ID:223) 1> (http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclass) (TaskId:223) 1> 注意:通过自省的方式对类成员进行了 4 次访问。 (任务 ID:223) 1>您应该考虑明确保留提到的类成员(TaskId:223) 1>(使用“-keep”或“-keepclassmembers”)。 (任务 ID:223) 1> (http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclassmember) (TaskId:223) 1>PROGUARD:警告:有 14 个未解析的类或接口引用。 1> 您可能需要添加缺少的库 jar 或更新它们的版本。 (任务 ID:223) 1> 如果您的代码在没有丢失类的情况下工作正常,您可以抑制 (TaskId:223) 1> 带有“-dontwarn”选项的警告。 (任务 ID:223) 1> (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass) (TaskId:223) 1> java.io.IOException: 请先更正上述警告。 (TaskId:223)
这些是我的警告:
严重性代码描述项目文件行抑制状态 警告有 14 个未解析的类或接口引用。 Test.App.Droid C:\User\Projects\Test\Test.Mob.App\Test.App\Test.App.Droid\PROGUARD 警告 CS0169 字段 'MainActivity.ContextCompat' 从未使用过 Test.App.Droid C:\User\Projects\Test\Test.Mob.App\Test.App\Test.App.Droid\MainActivity.cs 24 Active 警告 CS0067 事件“Vwm_Listing.PopulateList”从未使用过 Test.App.Forms C:\User\Projects\Test\Test.Mob.App\Test.App\Test.App.Forms\ViewModels\Vwm_Listing.cs 7 活动 警告 okio.Okio:找不到引用的类 org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement Test.App.Droid C:\User\Projects\Test\Test.Mob.App\Test.App\Test.App.Droid\卫队 警告 okio.Okio:找不到引用的类 org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement Test.App.Droid C:\User\Projects\Test\Test.Mob.App\Test.App\Test.App.Droid\卫队 警告 okio.Okio:找不到引用的类 java.nio.file.Path Test.App.Droid C:\User\Projects\Test\Test.Mob.App\Test.App\Test.App.Droid\PROGUARD 警告 okio.Okio:找不到引用的类 java.nio.file.Path Test.App.Droid C:\User\Projects\Test\Test.Mob.App\Test.App\Test.App.Droid\PROGUARD 警告 okio.Okio:找不到引用的类 java.nio.file.Path Test.App.Droid C:\User\Projects\Test\Test.Mob.App\Test.App\Test.App.Droid\PROGUARD 警告 okio.Okio:找不到引用的类 java.nio.file.Path Test.App.Droid C:\User\Projects\Test\Test.Mob.App\Test.App\Test.App.Droid\PROGUARD 警告 okio.Okio:找不到引用的类 java.nio.file.OpenOption Test.App.Droid C:\User\Projects\Test\Test.Mob.App\Test.App\Test.App.Droid\PROGUARD 警告 okio.Okio:找不到引用的类 java.nio.file.OpenOption Test.App.Droid C:\User\Projects\Test\Test.Mob.App\Test.App\Test.App.Droid\PROGUARD 警告 okio.Okio:找不到引用的类 java.nio.file.OpenOption Test.App.Droid C:\User\Projects\Test\Test.Mob.App\Test.App\Test.App.Droid\PROGUARD 警告 okio.Okio:找不到引用的类 java.nio.file.OpenOption Test.App.Droid C:\User\Projects\Test\Test.Mob.App\Test.App\Test.App.Droid\PROGUARD 警告 okio.Okio:找不到引用的类 java.nio.file.Files Test.App.Droid C:\User\Projects\Test\Test.Mob.App\Test.App\Test.App.Droid\PROGUARD 警告 okio.Okio:找不到引用的类 java.nio.file.Files Test.App.Droid C:\User\Projects\Test\Test.Mob.App\Test.App\Test.App.Droid\PROGUARD 警告 okio.Okio:找不到引用的类 java.nio.file.Files Test.App.Droid C:\User\Projects\Test\Test.Mob.App\Test.App\Test.App.Droid\PROGUARD 警告 okio.DeflaterSink:找不到引用的类 org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement Test.App.Droid C:\User\Projects\Test\Test.Mob.App\Test.App\Test.App.Droid\卫队 警告 发现同一依赖程序集的不同版本之间存在无法解决的冲突。当日志详细程度设置为详细时,这些引用冲突会列在构建日志中。 Test.App.Droid C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets 1820
我该怎么办?我不知道如何解决这个问题..
【问题讨论】:
你在使用 MultiDex 吗? 不,我没有!我应该使用它吗? 您找到解决方案了吗?它杀了我! 【参考方案1】:发布您的警告错误。同时在您的 progaurd.pro 文件中添加一些行。
-keep class org.apache.http.** *;
-dontnote org.apache.http.**
-dontwarn org.apache.http.**
-dontwarn android.net.*
【讨论】:
我没有任何 proguard.pro 文件...只有 proguard_input.jar proguard_project_primary.cfg proguard_project_references.cfg proguard_xamarin.cfg @Rims 这应该是一条评论。【参考方案2】:尝试升级JDK
https://bugzilla.xamarin.com/show_bug.cgi?id=44187
Xamarin Stable 15.2 并没有应有的稳定 :)
【讨论】:
【参考方案3】:我在我的 Xamarin.Android 项目上使用 Square.Picasso 库没有问题,并使用链接设置为 SDK 和用户程序集。
我的 ProGuard 配置文件包含以下内容:
-dontwarn org.codehaus.**
-dontwarn java.nio.file.**
-dontwarn com.square.**
-dontwarn okio.**
-keep public class android.support.v7.widget.FitWindowsLinearLayout
-keep public class android.support.design.widget.AppBarLayout
您说您的 Android SDK 中有最新的 ProGuard 版本,所以它应该可以工作!
【讨论】:
谢谢,但仍然有那个“java.exe”错误。我已经按照您的链接进行了操作,并且完全按照需要进行了操作!我必须深入我的日志才能找到问题以上是关于Xamarin Forms java.exe" 以代码 1 (ProGuard) 退出的主要内容,如果未能解决你的问题,请参考以下文章
ProGuard:“java.exe”在添加 ModernHTTPClient 后以代码 1 退出
Xamarin.Forms:如何在 Xamarin.Forms 跨平台项目中开发具有蓝牙连接的应用程序?