Создайте несколько приложений из одной кодовой базы в KMM (CMP) для iOSIOS

Программируем под IOS
Ответить
Anonymous
 Создайте несколько приложений из одной кодовой базы в KMM (CMP) для iOS

Сообщение Anonymous »

В настоящее время я работаю над проектом Compose Multiplatform (CMP), нацеленного на Android и iOS. Одно из основных требований заключается в поддержке около 40 различных вариантов приложений из одной кодовой базы. < /P>
✅ Настройка Android (работа)
В моих предыдущих проектах только для Android я обрабатывал этот с помощью вкусов продукта Gradle и. Android -часть моего текущего проекта CMP с использованием Build.gradle.kts. < /p>
❌ настройка iOS (сложная)
Задача, с которой я сталкиваюсь сейчас, - это аналогичная динамическая конфигурация для цели iOS. В частности, я хочу прочитать значения из файлов .ENV во время сборки и использовать их для настройки:
Приложение отображает имя
идентификатор пакета
Другие специфичные для iOS настройки < /p>
Example Files:
.env.matrimony.dev.json
{
"COMMON_BUILD_CONFIGS": {
"APP_NAME": "India Matrimony",
"ACTIVE_PAYMENT_GATEWAY": true
},
"ANDROID_BUILD_CONFIGS": {
"ANDROID_APPLICATION_ID": "com.dev.app"
},
"ANDROID_MANIFEST_PLACEHOLDERS": {
"APP_NAME": "MDEV"
},
"IOS_BUILD_CONFIGS": {
"APP_NAME": "IOS_DEV",
"BUNDLE_ID": "com.dev.app"
}
}

.flavours.json
[
"dev",
"prod"
]

build.gradle.kts
extra["getEnvironment"] = { variant: String ->
val fileName = ".env.matrimony.$variant.json"
val file = file("${rootProject.projectDir}/$fileName")
val json = JsonSlurper().parse(file)
json as Map
}

extra["getFlavours"] = {
val fileName = ".flavours.json"
val file = file("${rootProject.projectDir}/$fileName")
val json = JsonSlurper().parse(file)
json as List
}

val getEnvironment = extra["getEnvironment"] as (String) -> Map
val getFlavours = extra["getFlavours"] as () -> List

android {
productFlavors {
getFlavours().forEach { flavor ->
create(flavor) {
dimension = "location"
val env = getEnvironment(flavor)

val androidConfigs = env["ANDROID_BUILD_CONFIGS"] as Map
applicationId = androidConfigs["ANDROID_APPLICATION_ID"].toString()

val placeholders = env["ANDROID_MANIFEST_PLACEHOLDERS"] as Map
placeholders.forEach { (key, value) ->
this.manifestPlaceholders[key] = value
}
}
}
}
}
< /code>
Мы попытались проверить документы и другие приложения, но были бесполезны. Динамически
автоматизировать это для каждого варианта (например, с ароматами продукта Android) < /strong>
Есть ли рекомендуемый подход для выполнения этого с Multipliform Mobile (KMM) или составлением мультиплатформы? < /P>

Подробнее здесь: https://stackoverflow.com/questions/796 ... mp-for-ios
Ответить

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

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

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

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

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