首页 > 解决方案 > Xamarin.Android 无法使用 proguard 编译

问题描述

我有一个项目可以在 api 29 以下的任何版本中完美运行。

当我尝试在 Android 10 设备中运行时,应用程序在显示启动画面后崩溃。我发现的解决方案之一是将 proguard 与自定义配置一起使用:

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

现在我尝试使用 proguard 进行编译,但出现错误。

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.DX.targets(5,5): Error MSB6006: "java" foi encerrado com o código 1. (MSB6006) (Garcom)

...
Destino "_CompileToDalvik" no arquivo "/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.DX.targets":
  Compilação de destino "_CompileToDalvik" concluída.
  O arquivo de saída "obj/Release/stamp/_CompileToDalvik.stamp" não existe.
  Tarefa "MakeDir"
  Tarefa em execução pronta "MakeDir".
  Usando a tarefa "Proguard" do assembly "/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Build.Tasks.dll".
  Tarefa "Proguard"
    Variáveis de Ambiente passadas para a ferramenta:
      PROGUARD_HOME=/Library/Frameworks/Xamarin.Android.framework/Libraries/xbuild/Xamarin/Android/proguard
    /Users/osdinformatica/Library/Developer/Xamarin/jdk/microsoft_dist_openjdk_1.8.0.25/bin/java -jar /Library/Frameworks/Xamarin.Android.framework/Libraries/xbuild/Xamarin/Android/proguard/lib/proguard.jar -include '/Users/osdinformatica/Library/Developer/Xamarin/android-sdk-macosx//tools/proguard/proguard-android.txt' -include 'obj/Release/proguard/proguard_xamarin.cfg' -include 'obj/Release/proguard/proguard_project_references.cfg' -include 'obj/Release/proguard/proguard_project_primary.cfg' -include 'proguard.cfg' -include '/Users/osdinformatica/XamarinForms/Garcom - teste android 11/Garcom/trunk/packages/Xamarin.Android.Arch.Lifecycle.Runtime.1.1.1.3/build/monoandroid90/../../proguard/monoandroid90/proguard.txt' -include '/Users/osdinformatica/XamarinForms/Garcom - teste android 11/Garcom/trunk/packages/Xamarin.Android.Arch.Lifecycle.ViewModel.1.1.1.3/build/monoandroid90/../../proguard/monoandroid90/proguard.txt' -include '/Users/osdinformatica/XamarinForms/Garcom - teste android 11/Garcom/trunk/packages/Xamarin.Android.Support.VersionedParcelable.28.0.0.3/build/monoandroid90/../../proguard/monoandroid90/proguard.txt' -include '/Users/osdinformatica/XamarinForms/Garcom - teste android 11/Garcom/trunk/packages/Xamarin.Android.Support.Compat.28.0.0.3/build/monoandroid90/../../proguard/monoandroid90/proguard.txt' -include '/Users/osdinformatica/XamarinForms/Garcom - teste android 11/Garcom/trunk/packages/Xamarin.Android.Support.CoordinaterLayout.28.0.0.3/build/monoandroid90/../../proguard/monoandroid90/proguard.txt' -include '/Users/osdinformatica/XamarinForms/Garcom - teste android 11/Garcom/trunk/packages/Xamarin.Android.Support.Media.Compat.28.0.0.3/build/monoandroid90/../../proguard/monoandroid90/proguard.txt' -include '/Users/osdinformatica/XamarinForms/Garcom - teste android 11/Garcom/trunk/packages/Xamarin.Android.Support.Animated.Vector.Drawable.28.0.0.3/build/monoandroid90/../../proguard/monoandroid90/proguard.txt' -include '/Users/osdinformatica/XamarinForms/Garcom - teste android 11/Garcom/trunk/packages/Xamarin.Android.Support.Transition.28.0.0.3/build/monoandroid90/../../proguard/monoandroid90/proguard.txt' -include '/Users/osdinformatica/XamarinForms/Garcom - teste android 11/Garcom/trunk/packages/Xamarin.Android.Support.v7.AppCompat.28.0.0.3/build/monoandroid90/../../proguard/monoandroid90/proguard.txt' -include '/Users/osdinformatica/XamarinForms/Garcom - teste android 11/Garcom/trunk/packages/Xamarin.Android.Support.v7.RecyclerView.28.0.0.3/build/monoandroid90/../../proguard/monoandroid90/proguard.txt' -include '/Users/osdinformatica/XamarinForms/Garcom - teste android 11/Garcom/trunk/packages/Xamarin.Android.Support.Design.28.0.0.3/build/monoandroid90/../../proguard/monoandroid90/proguard.txt' -injars "'obj/Release/android/bin/classes/../classes.zip'(!META-INF/MANIFEST.MF):'/Library/Frameworks/Mono.framework/External/xbuild-frameworks/MonoAndroid/v9.0/mono.android.jar'(!META-INF/MANIFEST.MF):'/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/java_runtime.jar'(!META-INF/MANIFEST.MF):'/Users/osdinformatica/XamarinForms/Garcom - teste android 11/Garcom/trunk/packages/Xamarin.Jetbrains.Annotations.13.0.0.1/build/monoandroid90/../../jar/org.jetbrains.annotations.jar'(!META-INF/MANIFEST.MF):'/Users/osdinformatica/XamarinForms/Garcom - teste android 11/Garcom/trunk/packages/Xamarin.Kotlin.StdLib.1.3.50.1/build/monoandroid90/../../jar/org.jetbrains.kotlin.kotlin-stdlib.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/11/jl/okio.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/10/jl/okhttp.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/21/jl/com.android.support.support-annotations.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/23/jl/com.android.support.collections.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/15/jl/android.arch.lifecycle.common.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/12/jl/picasso-2.5.2.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/13/jl/android.arch.core.common.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/32/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/35/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/34/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/33/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/20/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/18/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/27/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/9/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/0/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/29/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/16/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/45/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/28/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/17/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/1/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/19/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/26/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/44/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/43/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/38/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/36/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/31/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/30/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/37/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/39/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/46/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/41/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/48/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/24/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/4/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/40/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/47/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/2/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/5/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/14/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/22/jl/bin/classes.jar'(!META-INF/MANIFEST.MF):'obj/Release/lp/25/jl/bin/classes.jar'(!META-INF/MANIFEST.MF)" -libraryjars '/Users/osdinformatica/Library/Developer/Xamarin/android-sdk-macosx/platforms/android-30/android.jar' -outjars obj/Release/proguard/__proguard_output__.jar -optimizations !code/allocation/variable 
    java.io.FileNotFoundException: /Users/osdinformatica/XamarinForms/Garcom (Is a directory)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(FileInputStream.java:195)
        at java.io.FileInputStream.<init>(FileInputStream.java:138)
        at proguard.FileWordReader.<init>(FileWordReader.java:39)
        at proguard.ConfigurationParser.parseIncludeArgument(ConfigurationParser.java:279)
        at proguard.ConfigurationParser.parse(ConfigurationParser.java:150)
        at proguard.ProGuard.main(ProGuard.java:586)
    /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.DX.targets(32,5): error MSB6006: "java" foi encerrado com o código 1.
  Tarefa em execução pronta "Proguard" -- FALHA.

proguard.cfg 构建操作设置为 ProguardConfiguration。我已经尝试过:

这些都不起作用。

标签: xamarin.androidproguard

解决方案


推荐阅读