Мне удалось создать исходный код библиотеки для скомпилированного .jar
файла, используя подход из этого решения:
https://stackoverflow.com/a/19037807/1002054
Вот что я сделал:
1. Репозиторий библиотеки Checkout
Возможно, это была библиотека Volley.
2. Импортировать библиотеку в Android Studio.
Я использовал Android Studio 0.3.7. На этом этапе я столкнулся с некоторыми проблемами, а именно, мне пришлось скопировать gradle
папку из нового проекта Android, прежде чем я смог импортировать исходный код библиотеки Volley, это может варьироваться в зависимости от исходного кода, который вы используете.
3. Измените свой build.gradle
файл.
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. Запустите gradlew makeJar
команду из корня вашего проекта.
Я в моем случае я должен был копировать gradlew.bat
и gradle
файлы из нового андроида проекта в моей библиотеке корня проекта. Вы должны найти файл скомпилированной библиотеки myCompiledLibrary.jar
в build\libs
каталоге.
Надеюсь, кому-то это пригодится.
Редактировать:
Предостережение
Хотя это работает, вы столкнетесь с исключением дублирующейся библиотеки при компиляции проекта с несколькими модулями, когда более одного модуля (включая модуль приложения) зависит от одного и того же jar
файла (например, модули имеют собственный каталог библиотеки, на который есть ссылка в build.gradle
данном модуле) .
В случае, если вам нужно использовать одну библиотеку более чем в одном модуле, я бы рекомендовал использовать этот подход:
сборка Android gradle и библиотека поддержки.