Статьи

Создать JAR-библиотеку с Gradle, используя информацию AAR

Несколько постов назад я говорил о том, как использовать gradle для передачи aar в maven central . Если вы помните, нам пришлось изменить некоторые файлы и так далее, но работа, которую мы должны сделать, помогает другим разработчикам упростить их разработку, когда они хотят использовать наш код / ​​библиотеку. Когда наш код помещается в maven central как aar, мы можем повторно использовать его как libray, просто устанавливая зависимость gradle .

Например, если мы хотим использовать Weatherlib, мы должны написать:

1
2
3
4
5
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.+'
    compile 'com.survivingwithandroid:weatherlib:1.3.1'
}

Очень простой!

В любом случае, это правда, если мы используем Android Studio, но что если мы используем Eclipse или что-то еще? В некоторых случаях проще иметь классический jar-файл, который можно импортировать в наш проект Eclipse, и добавить в него jar-зависимость в нашем проекте.

Если мы используем Android Studio, этот jar создать нелегко (AFAIK), и мне пришлось немного изменить build.gradle чтобы создать jar. Я посмотрел в сети и нашел решение, которое я заново адаптировал, чтобы мы могли повторно использовать информацию, хранящуюся в файле свойств. Если вы помните из поста об aar и gradle (если не смотрите здесь ), есть два файла свойств, которые я покажу для простоты:

1
2
3
POM_NAME=Android Weather Library
POM_ARTIFACT_ID=weatherlib
POM_PACKAGING=aar

и

01
02
03
04
05
06
07
08
09
10
11
12
13
14
VERSION_NAME=1.3.1
VERSION_CODE=6
GROUP=com.survivingwithandroid
 
POM_DESCRIPTION=Android Weather Lib
POM_URL=https://github.com/survivingwithandroid/WeatherLib
POM_SCM_URL=https://github.com/survivingwithandroid/WeatherLib
POM_SCM_CONNECTION=scm:git@github.com:survivingwithandroid/weatherlib.git
POM_SCM_DEV_CONNECTION=scm:git@github.com:survivingwithandroid/weatherlib.git
POM_LICENCE_NAME=The Apache Software License, Version 2.0
POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
POM_LICENCE_DIST=repo
POM_DEVELOPER_ID=survivingwithandroid
POM_DEVELOPER_NAME=Francesco Azzola

Поэтому я хотел бы использовать эту информацию для создания банки с именем, равным POM_ARTIFACT_ID в сочетании с VERSION_NAME, и этот файл должен быть создан в определенном каталоге. Поэтому мы должны добавить в раздел Android в build.gradle :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
android {
    ...
 
    sourceSets {
        main {
            java {
                srcDir 'src/main/java'
            }
            resources {
                srcDir 'src/../lib'
            }
        }
    }
    ..
}

и после раздела зависимостей:

01
02
03
04
05
06
07
08
09
10
11
12
task clearJar(type: Delete) {
    delete 'build/libs/' + POM_ARTIFACT_ID + '_' + VERSION_NAME + '.jar'
}
 
task makeJar(type: Copy) {
    from('build/bundles/release/')
    into('release/')
    include('classes.jar')
    rename ('classes.jar', POM_ARTIFACT_ID + '_' +  VERSION_NAME + '.jar')
}
 
makeJar.dependsOn(clearJar, build)

Теперь, если вы запустите задачу makeJar , AS создаст jar в каталоге с именем release.

  • Если вы хотите иметь файл build.gradle, вы можете получить его здесь .
Ссылка: Создайте jar-библиотеку с gradle, используя информацию AAR от нашего партнера JCG Франческо Аццолы в блоге Surviving с Android .