Hey, ich hoffe das Unterforum ist richtig für meine Frage.
Ich bin im Rahmen eines Projektes dabei meine erste Android App zu schreiben. Dabei ist ein Aspekt die Kommunikation mit einer Rest Schnittstelle.
Für die Kommunikation habe ich Swagger-Codegen benutzt um mir fertige Java-Klassen generieren zu lassen. Für die eigentliche App wird mit LibGDX gearbeitet.
Jetzt habe ich meine generierten Kommunikationsklassen und möchte die gerne inklusiv aller Dependencies als Jar exportieren, sodass ich sie in dem richtigen "Spiel" als Library einbinden kann und dann nutzen kann.
Hab schon diverse Sachen versucht mit Gradle Scrips mit "fatJar" etc. allerdings führte nichts davon zum Ziel bzw. bricht vorher mit einer Fehlermeldung ab.
Mein Gradle build-file sieht so aus, falls das relevant ist:
group = 'io.swagger'
project.version = '1.0.0'
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
}
}
allprojects {
repositories {
jcenter()
}
}
apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
android {
compileSdkVersion 22
buildToolsVersion '22.0.0'
defaultConfig {
minSdkVersion 14
targetSdkVersion 22
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
// Rename the aar correctly
libraryVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.aar')) {
def fileName = "${project.name}-${variant.baseName}-${version}.aar"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
ext {
swagger_annotations_version = "1.5.0"
gson_version = "2.3.1"
httpclient_version = "4.3.3"
junit_version = "4.8.1"
}
dependencies {
compile "io.swagger:swagger-annotations:$swagger_annotations_version"
compile "com.google.code.gson:gson:$gson_version"
compile "org.apache.httpcomponents:httpcore:$httpclient_version"
compile "org.apache.httpcomponents:httpclient:$httpclient_version"
compile ("org.apache.httpcomponents:httpcore:$httpclient_version") {
exclude(group: 'org.apache.httpcomponents', module: 'httpclient')
}
compile ("org.apache.httpcomponents:httpmime:$httpclient_version") {
exclude(group: 'org.apache.httpcomponents', module: 'httpclient')
}
testCompile "junit:junit:$junit_version"
}
afterEvaluate {
android.libraryVariants.all { variant ->
def task = project.tasks.create "jar${variant.name.capitalize()}", Jar
task.description = "Create jar artifact for ${variant.name}"
task.dependsOn variant.javaCompile
task.from variant.javaCompile.destinationDir
task.destinationDir = project.file("${project.buildDir}/outputs/jar")
task.archiveName = "${project.name}-${variant.baseName}-${version}.jar"
artifacts.add('archives', task);
}
}
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
artifacts {
archives sourcesJar
}
Trotz der Excludes bei den apache.httpcomponents kriege ich übrigens immer die Warning:
ZitatWarning:Dependency org.apache.httpcomponents:httpclient:4.3.3 is ignored for release as it may be conflicting with the internal version provided by Android.
Die gleiche Fehlermeldung 6x (für Release, Debug und DebugAndroidTest).
Als ich die Klassen testen wollte und eine 'normale' Java Main Klasse geschrieben habe flog leider jedes Mal eine Exception. Habe dann zufällig diesen Thread hier gesehen;
http://stackoverflow.com/quest…oid-with-fitnesse-testing
Scheint also so, als könnte ich die Klassen nur direkt auf dem Handy bzw auf einem Emulator testen, weil sie in der android.jar nicht ausimplementiert sind.
Deswegen also die ursprüngliche Frage, wie man das ganze Projekt mit allen Dependencies exportiert. Dann könnte ich die Jar als Library in meinem LibGDX Projekt einbinden und vernünftig nutzen.
Hoffe mir kann da jemand helfen.
Grüße