【问题标题】:weird can not find symbo '@IntDef' but AndroidStudio shows no error奇怪的找不到符号'@IntDef',但 Android Studio 没有显示错误
【发布时间】:2020-03-13 11:16:19
【问题描述】:

my Android Studio screenshot

Android Studio 构建失败并显示消息:找不到符号'@IntDef',但在 IDE 中显示的 java 代码没有显示错误,如您在链接中看到的,该类已成功导入,我可以在Android Studio 项目视图中的“外部库”,我在使用 gralew xxx --debug --stacktrace 运行时也在构建路径中找到它。

我正在将 google 的 chromium 项目迁移到 Android Studio 项目中,提交 ID 是 'b4a3bf71d7762468ad6ecf2e1461ff2135473063'。将 support.v4.* 与 androidx.annotation 和 androidx.browser 混合的代码,我用 'android.useAndroidX=true' 和 'android.enableJetifier=false' 修改了 gradle.properties,以便 Android Studio 显示两个包都已成功导入,但构建失败并出现“找不到符号”错误。

另外,我写了一个简单的演示来证明混合使用是可以的,但我对此表示怀疑。我还删除了源目录中所有可能的非 java 文件,包括 python-script、OWNERS、DEPS、一些aidl 文件,但仍然得到相同的错误。我不知道为什么会出现构建错误。

也许build.gradle文件会导致这个错误?

rootProject.ext.clsDefineChromiumFlavors(project)

sourceSets {
    main.java.srcDirs += 'src/deps/java'

    main.res.srcDirs += 'src/main/res_chromium'
    main.res.srcDirs += 'src/main/res_template'
    main.res.srcDirs += 'src/main/res_vr'

    abi_arm32 {
        java.srcDirs += 'flavor_src/abi_arm32/annotation_processor_output/java'
        java.srcDirs += 'flavor_src/abi_arm32/input_srcjars/java'
        java.srcDirs += 'flavor_src/abi_arm32/others/java'

        res.srcDirs += 'flavor_res/abi_arm32/chrome/res'
        res.srcDirs += 'flavor_res/abi_arm32/chrome/app/policy/res'
        res.srcDirs += 'flavor_res/abi_arm32/components/strings/res'
    }
    abi_arm64 {

    }
}

闭包定义在这里:

// closure: define chromium flavors
ext.clsDefineChromiumFlavors = { curProject ->
    if (curProject == null) {
        return
    }
    curProject.android.flavorDimensions 'default'
    curProject.android.productFlavors {
        abi_arm32 {}
        abi_arm64 {}
        all { flavor ->
            curProject.android.sourceSets[flavor.name].setRoot("flavor_src/${flavor.name}")
        }
    }
}

【问题讨论】:

    标签: java android annotations chromium androidx


    【解决方案1】:

    SuppressLint 是在 API 级别 16 中添加的,因此您需要升级到 API 级别 16。

    另一种解决方案是将appcompat-v7 添加到您的项目 build.gradle。

    另外,请确保包含以下内容:

    implementation "androidx.annotation:annotation:1.1.0"
    

    【讨论】:

    • 我的 android 构建工具版本 3.6.1,目标 sdk 版本 28,最小为 19,androidx 注释已使用 1.1.0...
    • @QUANZhao 你找到解决办法了吗?我也面临同样的问题。
    猜你喜欢
    • 2019-11-01
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 2016-10-29
    相关资源
    最近更新 更多