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 { 
    // 
}