2

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

所有似乎工作正常(在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

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

为了解决这个问题,简单使@AutoValue类公众,像这样

@AutoValue 
public abstract class MyLocation { 
    // 
}