1

Ich habe ein Projekt, das einen Server und eine Android-App enthält, der Server ist Java basiert. Ich möchte ein Mega-Modul für gemeinsamen Java-Code erstellen, die von dem Server und der Android-App verwendet werden kann, ich habe das gemeinsame Modul als ein Java-Modul erstellt und es scheint, dass ich dieses Modul als Abhängigkeit vom Server und importieren kann die Android App. Mein Problem ist, dass, obwohl Gradle Build erfolgreich ist, Intellij nicht die Abhängigkeiten von dem Java-Modul in der Android-App finden kann. Gibt es einen Weg zu tun, was ich versuche oder vielleicht intellij es einfach nicht unterstützt?Wie kann ich ein gradle Java-Modul von Android-App importieren und von Java-Anwendung

Antwort

0

Wenn Sie die folgende Konfiguration besteht aus app, server und common Module:

project/ 
├── app/ 
│ ├── build.gradle 
│ └── src 
├── server/ 
│ ├── build.gradle 
│ └── src 
├── common/ 
│ ├── build.gradle 
│ └── src 
├── build.gradle 
└── settings.gradle 

settings.gradle enthält Moduleintrag:

include ':app',':server',':common' 

Wenn Sie mehr Unterverzeichnisse zwischen den Modulen wie haben:

project/ 
├── server/ 
│ ├── subfolder 
     ├── build.gradle 

Ihre settings.gradle würde wie folgt aussehen:

include ':app',':server',':common' 
project(':server').projectDir = new File('subfolder/server') 

Top-Level-build.gradle umfassen im Classpath com.android.tools.build:gradle:X.X.XX:

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.2.3' 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
     mavenCentral() 
    } 
} 

Ihre App build.gradle hat die com.android.application Plugin mit Abhängigkeiten für Ihre server und common Module. Dies ist app Moduls build.gradle:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.2" 
    defaultConfig { 
     applicationId "com.example.test" 
     minSdkVersion 15 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile project(':server') 
    compile project(':common') 
} 

server und common Module sind Java-Modul, das in Java-Projekt als auch im Android-Projekt verwendet werden kann (in intellij-Idee) mit der java Plugin. Dies ist server und common Moduls build.gradle:

apply plugin: 'java' 

dependencies { 
    //for server module common module dependency : 
    //compile project(':common') 
} 

task sourcesJar(type: Jar, dependsOn: classes) { 
    classifier = 'sources' 
    from sourceSets.main.allSource 
} 

compileJava { 
    sourceCompatibility = "1.7" 
    targetCompatibility = "1.7" 
    options.encoding = 'UTF-8' 
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" 
} 
+0

Dank, das ist, was ich tue, aber intellij hat ein Problem mit diesem Setup und finden nicht den Klassen von ‚gemeinsamen‘ – jacob

Verwandte Themen