发布构建后不显示 Android 图像,或者如果我立即运行关闭

Ama*_*ila 3 android android-imageview android-drawable android-proguard android-instant-run

我在运行时使用getIdentifier方法使用以下代码从 drawable-hdpi 获取图像 ID

mContext.getResources().getIdentifier(mContext.getPackageName() + ":drawable/" +  mCur.getString(mCur.getColumnIndex(Constant.COLUMN_IMAGE_DRAWABLE)), null, null)
Run Code Online (Sandbox Code Playgroud)

我也试过以下方法

mContext.getResources().getIdentifier(mCur.getString(mCur.getColumnIndex(Constant.COLUMN_IMAGE_DRAWABLE))+"", "drawable", mContext.getPackageName());
Run Code Online (Sandbox Code Playgroud)

并使用以下代码设置图像资源

imgPosotion.setImageResource(item.getDrawable());
Run Code Online (Sandbox Code Playgroud)

当我从 android studio 打开即时运行时,它们都可以工作,但不幸的是,当我从 android studio 关闭即时运行功能时,它们都不起作用。我在调试和发布时使用 Proguard 使用以下代码

 release {
            debuggable true
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            debuggable true
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
Run Code Online (Sandbox Code Playgroud)

观察到的场景 图像未显示。代码运行完美并在即时运行时显示图像。我进行发布构建然后反编译它,我观察到图像(.png 扩展名)在 res/drawable-hdpi 文件夹中,但大小被转换为 1*1 维(67 字节),当我试图打开只有一个点可见当我尝试打开 jpg(转换为 0 字节大小)文件时,它们没有打开。

预期场景 图像必须可见 采取的解决措施 使图像尺寸变小 将图像从 .png 转换为 jpg 我坚持这个问题,所以请帮助我。感谢,如果有人可以帮助排除故障。

Ama*_*ila 10

没有人认真对待这个问题,但在做了很多类型的事情后,我得到了解决方案。实际上问题出在 proguard 上,我不知道为什么,但它在设置为false 后可以使用 shrinkResources

release {
            ..
            minifyEnabled true
            shrinkResources false

        }
Run Code Online (Sandbox Code Playgroud)

  • @Sakthi,您应该使用“保留资源”,如此处所述 https://developer.android.com/studio/build/shrink-code#keep-resources (2认同)