首页 文章

Xamarin表单java.exe“退出代码1(ProGuard)

提问于
浏览
1

我与ProGuard的Xamarin Forms项目有问题,我有以下错误: java.exe" exited with code 1

和多个警告,如: okio.Okio: can't find referenced class java.nio.file.Path

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

  • 下载最新版本的Proguard并将其替换到特定文件夹中 .

  • 将我的Java Max Heap大小设置为1G

  • 创建我自己的proguard.cfg并将构建操作设置为ProguardConfiguration

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

这是我的输出构建的一个例子:

注意:有7个未知类的引用 . (TaskId:223)1>您应该检查拼写错误的配置 . (TaskId:223)1>(http://proguard.sourceforge.net/manual/troubleshooting.html#unknownclass)(TaskId:223)1>注意:有2个类试图使用反射访问通用签名 . (TaskId:223)1>您应该考虑保留签名属性(TaskId:223)1>(使用'-keepattributes Signature') . (TaskId:223)1>(http://proguard.sourceforge.net/manual/troubleshooting.html#attributes)(TaskId:223)1>注意:保留的类成员中有17个unkept描述符类 . (TaskId:223)1>你应该考虑明确地保持提到的类(TaskId:223)1>(使用'-keep') . (TaskId:223)1>(http://proguard.sourceforge.net/manual/troubleshooting.html#descriptorclass)(TaskId:223)1>注意:有10个未解析的类或接口动态引用 . (TaskId:223)1>您应该检查是否需要指定其他程序 jar . (TaskId:223)1>(http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclass)(TaskId:223)1>注意:通过内省对类成员进行了4次访问 . (TaskId:223)1>你应该考虑明确地保持提到的类成员(TaskId:223)1>(使用'-keep'或'-keepclassmembers') . (TaskId:223)1>(http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclassmember)(TaskId:223)1> PROGUARD:警告:有14个未解析的类或接口引用 . 1>您可能需要添加缺少的库jar或更新其版本 . (TaskId:223)1>如果您的代码在没有缺少类的情况下正常工作,您可以使用'-dontwarn'选项禁止(TaskId:223)1>警告 . (TaskId:223)1>(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)(TaskId:223)1> java.io.IOException:请先纠正上述警告 . (任务id: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活动警告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.f ile.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.DroidC:\ 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 \项目\测试\ Test.Mob.App \ Test.App \测试.App.Droid \ PROGUARD警告发现无法解析的同一依赖程序集的不同版本之间发生冲突 . 当日志详细程度设置为详细时,这些引用冲突将在构建日志中列出 . Test.App.Droid C:\ Program Files(x86)\ MSBuild \ 14.0 \ bin \ Microsoft.Common.CurrentVersion.targets 1820

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

3 回答

  • 0

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

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

    尝试升级JDK

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

    Xamarin Stable 15.2不是那么稳定,因为它应该:)

  • 1

    我在我的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版本,所以应该可以使用!

相关问题