Android可绘制对象在Debug中起作用,但在Release中变成黑色方块

问题描述 投票:0回答:1

我正在开发一个Android应用程序(使用Flutter编写,但我认为不重要),该应用程序使用了一个名为quick_plus.png的可绘制对象,如下所示:

enter image description here

在调试模式下效果很好。

但不是在释放模式下,quick_plus.png可绘制对象变为黑色正方形。解压缩我的APK后,我确认它们也是包含的内容,只是一个黑色方块:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9UUzlQVy5wbmcifQ==” alt =“在此处输入图像描述”>

不知道这是否相关,但我通过遵循bundletool docs生成了这些APK:

bundletool build-apks \
--bundle=build/app/outputs/bundle/release/app-release.aab \
--output=build/app/outputs/bundle/release/app-release.apks \
--ks=... \
--ks-pass=... \
--ks-key-alias=... \
--key-pass=...

bundletool install-apks --apks=build/app/outputs/bundle/release/app-release.apks

这是我的build.gradle版本配置:

signingConfigs {
    release {
        keyAlias keystoreProperties['keyAlias']
        keyPassword keystoreProperties['keyPassword']
        storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
        storePassword keystoreProperties['storePassword']
    }
}
buildTypes {
    release {
        signingConfig signingConfigs.release

        minifyEnabled true
        useProguard true

        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

proguard-rules.pro

#Flutter Wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.**  { *; }
-keep class io.flutter.util.**  { *; }
-keep class io.flutter.view.**  { *; }
-keep class io.flutter.**  { *; }
-keep class io.flutter.plugins.**  { *; }
-keep class com.dexterous.** { *; }

以前有人看过吗?

android flutter apk android-drawable
1个回答
1
投票

发现问题!

这是由于Android shrinking and obfuscating我的代码。我要做的就是添加一个名为android/app/src/main/res/raw/keep.xml的文件:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
  tools:keep="@drawable/quick_plus" />
© www.soinside.com 2019 - 2024. All rights reserved.