2

Mit Android Studio habe ich ein Android-Modul und ein Java-Modul. Im Java-Modul möchte ich AutoValue verwenden, um unveränderliche Klassen zu generieren.Android Studio Autovalue in Java-Modul und Verwendung in Android-Modul

Alles scheint gut zu funktionieren (Dateien werden im Java-Modul generiert), aber ich kann nicht auf diese Dateien im Android-Projekt zugreifen. Irgendwelche Vorschläge?

app \ build.gradle

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

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' 
} 

Domäne/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(); 
    } 
} 

Wenn ich das Domain-Modul (das Java-Modul) bauen, sehe ich, dass die ‚AutoValue_MyLocation‘ Datei hier erzeugt:

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

Aber ich bin nicht in der Lage, die erzeugte Klasse überall in meinem Android-Modul zu verwenden.

Antwort

1

Nevermind, indem ich auf die generierte Klasse sah, sah ich, dass es nicht öffentlich war, daher konnte ich nicht darauf in meinem Android Modul zugreifen.

es zu beheben, einfach die @AutoValue Klasse öffentlich machen, wie so

@AutoValue 
public abstract class MyLocation { 
    // 
}