【问题标题】:How to overwrite android asset?如何覆盖android资产?
【发布时间】:2012-09-29 05:41:24
【问题描述】:

我的资产文件夹中有一个小的 XML(KB) 文件。我的应用程序从中提取数据。但是后来我下载了文件的更新版本,我需要以某种方式替换它,但我不知道该怎么做?
由于我正在开发更高的 API`S,我可以使用 DownloadManager 类。

【问题讨论】:

    标签: java android file overwrite download-manager


    【解决方案1】:

    您无法替换资产 - 资产与资源一样,都是只读的。

    相反,您需要调整您的应用程序以检测您是否已下载替换文件,并在可用时使用该替换文件而不是资产。

    【讨论】:

    • 我对这个主题有更多的了解,发现资产被压缩到 .apk 文件中,但是如果创建了具有特定扩展名的文件夹,则它不会被压缩。我可以替换此类文件夹中的文件并使用它来获取数据吗?你看我真的不需要这两个文件,下载作为更新。只是我没有什么不必要的更新所有的应用程序。
    • @BestBeast:“我可以替换此类文件夹中的文件并使用它来获取数据吗?” -- 没有。
    • 那么就没有合理的方法来更新包含文件的信息吗?
    • @BestBeast:在运行时,从 Android SDK 的角度来看,资产和资源不是文件。它们是作为 APK 文件的 ZIP 存档中的条目。该 ZIP 文件及其内容是只读的。您仍然可以下载您的替换,并且您仍然可以使用该替换,但您的工作是检测替换是否存在并在可用时使用它,否则使用资产。
    【解决方案2】:

    我的解决方案是:在我使用资产文件之前,我删除路径中的所有缓存文件---/data/data/com.yourpackagename.xxx,当然只是当应用程序版本高于旧应用程序版本时。(我应用程序首次运行时保存了 SharedPreferences。所以我可以比较应用程序版本)。 我不知道为什么新应用的资产资源存在,但解决方案对我有用!

    ps:我的应用主页是一个网页视图和资产中的文件,所以,我需要在每次应用更新时替换它!

    【讨论】:

    • 我知道新应用的资产资源在哪里!如果你的手机根目录,你可以在这个路径中找到它:/system/app/com.yourpackagename.xxx/,它是一个重命名为base.apk的apk !
    猜你喜欢
    • 2014-03-31
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 2022-07-14
    相关资源
    最近更新 更多