KMM配置SqlDelight时是否需要使用自有项目包名?
问题解答
必须替换为你自己项目的包名,不要保留示例中的.handson.段,核心原因有3点:
- 保证项目命名空间统一:SQLDelight会根据你配置的packageName自动生成数据库实例、表操作、DAO等相关代码,用和你项目其他代码一致的包名,导入语句会更统一,后续维护查找代码也更方便,不会出现项目中同时存在多个不同前缀包名的混乱情况。
- 避免命名冲突:示例中的
com.jetbrains.handson前缀是JetBrains官方教程的专用命名空间,如果你后续同时开发多个KMM demo、或者依赖的第三方库也用了类似命名,很容易出现类重复引用、编译报错的问题,符合规范的唯一包名可以完全规避这类问题。 - 符合生态开发规范:JVM/Android/KMM生态默认要求包名使用个人/团队的域名反写作为唯一前缀,本身就是为了避免不同开发者的代码出现命名冲突,示例包名仅作演示使用,不适用于任何正式项目。
如果你只是临时跟着教程做练习Demo,不改包名也可以正常运行,但只要是你自己的正式开发项目,一定要做替换。比如你的项目公共模块包名为com.xxx.myproject.shared,就可以把配置改成:
sqldelight { database("AppDatabase") { packageName = "com.xxx.myproject.shared.cache" } }
内容的提问来源于stack exchange,提问作者barryalan2633
相关产品推荐
相关产品推荐

