Udało mi się zbudować kod źródłowy biblioteki do skompilowanego .jar
pliku, używając podejścia z tego rozwiązania:
https://stackoverflow.com/a/19037807/1002054
Oto podział tego, co zrobiłem:
1. Pobierz repozytorium bibliotek
W przypadku gdyby była to biblioteka Volley
2. Importuj bibliotekę w Android Studio.
Użyłem Android Studio 0.3.7. Na tym etapie napotkałem pewne problemy, a mianowicie musiałem kopiowaćgradle
folder z nowego projektu Androida, zanim mogłem zaimportować kod źródłowy biblioteki Volley, może się to różnić w zależności od używanego kodu źródłowego.
3. Zmodyfikuj build.gradle
plik
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.3'
}
}
apply plugin: 'android-library'
android {
compileSdkVersion 17
buildToolsVersion = 17
sourceSets {
main {
java {
srcDir 'src'
}
}
}
}
task clearJar(type: Delete) {
delete 'build/libs/myCompiledLibrary.jar'
}
task makeJar(type: Copy) {
from('build/bundles/release/')
into('build/libs/')
include('classes.jar')
rename ('classes.jar', 'myCompiledLibrary.jar')
}
makeJar.dependsOn(clearJar, build)
4. Uruchom gradlew makeJar
polecenie z katalogu głównego projektu.
W moim przypadku musiałem skopiować gradlew.bat
i gradle
pliki z nowego projektu Androida do katalogu głównego projektu biblioteki. Powinieneś znaleźć skompilowany plik biblioteki myCompiledLibrary.jar
w build\libs
katalogu.
Mam nadzieję, że ktoś uzna to za przydatne.
Edytować:
Caveat
Chociaż to działa, napotkasz zduplikowany wyjątek biblioteczny podczas kompilowania projektu z wieloma modułami, gdzie więcej niż jeden moduł (w tym moduł aplikacji) zależy od tego samego jar
pliku (np. Moduły mają własny katalog biblioteki, do którego odwołuje się build.gradle
dany moduł) .
W przypadku, gdy potrzebujesz użyć jednej biblioteki w więcej niż jednym module, polecam skorzystanie z tego podejścia:
Android Gradle build i biblioteka wsparcia