Ho studiato un po 'e probabilmente ha visto le risposte più popolari qui legati alla AAR e dipendenze transitive ma in qualche modo non è ancora chiaro per me come fare questo lavoro.transitiva non dipendenze risolto per la libreria AAR utilizzando Gradle
Quindi:
devo biblioteca androide con data config Gradle:
apply plugin: 'android-library'
apply plugin: 'android-maven'
version = "1.0.0"
group = "com.somepackage"
buildscript {
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
classpath 'com.github.dcendents:android-maven-plugin:1.0'
}
}
android {
compileSdkVersion 19
buildToolsVersion '19.0.3'
defaultConfig {
minSdkVersion 10
}
}
repositories {
maven { url 'http://www.bugsense.com/gradle/' }
}
dependencies {
provided 'com.google.android.gms:play-services:+'
provided 'com.android.support:appcompat-v7:+'
compile 'com.google.code.gson:gson:2.2.4'
compile 'com.bugsense.trace:bugsense:3.6'
compile 'commons-net:commons-net:3.3'
}
allora sono distribuirlo ai pronti contro termine Maven locale con gradle install
. file di POM della biblioteca schierato assomiglia a questo:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sprezzat</groupId>
<artifactId>app</artifactId>
<version>1.0.0</version>
<packaging>aar</packaging>
<dependencies>
<dependency>
<groupId>com.bugsense.trace</groupId>
<artifactId>bugsense</artifactId>
<version>3.6</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
E infine config Gradle della mia applicazione Android utilizzando sopra biblioteca come una dipendenza:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
mavenLocal()
}
android {
compileSdkVersion 15
buildToolsVersion "19.0.2"
defaultConfig {
minSdkVersion 10
targetSdkVersion 18
}
}
dependencies {
compile 'com.google.android.gms:play-services:+'
compile 'com.android.support:appcompat-v7:+'
compile 'com.somepackage:LIBRARY_NAME:[email protected]'
}
E dopo la distribuzione di applicazioni sul telefono sto ottenendo NoClassDefFoundError
per classi che appartengono alle dipendenze di compilazione della mia libreria Android.
Ispezione mie dipendenze delle applicazioni Android utilizzando gradle dependencies
:
apk - Classpath packaged with the compiled main classes.
+--- com.google.android.gms:play-services:+ -> 4.3.23
| \--- com.android.support:support-v4:19.0.1 -> 19.1.0
+--- com.android.support:appcompat-v7:+ -> 19.1.0
| \--- com.android.support:support-v4:19.1.0
\--- com.somepackage:LIBRARY_NAME:1.0.0
Secondo albero sopra, non vengono rilevate tutte le dipendenze transitive. Dov'è il problema e come dovrebbe essere fatto correttamente?
avete esaminato l'uscita di correre ** 'DEPE Gradle ndencies' ** per la tua app? – CommonsWare
E sei proprio sicuro di volere la parola chiave 'provided' lì? Secondo Xav, [tali dipendenze non sono impacchettate nell'APK] (https://groups.google.com/d/msg/adt-dev/WIjtHjgoGwA/h1gS9J5xLUAJ), e penserei che vorreste che fossero impacchettate nell'APK. – CommonsWare
@CommonsWare 'gradle dependencies' per il mio android lib: default - Configurazione per gli artefatti predefiniti. + --- com.google.code.gson: gson: 2.2.4 + --- com.bugsense.trace: bugsense: 3.6 \ --- commons-net: commons-net: 3.3 – mkorszun