Seb*_*rga 7 xcode app-store ios kotlin kotlin-multiplatform
我尝试在 Apple App Store 上使用 Kotlin Multiplatform 分发 iOS 应用程序时遇到问题:
\n\n\n\n\n错误 ITMS-90171:“无效的捆绑结构 - 不允许二进制文件 \'Smiledu_app.app/Frameworks/shared.framework/shared\'。您的应用程序可以\xe2\x80\x99t 包含独立的可执行文件或库,除了支持的捆绑包的有效 CFBundleExecutable。有关 iOS 应用程序捆绑包结构的信息,请参阅https://developer.apple.com/go/?id=bundle-struct上的捆绑包编程指南。”
\n
我检查它在“构建阶段”->“复制捆绑资源”中不存在
\n\n这是我的 build.gradle.kts
\nimport org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget\n\nplugins {\n kotlin("multiplatform")\n kotlin("native.cocoapods")\n kotlin("plugin.serialization")\n id("com.android.library")\n id("kotlin-android-extensions")\n id("com.squareup.sqldelight")\n}\n\nrepositories {\n gradlePluginPortal()\n google()\n jcenter()\n mavenCentral()\n maven {\n url = uri("https://dl.bintray.com/kotlin/kotlin-eap")\n }\n}\n\ndependencies {\n implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.2.0")\n}\n\nconfigurations {\n create("compileClasspath")\n}\n\nandroid {\n compileSdkVersion(29)\n sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")\n defaultConfig {\n minSdkVersion(24)\n targetSdkVersion(29)\n versionCode = 1\n versionName = "1.0"\n }\n buildTypes {\n getByName("release") {\n isMinifyEnabled = false\n }\n }\n}\n\nval libName = "shared"\n\nkotlin {\n android()\n ios {\n binaries.framework(libName)\n }\n\n val coroutinesVersion = "1.4.1-native-mt"\n val serializationVersion = "1.0.0-RC"\n val ktorVersion = "1.4.0"\n val sqlDelightVersion = "1.4.3"\n val reactive_version = "1.1.18"\n\n sourceSets {\n val commonMain by getting {\n dependencies {\n implementation("org.jetbrains.kotlin:kotlin-stdlib-common")\n\n // Coroutines\n implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.2")\n\n implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion")\n implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:$serializationVersion")\n\n // KTOR\n implementation("io.ktor:ktor-client-core:$ktorVersion")\n implementation("io.ktor:ktor-client-json:$ktorVersion")\n implementation("io.ktor:ktor-client-serialization:$ktorVersion")\n\n // SQLDELIGHT\n implementation("com.squareup.sqldelight:runtime:$sqlDelightVersion")\n\n // Reactive\n implementation("com.badoo.reaktive:reaktive:$reactive_version")\n }\n }\n val androidMain by getting {\n dependencies {\n implementation("org.jetbrains.kotlin:kotlin-stdlib")\n\n implementation("androidx.core:core-ktx:1.3.2")\n implementation("io.ktor:ktor-client-android:$ktorVersion")\n implementation("com.squareup.sqldelight:android-driver:$sqlDelightVersion")\n\n implementation("androidx.lifecycle:lifecycle-extensions:2.2.0")\n }\n }\n val iosMain by getting {\n dependencies {\n implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-native:1.3.2")\n\n // HTTP\n implementation("io.ktor:ktor-client-ios:$ktorVersion")\n implementation("com.squareup.sqldelight:native-driver:$sqlDelightVersion")\n }\n }\n\n all {\n languageSettings.apply {\n progressiveMode = true\n useExperimentalAnnotation("kotlin.RequiresOptIn")\n useExperimentalAnnotation("kotlinx.coroutines.ExperimentalCoroutinesApi")\n }\n }\n }\n}\n\nval packForXcode by tasks.creating(Sync::class) {\n group = "build"\n val mode = System.getenv("CONFIGURATION") ?: "DEBUG"\n val sdkName = System.getenv("SDK_NAME") ?: "iphonesimulator"\n val targetName = "ios" + if (sdkName.startsWith("iphoneos")) "Arm64" else "X64"\n val framework = kotlin.targets.getByName<KotlinNativeTarget>(targetName).binaries.getFramework(mode)\n inputs.property("mode", mode)\n dependsOn(framework.linkTask)\n val targetDir = File(buildDir, "xcode-frameworks")\n from({ framework.outputDirectory })\n into(targetDir)\n}\ntasks.getByName("build").dependsOn(packForXcode)\n\nsqldelight {\n database("SmileduDataBase") {\n packageName = "com.example.smiledu"\n schemaOutputDirectory = file("src/commonMain/db/databases")\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1212 次 |
| 最近记录: |