如何在Android上远程更新翻译字符串.xml而无需上传新的APK?

3
有时我们只想更改一些字符串。然而,我们必须重新编译和签名应用程序并上传到Play商店。用户也必须下载和更新。
我认为Firebase远程配置是一个有趣的解决方案。但似乎远程配置不能自行更新string.xml。
有什么解决办法吗?

你无法在不重新安装的情况下更新APK文件的内容。因此,您将无法更新strings.xml。相反,您可以将字符串资源存储在其他文件中,该文件将存储在应用程序的私有存储中,并在更新时进行下载/替换。 - Vladyslav Matviienko
@UmAnusorn 虽然您无法直接更新strings.xml。如果您想要一个非常简单的解决方案,那么我已经回答了一个类似的问题https://dev59.com/B5rga4cB1Zd3GeqPsM78#60133893 - Ravindra Barthwal
2个回答

2

我认为没有办法更新你的string.xml文件,但是你可以通过api请求实现此功能。这样,您的每个字符串都将由api驱动,并且您可以随时更改。

有一个名为proteus的框架。因此,借助此框架,您可以动态生成完整的布局。


1

正如被接受的答案所述,没有官方的方法可以做到这一点,

但是,既然您想要一个Firebase解决方案,这里有一个通用库Telereso,它还可以控制图像。

将其添加到build.gradle中。

// At your root build.gradle
allprojects {
    repositories {
        // add JitPack repository
        maven { url 'https://jitpack.io' } 
        jcenter()
        google()
    }
}

// At your app build.gradle
implementation("io.telereso:telereso:1.0.1-alpha")

初始化

class MyApplication : Application() {
   override fun onCreate() {
      super.onCreate()
      Telereso.init(this)
   }
}

通过将此代码添加到样式中,它支持全局更改字符串

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/style_color_primary</item>
    <item name="colorPrimaryDark">@color/style_color_primary_dark</item>
    <item name="colorAccent">@color/style_color_accent</item>
    <item name="colorControlHighlight">@color/fab_color_pressed</item>
    <item name="viewInflaterClass">io.telereso.android.RemoteViewInflater</item>
</style>

或者像这样进行作用域更改

var text = Telereso.getRemoteString(R.strings.title) // if remote not found, R.string.tile will be used

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接