微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iOS 复制包到 XCFramework

如何解决iOS 复制包到 XCFramework

我目前正在从事 Kotlin 多平台项目。我们正在使用 Moko Resources (https://github.com/icerockdev/moko-resources) 创建资源共享目录。这适用于 FAT 框架,但是我们需要使用 XCFrameworks。我对iOS和框架情况不是很熟悉,请原谅我的无知。

现在,我们构建 XCFramework 时似乎出了点问题,因为运行该应用程序显示 commainMain.MR 不可用,所以我认为我们的包没有被正确复制。

这是我们的 fatFramework Gradle 任务:

        register("buildFatFrameworkWithResources",TestFatFramework::class) {
        val debugMode = "DEBUG"
        val mode = System.getenv("CONfigURATION") ?: debugMode
        destinationDir = buildDir.resolve("xcode-universal-framework")
        group = "Universal framework"
        description = "Builds a universal (fat) $mode framework"

        from(iosArm64Framework,iosX64Framework)
        dependsOn(iosArm64Framework.linkTask)
        dependsOn(iosX64Framework.linkTask)
    }

还有我们的XCFramework任务

        register("buildxcFrameworkWithResources") {
        dependsOn("deleteXcFramework")
        val mode = "DEBUG"
        val frameworks = arrayOf("iosArm64","iosX64").map {
            kotlin.targets.getByName<KotlinNativeTarget>(it).binaries.getFramework(mode)
        }

        inputs.property("mode",mode)
        dependsOn(frameworks.map { it.linkTask })
        group = "Universal framework"
        description = "Builds a universal (xc) $mode framework"

        frameworks.first().outputFile.listFiles()
            ?.asSequence()
            ?.filter { it.name.contains(".bundle") }
            ?.forEach { bundleFile ->
                project.copy {
                    from(bundleFile)
                    into("$xcFrameworkPath/${bundleFile.name}")
                }
            }

        doLast {
            val buildArgs: () -> List<String> = {
                val arguments = mutablelistof("-create-xcframework")
                frameworks.forEach {
                    arguments += "-framework"
                    arguments += "${it.outputDirectory}/${project.name}.framework"
                }
                arguments += "-output"
                arguments += xcFrameworkPath
                arguments
            }

            exec {
                executable = "xcodebuild"
                args = buildArgs()
            }
        }
    }

我不太确定需要更改什么才能使其正常工作。 感谢您的帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。