Android模块中的Android Studio Autovalue和在Android模块中使用

时间:2016-07-13 08:51:58

标签: android gradle android-gradle android-studio-2.1 auto-value

使用Android Studio我有一个Android模块和一个Java模块。 在Java模块中,我想使用AutoValue生成不可变类。

似乎一切正常(文件在Java模块中生成)但我无法在Android项目中访问这些文件。有什么建议吗?

应用\的build.gradle

apply plugin: 'com.android.application'
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile project(':domain')
}

域\的build.gradle

plugins {
    id 'net.ltgt.apt' version '0.6'
}
apply plugin: 'java'
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.auto.value:auto-value:1.2'
    apt 'com.google.auto.value:auto-value:1.2'
}

域/ MyLocation.java

import com.google.auto.value.AutoValue;

@AutoValue
abstract class MyLocation {

    abstract String name();

    @AutoValue.Builder
    abstract static class Builder {
        abstract Builder name(String _name);
        abstract MyLocation build();
    }
}

当我构建域模块(java模块)时,我看到'AutoValue_MyLocation'文件是在这里生成的:

\domain\build\generated\source\apt\main\my\package\domain\AutoValue_MyLocation.java

但是,我无法在Android模块的任何位置使用生成的类。

1 个答案:

答案 0 :(得分:1)

没关系,通过查看生成的类我看到它不公开,因此我无法在我的Android模块中访问它。

要修复它,简单地将@AutoValue类设为public,就像这样

@AutoValue
public abstract class MyLocation {
    //
}