代码之家  ›  专栏  ›  技术社区  ›  Daniele

Android-Drawables在每次更新应用程序后都会出错

  •  0
  • Daniele  · 技术社区  · 7 年前

    我在play store上发布了一个应用程序,我和我的用户都面临着一个恼人的问题。

    我将对象列表存储为JSON字符串,如下所示:

    val obj = JSONObject()
        try {
            ...
            obj.put("image", image)
        } catch (e: JSONException) {
            Log.d("JSONException: ", e.message)
        }
    

    哪里 image: Int 存储的值 R.drawable.image

    问题是,每次我发布应用程序的更新时,这个映像都会被另一个drawable(不总是同一个)替换 /res/

    我怀疑这与proguard的代码缩减有关,因为我有两个原因:

    minifyEnabled true
    shrinkResources true
    

    我怎样才能解决这个问题?

    如果可能的话,我会避免不缩小图片,因为我有相当数量的图片,这会增加应用程序的下载大小。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Henry    7 年前

    例如,您可以使用一个包含资源编号的数组,并持久化某个drawable的索引。

        2
  •  1
  •   emandt    7 年前

    来自googledocs:“在编译应用程序时,aapt生成R类,其中包含res/目录中所有资源的资源id。对于每种资源类型,都有一个R子类(例如,对于所有可绘制资源,R.drawable),对于该类型的每个资源,都有一个静态整数(例如,R。可绘制.icon). 这个整数是您可以用来检索资源的资源ID。“因此,当您构建APK时,ResourceID可以毫无预期地更改。。。