如何在不上传新 APK 的情况下远程更新 Android 上的翻译 string.xml?
How to remote update translation string.xml on Android without upload new APK?
有时候我们只是想改变一些字符串。但是,我们必须重新编译并退出应用程序并上传到 Play Store。用户也必须下载和更新。
我认为 Firebase 远程配置是一个有趣的解决方案。但似乎 remote-config 无法自行更新 string.xml。
有什么解决办法吗?
我认为无法更新您的 string.xml 文件,但您可以通过 api 请求实现此功能。所以这样你的每个字符串都将被 api 驱动,你可以随时更改。
有一个名为 proteus 的框架。因此,借助于此,您可以动态生成完整的布局。
正如公认的答案所述,没有官方方法可以做到这一点,
但是既然你想要一个 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
有时候我们只是想改变一些字符串。但是,我们必须重新编译并退出应用程序并上传到 Play Store。用户也必须下载和更新。
我认为 Firebase 远程配置是一个有趣的解决方案。但似乎 remote-config 无法自行更新 string.xml。
有什么解决办法吗?
我认为无法更新您的 string.xml 文件,但您可以通过 api 请求实现此功能。所以这样你的每个字符串都将被 api 驱动,你可以随时更改。 有一个名为 proteus 的框架。因此,借助于此,您可以动态生成完整的布局。
正如公认的答案所述,没有官方方法可以做到这一点,
但是既然你想要一个 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