Xamarin表示java.exe"退出代码1(ProGuard)

时间:2017-06-01 09:53:56

标签: java android xamarin xamarin.android xamarin.forms

我与ProGuard的Xamarin Forms项目有问题,我有以下错误: java.exe"退出代码1

和多个警告,例如: okio.Okio:找不到引用的类java.nio.file.Path

我尝试了很多解决方案,例如:

  • 下载最新版本的Proguard并将其替换为特定文件夹。
  • 将我的Java最大堆大小设置为1G
  • 创建我自己的proguard.cfg并将构建操作设置为ProguardConfiguration

这些解决方案都不起作用,我已经尝试了多次清洁和构建。 然而有一件事很奇怪,当我的链接设置为"无"时,我可以构建我的项目。而不仅仅是#34; SDK Assemblies"。启用ProGuard并且我的链接设置为SDK Assemblies时它不起作用,这是正常的吗?

这是我的输出构建示例:

  

注意:有7个未知类的引用。 (任务id:223)   1 GT;您应该检查您的配置是否有拼写错误。 (任务id:223)   1 GT; (http://proguard.sourceforge.net/manual/troubleshooting.html#unknownclass)(TaskId:223)   1 GT;注意:有2个类尝试使用反射访问通用签名。 (任务id:223)   1 GT;您应该考虑保留签名属性(TaskId:223)   1 GT; (使用' -keepattributes签名')。 (任务id:223)   1 GT; (http://proguard.sourceforge.net/manual/troubleshooting.html#attributes)(TaskId:223)   1 GT;注意:保留类成员中有17个unkept描述符类。 (任务id:223)   1 GT;您应该考虑明确保留提到的类(TaskId:223)   1 GT; (使用' -keep')。 (任务id:223)   1 GT; (http://proguard.sourceforge.net/manual/troubleshooting.html#descriptorclass)(TaskId:223)   1 GT;注意:有10个未解析的类或接口动态引用。 (任务id:223)   1 GT;您应该检查是否需要指定其他程序罐。 (任务id:223)   1 GT; (http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclass)(TaskId:223)   1 GT;注意:通过内省对类成员进行了4次访问。 (任务id:223)   1 GT;您应该考虑明确保留提到的类成员(TaskId:223)   1 GT; (使用' -keep'或' -keepclassmembers')。 (任务id:223)   1 GT; (http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclassmember)(TaskId:223)   1> PROGUARD:警告:有14个未解决的类或接口引用。   1 GT;您可能需要添加缺少的库jar或更新其版本。 (任务id:223)   1 GT;如果您的代码在没有缺少类的情况下工作正常,则可以禁止(TaskId:223)   1 GT;警告' -dontwarn'选项。 (任务id:223)   1 GT; (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)(TaskId:223)   1 GT; 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   警告CS0067事件' Vwm_Listing.PopulateList'永远不会使用Test.App.Forms C:\ User \ Projects \ Test \ Test.Mob.App \ Test.App \ Test.App.Forms \ ViewModels \ Vwm_Listing.cs 7 Active   警告okio.Okio:找不到引用的类org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement Test.App.Droid C:\ User \ Projects \ Test \ Test.Mob.App \ Test.App \ Test.App。 Droid的\ ProGuard的
  警告okio.Okio:找不到引用的类org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement 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.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的\ ProGuard的
  警告发现无法解析的相同从属程序集的不同版本之间发生冲突。当日志详细程度设置为详细时,这些引用冲突将在构建日志中列出。 Test.App.Droid C:\ Program Files(x86)\ MSBuild \ 14.0 \ bin \ Microsoft.Common.CurrentVersion.targets 1820

我该怎么办?我不知道如何解决这个问题。

3 个答案:

答案 0 :(得分:1)

发布警告错误。还要在progaurd.pro文件中添加一些行。

-keep class org.apache.http.** { *; }
-dontnote org.apache.http.**
-dontwarn org.apache.http.**
-dontwarn android.net.*

答案 1 :(得分:0)

尝试升级JDK

https://bugzilla.xamarin.com/show_bug.cgi?id=44187

Xamarin Stable 15.2并不像以前那样稳定:)

答案 2 :(得分:0)

我在Xamarin.Android项目中使用了Square.Picasso库,没有任何问题,并使用Linking设置为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版本,所以应该可以使用!