Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin多平台中iOS应用程序的不同架构_Ios_Xcode_Kotlin Multiplatform - Fatal编程技术网

Kotlin多平台中iOS应用程序的不同架构

Kotlin多平台中iOS应用程序的不同架构,ios,xcode,kotlin-multiplatform,Ios,Xcode,Kotlin Multiplatform,我正在从事一个KMM项目,我需要为我的项目创建不同的模式,例如(开发、生产、QA),我可以在android部分轻松地完成,但我无法在iOS中创建相同的模式。我试着在iOS应用程序中创建不同的模式,但我的应用程序在android studio中错误地指向我们的packForXcode任务而崩溃 崩溃时出错:-没有枚举常量org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType.DEVELOPMENT这里我创建了一个名为DEVELOPMENT 这个

我正在从事一个KMM项目,我需要为我的项目创建不同的模式,例如(开发、生产、QA),我可以在android部分轻松地完成,但我无法在iOS中创建相同的模式。我试着在iOS应用程序中创建不同的模式,但我的应用程序在android studio中错误地指向我们的
packForXcode
任务而崩溃

崩溃时出错:-
没有枚举常量org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType.DEVELOPMENT
这里我创建了一个名为
DEVELOPMENT

这个错误指向

val packForXcode by tasks.creating(Sync::class) {
group = "build"
val mode = System.getenv("CONFIGURATION") ?: "DEBUG"
val sdkName = System.getenv("SDK_NAME") ?: "iphonesimulator"
val targetName = "ios" + if (sdkName.startsWith("iphoneos")) "Arm64" else "X64"
val framework = kotlin.targets.getByName<KotlinNativeTarget>(targetName).binaries.getFramework(mode)
inputs.property("mode", mode)
dependsOn(framework.linkTask)
val targetDir = File(buildDir, "xcode-frameworks")
from({ framework.outputDirectory })
into(targetDir)
}
val packForXcode by tasks.creating(Sync::class){
group=“build”
val mode=System.getenv(“配置”)?:“调试”
val sdkName=System.getenv(“SDK_名称”)?:“iphonesimulator”
val targetName=“ios”+if(sdkName.startsWith(“iphoneos”)“Arm64”或“X64”
val framework=kotlin.targets.getByName(targetName).binaries.getFramework(模式)
属性(“模式”,模式)
dependsOn(framework.linkTask)
val targetDir=File(buildDir,“xcode框架”)
来自({framework.outputDirectory})
进入(targetDir)
}

现在进入
二进制文件
我可以看到有两个
本地构建目标
调试
发布
,因此我可以在这两个版本中运行,但如何为我的iOS应用程序创建自定义模式?

问题是由包含
“配置”
值的
模式
变量引起的,从Kotlin/本机编译器的角度来看,它不是合适的生成类型(请参阅中的一些详细信息)。为了避免这种情况,应该重新定义函数确定
mode
s值。例如,它可能是这样的:

val mode = if (System.getenv("CONFIGURATION") != "release") "DEBUG" else System.getenv("CONFIGURATION")
下面是我的工作


val packForXcode by tasks.creating(Sync::class) {
    group = "build"
    // Below line is important to solve it
    val mode = if (System.getenv("CONFIGURATION") != "release") "DEBUG" else System.getenv("CONFIGURATION")
    val sdkName = System.getenv("SDK_NAME") ?: "iphonesimulator"
    val targetName = "ios" + if (sdkName.startsWith("iphoneos")) "Arm64" else "X64"
    val framework = kotlin.targets.getByName<KotlinNativeTarget>(targetName).binaries.getFramework(mode)
    inputs.property("mode", mode)
    dependsOn(framework.linkTask)
    val targetDir = File(buildDir, "xcode-frameworks")
    from({ framework.outputDirectory })
    into(targetDir)
}


val packForXcode by tasks.creating(Sync::class){
group=“build”
//下面这一行对解决这个问题很重要
val mode=if(System.getenv(“配置”)!=“发布”)“调试”else System.getenv(“配置”)
val sdkName=System.getenv(“SDK_名称”)?:“iphonesimulator”
val targetName=“ios”+if(sdkName.startsWith(“iphoneos”)“Arm64”或“X64”
val framework=kotlin.targets.getByName(targetName).binaries.getFramework(模式)
属性(“模式”,模式)
dependsOn(framework.linkTask)
val targetDir=File(buildDir,“xcode框架”)
来自({framework.outputDirectory})
进入(targetDir)
}

如果我使用
kotlin(“native.cocoapods”)
,我如何重新分配
配置值呢?自定义构建名称和cocoapods插件存在问题。详情请参阅。