You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Flutter应用配置.in域名以避免Android资源链接错误?

解决Flutter项目因Kotlin关键字作为包名前缀导致的资源链接错误

嘿,这个问题我之前也碰到过——核心原因是你用了Kotlin的关键字in作为包名前缀,Flutter为了让Kotlin代码能正常编译,自动在.kt文件里给in加了反引号,但Android的包名规则根本不允许出现反引号,导致构建时生成的AndroidManifest.xml带了非法的包名格式,触发资源链接失败。

下面给你两个可行的解决方案:

方案1:重新创建项目(最省心推荐)

直接换一个不是Kotlin关键字的组织前缀,比如把in.fiesto改成infiesto或者io.fiesto,重新执行创建命令就行:

flutter create --org infiesto lafiesto

这个方法能彻底避开关键字冲突,后续不会再有类似的奇怪问题。

方案2:手动修复现有项目(保留原组织名)

如果一定要保留in作为前缀,可以按以下步骤调整:

  1. 修正主Manifest文件
    保持android/src/main/AndroidManifest.xml里的包名为合法格式,不要加反引号:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="in.fiesto.lafiesto">
    
  2. 保留Kotlin文件的反引号
    MainActivity.kt里的包名必须保留反引号,不然Kotlin编译器会报错,继续用这个格式:

    package `in`.fiesto.lafiesto
    import io.flutter.embedding.android.FlutterActivity
    class MainActivity: FlutterActivity() { }
    
  3. 修改app级build.gradle配置
    打开android/app/build.gradle,在android块里添加namespace属性,同时确保applicationId是合法的包名:

    android {
        namespace "in.fiesto.lafiesto"
        compileSdk 34 // 这里用你项目的对应版本就行
    
        defaultConfig {
            applicationId "in.fiesto.lafiesto"
            // 其他原有配置(minSdk、targetSdk等)保持不变
        }
        // 其他原有配置保持不变
    }
    
  4. 清理缓存并重新构建
    最后执行这几个命令清理缓存,重新构建项目:

    flutter clean
    flutter pub get
    flutter run
    

    这样配置后,Android构建系统会用合法的包名处理资源,而Kotlin代码也能正常识别关键字作为标识符。

为啥你之前的修改没用?

你之前把AndroidManifest.xml改成带反引号的包名是错的——Android完全不接受这种格式;而调整SDK版本和这个关键字冲突的问题根本无关,所以自然解决不了报错。

内容的提问来源于stack exchange,提问作者abhishek kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 20:02:41