【问题标题】:Android Studio Autovalue in java module and using in Android modulejava模块中的Android Studio Autovalue并在Android模块中使用
【发布时间】:2016-07-13 08:51:58
【问题描述】:

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

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

app\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 模块中的任何地方使用生成的类。

【问题讨论】:

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


    【解决方案1】:

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

    要修复它,只需将 @AutoValue 类公开,就像这样

    @AutoValue
    public abstract class MyLocation {
        //
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多