Могу ли я использовать удаленную конфигурацию Firebase для обновления strings.xml приложения Android?

Хорошо известно, что Firebase Remote Config - это облачная служба, которая позволяет изменять поведение и внешний вид вашего приложения, не требуя от пользователей загрузки обновления приложения.

Мне было интересно, можно ли использовать Firebase Remote Config для обновления strings.xml?

Иногда мне нужно обновить файл strings.xml (например: исправить перевод языков локали). И для этого мне нужно обновить свое приложение.

Замечательно, если мы сможем хранить strings на сервере, например, Firebase.


person TOP    schedule 16.09.2016    source источник
comment
strings.xml нельзя изменить во время выполнения.   -  person Atif Farrukh    schedule 16.09.2016
comment
@AtifFarrukh Спасибо.   -  person TOP    schedule 16.09.2016
comment
@TOP Хотя вы не можете обновлять strings.xml динамически. Для этого есть простое решение. Проверьте мой ответ ниже.   -  person Ravindra Barthwal    schedule 09.02.2020


Ответы (2)


Думаю через Firebase это не сделать, надо только apk обновить.

person asdcvf    schedule 16.09.2016
comment
Так грустно знать, что - person TOP; 16.09.2016

Динамическое обновление strings.xml невозможно, но есть решение. Я столкнулся с той же проблемой, когда хотел провести A / B-тестирование с помощью Firebase Remote Config. Поэтому я создал библиотеку FString для Android, и она представляет собой умное решение. В настоящее время он поддерживает Android-приложение Mouve в рабочей среде.

Установка

  • В модуле вашего проекта build.gradle добавьте эту зависимость
implementation 'com.ravindrabarthwal.fstring:fstring:1.0.0'
  • В вашем классе приложения для Android добавьте следующий код
import com.example.myapp.R.string as RString // Import your string 

class MyApp: Application() {

    override fun onCreate() {
        super.onCreate()
        FString.init(RString::class.java) // Initializes the FString
    }

}

использование

Для доступа к строкам

  // This is how you get strings without FString
  context.getString(R.string.my_app_name) // This is how you normally do

  // To get the string using FString use
  FString.getString(context, R.string.my_app_name)

  // If you prefer extension function use
  context.getFString(R.string.my_app_name) // This is how FString works ;)

Чтобы обновить значения FString

  /*
   * Assume this JSON is coming from server. The JSON string 
   * must be parseable to a JSON object with key and value pairs
   */
  var jsonFromServer = """
      {
        "my_app_name": "MyApp v2.0",
        "some_other_string": "this is so cool",
      }
  """.trimIndent()

  // This will update the SharedPreference using keys from
  // above JSON and corresponding value. The SharedPreference will
  // not save any key that is not is strings.xml
  FString.update(context, jsonFromServer) 

Дополнительную информацию см. В документации к библиотеке. Если вы найдете ответ полезным, проголосуйте за него и отметьте его как ответ.

person Ravindra Barthwal    schedule 09.02.2020