Несколько постов назад я говорил о том, как использовать 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 LibraryPOM_ARTIFACT_ID=weatherlibPOM_PACKAGING=aar |
и
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
VERSION_NAME=1.3.1VERSION_CODE=6GROUP=com.survivingwithandroidPOM_DESCRIPTION=Android Weather LibPOM_URL=https://github.com/survivingwithandroid/WeatherLibPOM_SCM_URL=https://github.com/survivingwithandroid/WeatherLibPOM_SCM_CONNECTION=scm:git@github.com:survivingwithandroid/weatherlib.gitPOM_SCM_DEV_CONNECTION=scm:git@github.com:survivingwithandroid/weatherlib.gitPOM_LICENCE_NAME=The Apache Software License, Version 2.0POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txtPOM_LICENCE_DIST=repoPOM_DEVELOPER_ID=survivingwithandroidPOM_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 . |