Можно ли получить доступ к значению BuildConfig из AndroidManifest.xml?
В моем файле build.gradle у меня есть:
defaultConfig {
applicationId "com.compagny.product"
minSdkVersion 16
targetSdkVersion 21
versionCode 1
versionName "1.0"
// Facebook app id
buildConfigField "long", "FACEBOOK_APP_ID", FACEBOOK_APP_ID
}
FACEBOOK_APP_ID
определяется в моих файлах gradle.properties:
# Facebook identifier (app ID)
FACEBOOK_APP_ID=XXXXXXXXXX
Чтобы использовать Facebook Connect в моем приложении, я должен добавить эту строку в мой AndroidManifest.xml:
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/applicationId"/>
Я хочу заменить @string/applicationId
на поле FACEBOOK_APP_ID
BuildConfig, определенное в gradle, вот так:
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="FACEBOOK_APP_ID"/>
Возможно ли это с помощью BuildConfig? Если нет, как я могу этого достичь?
<item name="facebook_app_id" type="string">15233522...</item>
Еще один способ получить доступ к значениям Gradle Build Config из вашего AndroidManifest.xml - использовать заполнители следующим образом:
а затем в вашем манифесте:
Подробности смотрите здесь: https://developer.android.com/studio/build/manifest-build-variables.html.
(Старая ссылка только для справки: http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger )
источник
примечание: при использовании
resValue
значение может быть случайно переопределено файлом ресурсов строки (например, для другого языка)Чтобы получить истинное постоянное значение, которое вы можете использовать в манифесте и в java-коде, используйте оба
manifestPlaceholders
иbuildConfigField
: напримердоступ в файле манифеста:
из Явы:
Если значение константы должно быть специфичным для buildType, помощник
addConstant
должен быть настроен (для работы с семантикой Groovy замыкания), например,источник
addConstant()
дважды (с разным,constantNames
конечно). Какая у вас ошибка?+=
операторmanifestPlaceholders += [...]
Откройте свойства build.gradle в своем манифесте, как показано в следующем примере:
Например, у вас есть свойство «applicationId» в вашем build.gradle, и вы хотите получить к нему доступ в вашем AndroidManifest:
Откройте «applicationId» в AndroidManifest:
Точно так же мы можем создавать строковые ресурсы для других констант и обращаться к ним в файлах кода так же просто, как:
источник
@stkent - это хорошо, но забывает добавить, что вам нужно потом перестроить свой проект
замещать
с участием
затем
Это позволит Android генерировать строковый ресурс, доступный через
источник
Другой вариант: использовать другой файл строковых ресурсов для замены всех зависимых от вкуса значений:
Шаг 1: Создайте новую папку в папке «src» с названием вашего вкуса, в моем случае «stage»
Шаг 2: Создайте файлы ресурсов для всех файлов, которые зависят от разновидности, например:
Шаг 3: Я также использую различные значки, поэтому вы также видите папки mipmap. Для этой очереди важен только "strings.xml". Теперь вы можете перезаписать все важные строковые ресурсы. Вам нужно только включить те, которые вы хотите переопределить, все остальные будут использоваться из основного "strings.xml", он будет отображаться в Android Studio следующим образом:
Шаг 4: Используйте строковые ресурсы в вашем проекте и расслабьтесь:
источник
Вы можете использовать длинное значение, как показано ниже
buildConfigField 'long', 'FLAVOR_LONG', '11500L'
источник