如何将Proguard Optimizer工具与Xamarin表单一起使用 [英] How to use proguard optimizer tool with xamarin forms

查看:88
本文介绍了如何将Proguard Optimizer工具与Xamarin表单一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to reduce size of .apk file, so I am checking Enable ProGuard option in Android project's property window but getting compile time error

错误"java.exe"以代码1退出.

Error "java.exe" exited with code 1.

我尝试了一些类似的事情

I tried few things like

  • 头大小已经是1G.
  • Android目标版本为9.0(Pie).
  • 发布"模式下的我的解决方案配置".
  • 使用最新的ProGuard文件(6.1.1)
  • 在新的ProGuard文件中添加了proguard-android.txt,proguard-android-optimize.txt和proguard-project.txt.

日志:

1>------ Rebuild All started: Project: ProductStatus, Configuration: Release Any CPU ------
1>ProductStatus -> D:\New\SmartPad\Research\ProductStatus\ProductStatus\ProductStatus\bin\Release\netstandard2.0\ProductStatus.dll
2>------ Rebuild All started: Project: ProductStatus.Android, Configuration: Release Any CPU ------
2>  ProductStatus.Android -> D:\New\SmartPad\Research\ProductStatus\ProductStatus\ProductStatus.Android\bin\Release\ProductStatus.Android.dll
2>  No way to resolve conflict between "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" and "mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e". Choosing "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" arbitrarily.
2>PROGUARD : warning : md5606e28f7ad4f2edd4892d456667ca4fb.EmdkWrapper: can't find superclass or interface com.symbol.emdk.EMDKManager$EMDKListener
2>PROGUARD : warning : mono.com.symbol.emdk.EMDKManager_EMDKListenerImplementor: can't find superclass or interface com.symbol.emdk.EMDKManager$EMDKListener
2>PROGUARD : warning : mono.com.symbol.emdk.EMDKManager_StatusListenerImplementor: can't find superclass or interface com.symbol.emdk.EMDKManager$StatusListener
2>PROGUARD : warning : mono.com.symbol.emdk.ProfileManager_DataListenerImplementor: can't find superclass or interface com.symbol.emdk.ProfileManager$DataListener
2>PROGUARD : warning : mono.com.symbol.emdk.barcode.BarcodeManager_ScannerConnectionListenerImplementor: can't find superclass or interface com.symbol.emdk.barcode.BarcodeManager$ScannerConnectionListener
2>PROGUARD : warning : mono.com.symbol.emdk.barcode.Scanner_DataListenerImplementor: can't find superclass or interface com.symbol.emdk.barcode.Scanner$DataListener
2>PROGUARD : warning : mono.com.symbol.emdk.barcode.Scanner_StatusListenerImplementor: can't find superclass or interface com.symbol.emdk.barcode.Scanner$StatusListener
2>PROGUARD : warning : mono.com.symbol.emdk.scanandpair.ScanAndPairManager_StatusListenerImplementor: can't find superclass or interface com.symbol.emdk.scanandpair.ScanAndPairManager$StatusListener
2>PROGUARD : warning : mono.com.symbol.emdk.simulscan.SimulScanReader_DataListenerImplementor: can't find superclass or interface com.symbol.emdk.simulscan.SimulScanReader$DataListerner
2>PROGUARD : warning : mono.com.symbol.emdk.simulscan.SimulScanReader_StatusListenerImplementor: can't find superclass or interface com.symbol.emdk.simulscan.SimulScanReader$StatusListerner
2>PROGUARD : warning : md5606e28f7ad4f2edd4892d456667ca4fb.EmdkWrapper: can't find referenced class com.symbol.emdk.EMDKManager$EMDKListener
2>PROGUARD : warning : md5606e28f7ad4f2edd4892d456667ca4fb.EmdkWrapper: can't find referenced class com.symbol.emdk.EMDKManager
2>PROGUARD : warning : md5606e28f7ad4f2edd4892d456667ca4fb.EmdkWrapper: can't find referenced class com.symbol.emdk.EMDKManager
2>PROGUARD : warning : md5606e28f7ad4f2edd4892d456667ca4fb.EmdkWrapper: can't find referenced class com.symbol.emdk.EMDKManager
2>PROGUARD : warning : mono.com.symbol.emdk.EMDKManager_EMDKListenerImplementor: can't find referenced class com.symbol.emdk.EMDKManager$EMDKListener
2>PROGUARD : warning : mono.com.symbol.emdk.EMDKManager_EMDKListenerImplementor: can't find referenced class com.symbol.emdk.EMDKManager
2>PROGUARD : warning : mono.com.symbol.emdk.EMDKManager_EMDKListenerImplementor: can't find referenced class com.symbol.emdk.EMDKManager
2>PROGUARD : warning : mono.com.symbol.emdk.EMDKManager_EMDKListenerImplementor: can't find referenced class com.symbol.emdk.EMDKManager
2>PROGUARD : warning : mono.com.symbol.emdk.EMDKManager_StatusListenerImplementor: can't find referenced class com.symbol.emdk.EMDKManager$StatusListener
2>PROGUARD : warning : mono.com.symbol.emdk.EMDKManager_StatusListenerImplementor: can't find referenced class com.symbol.emdk.EMDKManager$StatusData
2>PROGUARD : warning : mono.com.symbol.emdk.EMDKManager_StatusListenerImplementor: can't find referenced class com.symbol.emdk.EMDKManager
2>PROGUARD : warning : mono.com.symbol.emdk.EMDKManager_StatusListenerImplementor: can't find referenced class com.symbol.emdk.EMDKManager$StatusData
2>PROGUARD : warning : mono.com.symbol.emdk.EMDKManager_StatusListenerImplementor: can't find referenced class com.symbol.emdk.EMDKBase
2>PROGUARD : warning : mono.com.symbol.emdk.EMDKManager_StatusListenerImplementor: can't find referenced class com.symbol.emdk.EMDKManager$StatusData
2>PROGUARD : warning : mono.com.symbol.emdk.EMDKManager_StatusListenerImplementor: can't find referenced class com.symbol.emdk.EMDKBase
2>PROGUARD : warning : mono.com.symbol.emdk.ProfileManager_DataListenerImplementor: can't find referenced class com.symbol.emdk.ProfileManager$DataListener
2>PROGUARD : warning : mono.com.symbol.emdk.ProfileManager_DataListenerImplementor: can't find referenced class com.symbol.emdk.ProfileManager$ResultData
2>PROGUARD : warning : mono.com.symbol.emdk.ProfileManager_DataListenerImplementor: can't find referenced class com.symbol.emdk.ProfileManager
2>PROGUARD : warning : mono.com.symbol.emdk.ProfileManager_DataListenerImplementor: can't find referenced class com.symbol.emdk.ProfileManager$ResultData
2>PROGUARD : warning : mono.com.symbol.emdk.ProfileManager_DataListenerImplementor: can't find referenced class com.symbol.emdk.ProfileManager$ResultData
2>PROGUARD : warning : mono.com.symbol.emdk.barcode.BarcodeManager_ScannerConnectionListenerImplementor: can't find referenced class com.symbol.emdk.barcode.BarcodeManager$ScannerConnectionListener
2>PROGUARD : warning : mono.com.symbol.emdk.barcode.BarcodeManager_ScannerConnectionListenerImplementor: can't find referenced class com.symbol.emdk.barcode.BarcodeManager$ConnectionState
2>PROGUARD : warning : mono.com.symbol.emdk.barcode.BarcodeManager_ScannerConnectionListenerImplementor: can't find referenced class com.symbol.emdk.barcode.BarcodeManager
2>PROGUARD : warning : mono.com.symbol.emdk.barcode.BarcodeManager_ScannerConnectionListenerImplementor: can't find referenced class com.symbol.emdk.barcode.ScannerInfo
2>PROGUARD : warning : mono.com.symbol.emdk.barcode.BarcodeManager_ScannerConnectionListenerImplementor: can't find referenced class com.symbol.emdk.barcode.BarcodeManager$ConnectionState
2>PROGUARD : warning : mono.com.symbol.emdk.barcode.BarcodeManager_ScannerConnectionListenerImplementor: can't find referenced class com.symbol.emdk.barcode.ScannerInfo
2>PROGUARD : warning : mono.com.symbol.emdk.barcode.BarcodeManager_ScannerConnectionListenerImplementor: can't find referenced class com.symbol.emdk.barcode.BarcodeManager$ConnectionState
2>PROGUARD : warning : mono.com.symbol.emdk.barcode.Scanner_DataListenerImplementor: can't find referenced class com.symbol.emdk.barcode.Scanner$DataListener
2>PROGUARD : warning : mono.com.symbol.emdk.barcode.Scanner_DataListenerImplementor: can't find referenced class com.symbol.emdk.barcode.Scanner
2>PROGUARD : warning : mono.com.symbol.emdk.barcode.Scanner_DataListenerImplementor: can't find referenced class com.symbol.emdk.barcode.ScanDataCollection
2>PROGUARD : warning : mono.com.symbol.emdk.barcode.Scanner_DataListenerImplementor: can't find referenced class com.symbol.emdk.barcode.ScanDataCollection
2>PROGUARD : warning : mono.com.symbol.emdk.barcode.Scanner_StatusListenerImplementor: can't find referenced class com.symbol.emdk.barcode.Scanner$StatusListener
2>PROGUARD : warning : mono.com.symbol.emdk.barcode.Scanner_StatusListenerImplementor: can't find referenced class com.symbol.emdk.barcode.Scanner
2>PROGUARD : warning : mono.com.symbol.emdk.barcode.Scanner_StatusListenerImplementor: can't find referenced class com.symbol.emdk.barcode.StatusData
2>PROGUARD : warning : mono.com.symbol.emdk.barcode.Scanner_StatusListenerImplementor: can't find referenced class com.symbol.emdk.barcode.StatusData
2>PROGUARD : warning : mono.com.symbol.emdk.scanandpair.ScanAndPairManager_StatusListenerImplementor: can't find referenced class com.symbol.emdk.scanandpair.ScanAndPairManager$StatusListener
2>PROGUARD : warning : mono.com.symbol.emdk.scanandpair.ScanAndPairManager_StatusListenerImplementor: can't find referenced class com.symbol.emdk.scanandpair.ScanAndPairManager
2>PROGUARD : warning : mono.com.symbol.emdk.scanandpair.ScanAndPairManager_StatusListenerImplementor: can't find referenced class com.symbol.emdk.scanandpair.StatusData
2>PROGUARD : warning : mono.com.symbol.emdk.scanandpair.ScanAndPairManager_StatusListenerImplementor: can't find referenced class com.symbol.emdk.scanandpair.StatusData
2>PROGUARD : warning : mono.com.symbol.emdk.simulscan.SimulScanReader_DataListenerImplementor: can't find referenced class com.symbol.emdk.simulscan.SimulScanReader$DataListerner
2>PROGUARD : warning : mono.com.symbol.emdk.simulscan.SimulScanReader_DataListenerImplementor: can't find referenced class com.symbol.emdk.simulscan.SimulScanReader
2>PROGUARD : warning : mono.com.symbol.emdk.simulscan.SimulScanReader_DataListenerImplementor: can't find referenced class com.symbol.emdk.simulscan.SimulScanData
2>PROGUARD : warning : mono.com.symbol.emdk.simulscan.SimulScanReader_DataListenerImplementor: can't find referenced class com.symbol.emdk.simulscan.SimulScanData
2>PROGUARD : warning : mono.com.symbol.emdk.simulscan.SimulScanReader_StatusListenerImplementor: can't find referenced class com.symbol.emdk.simulscan.SimulScanReader$StatusListerner
2>PROGUARD : warning : mono.com.symbol.emdk.simulscan.SimulScanReader_StatusListenerImplementor: can't find referenced class com.symbol.emdk.simulscan.SimulScanReader
2>PROGUARD : warning : mono.com.symbol.emdk.simulscan.SimulScanReader_StatusListenerImplementor: can't find referenced class com.symbol.emdk.simulscan.SimulScanStatusData
2>PROGUARD : warning : mono.com.symbol.emdk.simulscan.SimulScanReader_StatusListenerImplementor: can't find referenced class com.symbol.emdk.simulscan.SimulScanStatusData
2>PROGUARD : warning : there were 57 unresolved references to classes or interfaces.
2>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.
========== Rebuild All: 1 succeeded, 1 failed, 0 skipped ==========

如何解决此问题?我不仅要修正警告,还要修正error以上的问题.

How can I fix this issue? I want to fix above error not only warnings.

推荐答案

请按照以下步骤操作

  • 首先,您需要将proguard.cfg添加到您的android项目级别.
  • 将proguard.cfg文件构建操作更改为ProguardConfiguration
  • 将使用Notepad ++的proguard.cfg文件编码更改为UTF-8

如果收到警告,则需要使用如下所示的-dontwarn属性

If you are getting warnings then you need to use -dontwarn attribute like below

-dontwarn com.symbol.emdk.**
-dontwarn org.apache.http.**
-dontwarn com.appdynamics.eumagent.runtime.**

您必须删除/解决警告,因为这会导致上述错误.上面的代码将删除所有警告.
如果执行应用程序后出现异常,则需要使用-keep属性.像下面这样的必修课

You must need to remove/solve warning because that cause above error. Above code will remove all of your warnings.
If you are getting exception after executing your application you need to use -keep attribute. like below for required classes

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

这篇关于如何将Proguard Optimizer工具与Xamarin表单一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆