在发布版本之后或者即时运行关闭时,Android图像不会显示

时间:2017-01-21 13:17:25

标签: 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)

我也尝试了以下方式

mContext.getResources().getIdentifier(mCur.getString(mCur.getColumnIndex(Constant.COLUMN_IMAGE_DRAWABLE))+"", "drawable", mContext.getPackageName());

使用以下代码

设置图像资源
imgPosotion.setImageResource(item.getDrawable());

当我从Android工作室打开即时运行时都工作但不幸的是当我关闭Android工作室的即时运行功能时,它们都不起作用。 我在调试时使用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'
        }

观察情景 图像没有显示。代码运行完美,并在运行即时运行时显示图像。 我发布版本然后反编译它,我发现图像(.png扩展名)在res / drawable-hdpi文件夹中,但大小转换为1 * 1维度(67byte),当我试图打开只是一个点是可见的当我试图打开jpg(转换为0byte大小)文件时,它们不会被打开。

预期方案 图像必须可见 采取行动解决 使图像尺寸变小 将图像转换为.png到jpg 我坚持这个问题所以请帮助我。感谢,如果有人可以帮助解决问题。

3 个答案:

答案 0 :(得分:3)

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

之后它可以工作
release {
            ..
            minifyEnabled true
            shrinkResources false

        }

答案 1 :(得分:1)

发布{ .. minifyEnabled是 收缩资源为假

    }

为我工作

答案 2 :(得分:0)

这是一种不好的做法,您应该按照此处https://developer.android.com/studio/build/shrink-code#keep-resources

所述使用Google官方策略