android - Xamarin.Android:使用 R8 或 dotfuscator 发布构建正常,但不能同时使用两者
问题描述
语境 :
VS2019 中的 Xamarin.Android - 目标:Android 9.0 (API 28)
- 应用程序使用AndroidX.AppCompat.App
- 应用程序部署到三星 SM-G935F ( Android 8.0 - API 26
)。链接设置为SDK Assemblies only
。DEX 编译器设置为dx
.
Dotfuscator 社区 (VS 2019)5.44.0
使用 [官方指南] ( https://www.preemptive.com/dotfuscator/ce/docs/help/getting_started_xamarin.html ) 集成。
所以在.csproj
文件末尾添加了以下内容:
<PropertyGroup>
<DotfuscatorXamarinConfigFileName>DotfuscatorConfig.xml</DotfuscatorXamarinConfigFileName>
<DotfuscatorXamarinCliPath>E:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscatorCLI.exe</DotfuscatorXamarinCliPath>
<DotfuscatorXamarinGenerateNewConfigFile>true</DotfuscatorXamarinGenerateNewConfigFile>
<!-- Enable Dotfuscator for Release -->
<DotfuscatorXamarinEnabled Condition="'$(Configuration)' == 'Release'">true</DotfuscatorXamarinEnabled>
<!-- Enable Dotfuscator for Ad-Hoc (only needed for iOS) -->
<DotfuscatorXamarinEnabled Condition="'$(Configuration)' == 'Ad-Hoc'">true</DotfuscatorXamarinEnabled>
<!-- Enable Dotfuscator for AppStore (only needed for iOS) -->
<DotfuscatorXamarinEnabled Condition="'$(Configuration)' == 'AppStore'">true</DotfuscatorXamarinEnabled>
</PropertyGroup>
<Import Project=PATH TO PreEmptive.Dotfuscator.Xamarin.Targets/>
问题 :
应用程序在使用代码收缩器 r8或dotfuscator的发布版本中可以正常启动,但不能同时使用两者(“应用程序已停止”在启动时)。这是一个已知问题吗?
每次我更改项目配置(单独的 r8、单独的 dotfuscator 或两者)时,我都会执行清理、删除obj
和bin
文件夹和rebuild
. (每次三星设备出现之前,我都必须重新启动 VS2019 3 次,这还不够复杂)。
输出窗口仅显示以下内容:
Start debugging Android application ...
Android application is running (debug is disabled in android project properties).
我不知道如何为发布模式启用调试(勾选“启用开发人员工具”不会改变任何东西)以获取更多信息。
当应用程序崩溃时,logcat 中会出现错误(因此仅适用于r8和 dotfuscator):
java.lang.ClassNotFoundException: Didn't find class "androidx.appcompat.widget.FitWindowsLinearLayout" ...
Xamarin 日志如下:
Xamarin.VisualStudio.TastyPackage|Information|0|Hooked up SDB tracing adapter
Xamarin.VisualStudio.TastyPackage|Information|0|Initialization finished
Xamarin|Information|0|Xamarin - 16.6.000.1064-d16-6+b03f31e
Xamarin.VisualStudio.TastyPackage|Information|0|Hooked up SDB tracing adapter
Xamarin.VisualStudio.TastyPackage|Information|0|Initialization finished
Xamarin.VisualStudio.Android.XamarinAndroidPackage|Warning|0|Initializing Xamarin.VisualStudio.Android.XamarinAndroidPackage
Xamarin.VisualStudio.Android.Setup.AndroidSdkSetup|Information|0|androidsdksetup: processing AndroidStarted event
Xamarin.VisualStudio.Android.Setup.AndroidSdkSetup|Information|0|androidsdksetup: verify mustCheckIfSolutionIsReady:True delay:00:00:02
Xamarin.VisualStudio.Android.Setup.AndroidSdkSetup|Information|0|androidsdksetup: verify canceled => solution is not ready
Xamarin.VisualStudio.Android.Setup.AndroidSdkSetup|Information|0|androidsdksetup: processing ActiveProjectConfigurationChanged event
Xamarin.VisualStudio.Android.Setup.AndroidSdkSetup|Information|0|androidsdksetup: verify mustCheckIfSolutionIsReady:True delay:00:00:02
Xamarin.VisualStudio.Android.Setup.AndroidSdkSetup|Information|0|androidsdksetup: verify canceled => solution is not ready
Xamarin.HotReload|Information|0|2020-07-23 03:54:54.1 Hot Reload IDE Extension Loaded
Xamarin.VisualStudio.Android.Setup.AndroidSdkValidation|Information|0|androidsdksetup: verify android sdk installed
Xamarin.VisualStudio.Android.Setup.AndroidSdkValidation|Information|0|androidsdksetup: removing android sdk errors
Xamarin.VisualStudio.ProjectSystem.PackageServices|Warning|0|Failed to Restore Nuget packages for project (CSPROJ PATH).
Xamarin.VisualStudio.Android.Setup.AndroidSdkSetup|Information|0|androidsdksetup: verify error:
Xamarin.VisualStudio.Android.Setup.AndroidSdkSetup|Information|0|androidsdksetup: processing ManifestChanged event
Xamarin.VisualStudio.Android.Setup.AndroidSdkValidation|Information|0|androidsdksetup: verify android sdk installed
Xamarin.VisualStudio.Android.Setup.AndroidSdkValidation|Information|0|androidsdksetup: removing android sdk errors
Xamarin.VisualStudio.Android.Setup.AndroidSdkSetup|Information|0|androidsdksetup: verify error:
Xamarin.VisualStudio.Android.Setup.AndroidSdkSetup|Information|0|androidsdksetup: processing ManifestChanged event
Xamarin.VisualStudio.Android.Setup.AndroidSdkValidation|Information|0|androidsdksetup: verify android sdk installed
Xamarin.VisualStudio.Android.Setup.AndroidSdkValidation|Information|0|androidsdksetup: removing android sdk errors
Xamarin.VisualStudio.Android.Setup.AndroidSdkSetup|Information|0|androidsdksetup: processing ManifestChanged event
Xamarin.VisualStudio.Android.Setup.AndroidSdkValidation|Information|0|androidsdksetup: verify android sdk installed
Xamarin.VisualStudio.Android.Setup.AndroidSdkValidation|Information|0|androidsdksetup: removing android sdk errors
Xamarin.VisualStudio.Android.Setup.AndroidSdkSetup|Information|0|androidsdksetup: verify error:
Xamarin.VisualStudio.Android.Setup.AndroidSdkSetup|Information|0|androidsdksetup: verify error:
Xamarin.VisualStudio.Android.Setup.AndroidSdkSetup|Information|0|androidsdksetup: processing ManifestChanged event
Xamarin.VisualStudio.Android.Setup.AndroidSdkValidation|Information|0|androidsdksetup: verify android sdk installed
Xamarin.VisualStudio.Android.Setup.AndroidSdkValidation|Information|0|androidsdksetup: removing android sdk errors
Xamarin.VisualStudio.Android.Setup.AndroidSdkSetup|Information|0|androidsdksetup: verify error:
Xamarin.VisualStudio.Android.Setup.AndroidSdkSetup|Information|0|androidsdksetup: processing ManifestChanged event
Xamarin.VisualStudio.Android.Setup.AndroidSdkValidation|Information|0|androidsdksetup: verify android sdk installed
Xamarin.VisualStudio.Android.Setup.AndroidSdkValidation|Information|0|androidsdksetup: removing android sdk errors
Xamarin.VisualStudio.Android.Setup.AndroidSdkSetup|Information|0|androidsdksetup: verify error:
解决方案
推荐阅读
- web - 我可以使用 URL 参数作为 Paypal 按钮文本的输入吗?
- python - 如何使用python opencv计算两个人之间的距离?
- python - 如何从生成文件的php运行python脚本
- ios - 如何本地化/国际化应用程序图标?
- azure-machine-learning-service - 安排 Azure 机器学习计算实例
- javascript - 禁用时更改所选插件的文本颜色
- java - Android Studio中的登录和注册表单无法解析类
- css - Vue:如何将单选按钮放置在标签的中心
- graphql - 比较 GraphQL Hasura 中的两个字段
- python-3.x - Python中的实例化