首页 > 解决方案 > 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 或两者)时,我都会执行清理、删除objbin文件夹和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:

标签: androidxamarinxamarin.androiddotfuscatorandroid-r8

解决方案


推荐阅读