首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ksp文件的多平台重声明

Ksp文件的多平台重声明
EN

Stack Overflow用户
提问于 2022-09-27 07:10:32
回答 1查看 83关注 0票数 0

我正在kotlin多平台上实现ksp processor,目标是iOS和android应用程序,下面的文档为KSP定义了多个配置名称:

代码语言:javascript
复制
add("kspIosArm64", project(":test-processor"))
add("kspIosX64", project(":test-processor"))

但是,运行这些会导致文件重声明错误。的确,文件是在不同的位置创建的:build/generated/ksp/iosArm64/build/generated/ksp/iosX64/,但是包是相同的。

我完全迷失了如何解决这个问题,有没有办法为每个生成的文件获取这个生成的文件夹路径,以便修改package

EN

回答 1

Stack Overflow用户

发布于 2022-09-27 08:51:17

我将尝试现在部分回答你的问题,而不是让你堆叠和专注于使项目能够运行。我假设您正在使用XCode为iOS运行该项目。这里的问题是(正如您所提到的),所有这些源集都是用相同的包名生成的,这更多地是一个KSP问题(我认为),我们必须等待解决。

为了运行和测试项目,您现在可以做的是:

  1. 确保在运行项目(特别是在Android和iOS运行之间)

之前,使用./gradlew clean清理构建。

我认为clean可以作为KMM框架任务之前的“步骤”添加:

XCode项目文件->构建阶段->生成KMM框架->在运行负责构建框架的分级任务之前添加clean (这将使构建时间更长)

./gradlew :yourSharedModule:clean :yourSharedModuleName:embedAndSignAppleFrameworkForXcode

  1. 只选择了在运行项目

时要构建的一个体系结构。

XCode项目->构建设置->体系结构->只构建活动体系结构->是

这个解决方案只需要构建和运行一个体系结构(在您的例子中可能是一个模拟器),这里的问题是您可能与其他体系结构有一些问题,并且在日常开发中无法很容易地发现它们。

  1. 创建某种类型的env或构建配置值,以区分要添加哪些ksp依赖项(基于它的值),因此在运行项目

时并不是所有的处理器都被添加

XCode项目->构建阶段->生成KMM框架->将其作为gradle param -Parchitecture=someArchitecture传递

或者甚至有可能在build.gradle.kts文件中完成。

  1. 手动注释掉一些ksp依赖项(iOS依赖项),因此您要构建的唯一依赖项是

(请记住同步项目并清理它)。

我个人会尝试实现第三种解决方案,我不知道这是否容易,但它似乎是最好的解决方案,其他解决方案也应该有效,但请考虑它们是一个肮脏的走动.

我可以提供更多的信息或某种形式的POC以后,只是让我知道在评论或其他地方是否需要它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73863650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档