Intereting Posts
DatabaseReference и FirebaseDatabase – не могут разрешить символ Post id facebook share dialog всегда возвращает null в Android Проблема с привязкой данных с помощью Kotlin для Android Как подключить XML-файл в тексте сообщения HTTP-запроса? Android xml-селектор для макетов Переключение черного экрана между активностью Фильтрация курсора в правильном направлении? Использование значков запуска mipmap до Android 4.2? Как узнать, активировал ли пользователь параметр доступности «большего шрифта» в андроиде? Сыграйте с сайта Shoutcast Url в android В управляемом и неуправляемом состоянии App Billing для продукта Несколько подписейКонфиги для нескольких вариантов Как получить правильное расстояние прокрутки RecyclerView при использовании StaggeredGridLayoutManager? Исключение – не удалось разрешить атрибут по индексу 6: TypedValue Java.lang.IllegalStateException: приложение PagerAdapter изменило содержимое адаптера без вызова PagerAdapter # notifyDataSetChanged android

Как изменить файл AndroidManifest.xml на основе вариантов сборки?

У меня есть приложение с несколькими вариантами сборки. Варианты используются для создания версий одного и того же приложения для разных компаний. Итак, у меня есть несколько разных вариантов, которые создают разные приложения:

  • com.acme.app1
  • com.schmoe.app2
  • com.yop.app3
  • и т.д…

Файл build.gradle обрабатывает это очень хорошо:

productFlavors { app1 { applicationId "com.acme.app1" } app2 { applicationId "com.schmoe.app2" } app3 { applicationId "com.yop.app3" } } 

Вот моя проблема. Я интегрирую Dropbox в свои приложения. Файл AndroidManifest.xml должен быть изменен для каждого варианта, чтобы включить соответствующий ключ приложения (сохраненный в моем строковом файле). Dropbox имеет следующее дополнение к файлу манифеста:

  <activity android:name="com.dropbox.client2.android.AuthActivity" android:launchMode="singleTask" android:configChanges="orientation|keyboard"> <intent-filter> <!-- Change this to be db- followed by your app key --> <data android:scheme="db-abcdef" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> 

Каждый вариант сборки должен изменить следующую строку:

  <data android:scheme="db-abcdef" /> 

К соответствующему значению для каждого варианта приложения. Другими словами, мне нужно заменить часть указанной строки на основе варианта сборки. Например

App1

  <data android:scheme="db-111111" /> 

App2

  <data android:scheme="db-222222" /> 

App3

  <data android:scheme="db-333333" /> 

Строка одинакова для каждого варианта до текста «db-».

Мне нужно динамически заменить переменную часть строки (значения x) «db-xxxxxx» на строку из моего строкового файла.

Я думаю, что это можно сделать с помощью сценариев градации, но я полный newb с градиентом. ПОМОГИТЕ!

Если вы можете помочь, пожалуйста, будьте очень конкретны в отношении того, что происходит с тех пор, как я СОХРАНИТЬ в файлах gradle и сценариях. Заранее спасибо!

Вы можете сделать это так же, как и изменить имя приложения, используя строковый ресурс. В вашем манифесте включайте:

 <data android:scheme="@string/db_scheme" /> 

Затем вы добавляете папки ресурсов для разных типов сборки, а в каждом размещаете собственную копию файла ресурсов, например res/values/flavor.xml :

 <?xml version="1.0" encoding="utf-8" standalone="no"?> <resources> <string name="app_name">Customer 1 App</string> <string name="db_scheme">db-111111</string> </resources> 

Это позволит вам иметь разные ключи API, схемы, имена приложений, значки и т. Д. Для ваших различных вкусов.

Вы также можете сохранить строку в build.gradle :

 productFlavors { app1 { applicationId "com.acme.app1" resValue "string", "my_app_key", "db-abc" } app2 { applicationId "com.schmoe.app2" resValue "string", "my_app_key", "db-def" } app3 { applicationId "com.yop.app3" resValue "string", "my_app_key", "db-ghi" } } 

И затем используйте его так:

 <data android:scheme="@string/my_app_key" />