【问题标题】:Download and replace Android resource files下载和替换Android资源文件
【发布时间】:2016-02-29 15:18:51
【问题描述】:

我的应用程序将为每个使用它的公司进行一些自定义。到目前为止,我一直在从资源文件中加载图像和字符串。这个想法是默认资源将与应用程序一起分发,公司特定资源将在他们单击电子邮件中的链接以启动初始化意图后从我们的服务器加载。有谁知道如何替换资源文件?我真的很想继续使用资源文件以避免重写大量代码/XML。

我会从我们自己的服务器而不是通过应用商店分发应用程序,这样我们就可以为每个公司提供一个版本,但不幸的是,这会发出非常讨厌的安全警告,让我们的客户感到担忧。

【问题讨论】:

    标签: android resources


    【解决方案1】:

    有人知道怎么换吗 资源文件?

    这是不可能的,除非通过部署更新的 APK。 APK 是经过数字签名的,不能在运行时修改。

    【讨论】:

    • 是否可以替换onDestroy的资源?例如,客户希望看到更改,所以他们终止了应用程序(可能使用按钮)并重新启动?我知道这个问题很老,但我们正在尝试类似的事情。在我们交付给公司的 QA 版本中,我们希望能够远程更新他们的版本,而无需完全重建和 QA 对全新版本的全新更改。
    • @petestmart:“是否可以替换 onDestroy 的资源?” - 不。 “在我们运送给公司的 QA 构建中,我们希望能够远程更新他们的构建,而无需完全重建和 QA 对全新构建的全新更改” - 任何需要在没有重建的情况下进行更改的东西都需要从某种 Web 服务或类似的动态数据源获得。不能是不能在运行时修改的代码、资源或资产。
    • 正确,我们的更改实际上是从网络服务下载的。
    • @petestmart:这很好,但它们不能替换代码、资源、资产或 APK 中内置的任何其他内容。如果您没有此运行时检索到的数据,欢迎您使用资源作为后备,但您无法在运行时替换已编译的资源。
    • 有趣。谢谢你们的cmets!
    【解决方案2】:

    不,这是不可能的,但是您可以这样做...将您的图像等复制到 Assets 文件夹中。从 assets 文件夹中,在运行时将它们复制到应用程序目录中。即 data/data/你的应用程序包/你的资源文件夹 使用运行时文件夹中的图像等..即在代码中说,..imageView.setBackgroundDrawable(data/data/apppackagename/download/themename/resourcename)... 现在,当您从运行时路径下载资源时,请保留一个 XML 文件,其中包含键名和图像路径作为键值对。在代码中为此设置适当的枚举,并在运行时将图像路径存储在 HashMap 中。.

    【讨论】:

    • 所以,基本上,您是在建议不要使用 Android 的 resource 系统,而只使用他们的文件存储空间?
    • 我会赞成这个答案,除了你的第一句话说“是的,它可能”,实际上它无法完成,而这只是一种解决方法。如果你纠正这个,那么我会赞成它
    • @Casebash 我理解你所说的“如果你纠正这个”的意思。所以基本上你不能替换可绘制文件夹,即资源文件夹,但可以参考从运行时路径获取的图像。所以通过它可能不是我的意思,替换资源文件夹中的图像,但如果您提供运行时路径,则可以在运行时替换图像的解决方案。对于造成的所有不便,我们深表歉意。 :) 谢谢,阿洛克。
    • 如果您的答案是这样的:“不,这是不可能的,但您可以这样做。”
    • @Casebash :) :) 下次会注意的 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 2016-09-02
    • 2014-12-23
    • 2021-04-11
    • 2012-02-03
    相关资源
    最近更新 更多