Можно ли динамически изменить ApplicationId для различного типа сборки градл?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Можно ли динамически изменить ApplicationId для различного типа сборки градл?

Сообщение Anonymous »

У меня есть два проекта Firebase: один для производства, а другой для разработки. ApplicationId для двух проектов отличается от одной буквы в середине имени:

[*]com.xyz.myproject,
< li>com.xyz.myproject> comprong> zstrong>.myproject Один новый BuildType постановка , и мы по умолчанию по умолчанию два BuildTypes, т. Е. Debug и Release .

Код: Выделить всё

buildTypes {
debug{
//this build uses firebase project which is different from production
signingConfig signingConfigs.debug
}
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
}
create("staging"){
//This build will uses production firebase project
signingConfig signingConfigs.debug
debuggable true
}
}
< /code>
Я использовал плагин Google Services, который позволяет мне иметь различный файл JSON (а именно Google-services.json) для каждого проекта Firebase и BuildType, но я должен вручную изменить  ApplicationId < /emf> для успешного создания проекта.
Я хочу автоматизировать эту вещь! AGP или Google Service Plugin или сама Gradle выберите  ApplicationId  на основе типа сборки. Я пробовал большинство решений из Stackoverflow и Интернета, и все же все напрасны. < /P>
android {
compileSdk 35
defaultConfig{
//for debug app, I change application id to com.xyZ.myproject
//for staging/release app, I change application id to com.xyz.myproject
applicationId "com.xyz.myprjoect"
...
}
..
//removed for brevity
}
< /code>
Попробуйте 1:
Как динамически изменить ApplicationId
Поскольку я не хочу суффикс, это не сработало. < /p>
debug {
applicationIdSuffix '.xyZ.myproject'
}
staging{
applicationIdSuffix '.xyz.myproject'
}
< /code>
try 2: Настройка ApplicationId для каждого варианта сборки < /p>
androidComponents.onVariants {
// Remove the . between the base applicationId and the applicationIdSuffix that is being automatically added by gradle
// so we can have this => com.mycompany.mainappname_fullversion instead of this => com.mycompany.mainappname._fullversion
it.applicationId.set(it.applicationId.get().replace("mainappname.", "mainappname"))
}
< /code>
onvariant Не найдена ошибка. < /p>
try 3: Использование локальных свойств и настройки с использованием кода:
сначала получить локальные свойства projects.findproperty ("some_property") < /p>
applicationVariants.each{ variant ->
if(variant.name.contains("debug")){
appId = "com.xyZ.myproject"
else
appId = "com.xyz.myproject"
< /code>
и, конечно же, Chatgpt < /p>
buildTypes {
debug {
applicationId = "com.example.debug"
isMinifyEnabled = false
}
staging {
applicationId = "com.example.staging"
isMinifyEnabled = false
}
release {
applicationId = "com.example.production"
isMinifyEnabled = true
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}
, которому я должен был сказать, что нет собственности "ApplicationId" в BuildType.

Подробнее здесь: https://stackoverflow.com/questions/795 ... e-build-ty
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»