代码之家  ›  专栏  ›  技术社区  ›  dzboot02

带数据绑定的Gradle插件3.2.0,无法解析包名

  •  3
  • dzboot02  · 技术社区  · 7 年前

    在将androidstudio从3.1.2更新到3.2.0,并将gradle插件更新到3.2.0之后,我遇到了一个问题,生成的数据绑定类抱怨包名不存在,但它确实存在。包属于项目中的模块。

    错误:找不到符号类帮助程序

    错误:包帮助程序不存在

    build.gradle 文件:

    buildscript {
    
        repositories {
            google()
            jcenter()
            mavenCentral()
            maven {
                url 'https://maven.fabric.io/public'
            }
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.2.0'
            classpath "com.google.gms:google-services:4.0.1"
            classpath 'io.fabric.tools:gradle:1.25.4'
    
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    
    allprojects {
        repositories {
            google()
            jcenter()
            maven {
                url 'https://jitpack.io'
            }
        }
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    

    这就是 对于有问题的模块:

    apply plugin: 'com.android.library'
    
    android {
        compileSdkVersion 28
        buildToolsVersion "28.0.3"
    
        defaultConfig {
            minSdkVersion 17
            targetSdkVersion 28
        }
    }
    
    dependencies {
        implementation 'com.android.support:recyclerview-v7:28.0.0'
        implementation 'com.android.support:appcompat-v7:28.0.0'
    }
    

    我试过各种方法:

    • 清理和重建项目
    • 使缓存失效并重新启动
    • 将Gradle更新为最新版本
    • 更改模块名和其中使用的包名

    enter image description here

    3 回复  |  直到 5 年前
        1
  •  5
  •   WasabiTea    7 年前

    问题是包名本身。你提到:

    简短回答:

    更改以小写字母开头的包名。出现此问题是因为您的包名 Helper . 把它改成 helper .

    长话短说:

    我猜databindingv2编译器将任何以大写字母开头的组件视为类,而不是包。它实际上是在寻找一个名为 ,而不是包 帮手 .

    我重命名了项目中所有的包(文件夹)名称,以小写字母开头,项目最终被编译。确保使用重构工具 (Shift + F6)

    奖金:

    如果你想让包名以大写字母开头,同时也想使用Android Plugin 3.2.0(这并不推荐),请转到根文件夹中的gradle.properties并添加这一行。这将禁用databindingV2编译器,并强制项目使用旧的V1编译器。所以你的类名无关紧要。

    但为什么有人要这么做/

        2
  •  1
  •   Vít Kapitola    7 年前

    我在用海图图书馆( https://github.com/highcharts/highcharts-android

    此版本可能包含错误,因此请继续使用版本3.1.3。

    版本3.2.0中的数据绑定文件:

    import error in gradle 3.2.0

    版本3.1.3中的数据绑定文件:

    import OK in gradle 3.1.3

        3
  •  0
  •   ʍѳђઽ૯ท    7 年前

    在你的代码里,它实际上 EmojiIconEdittext 来自的助手类 supernova library 但在你的依赖中, 没有添加这样的依赖关系。

    所以,把这个加到你的 Build.gradle 依赖项:

    implementation 'com.github.hani-momanii:SuperNova-Emoji:1.1'
    

    如果你不想用的话 )然后它就可以正常工作了。

    附笔

    import supernova.emoji.helper