2015-07-25 1 views
0

Я построил код, который использует библиотеку Gson. Я упаковываю свой код как банку, и он добавляется в другие приложения. Поскольку он использует Gson, я должен сказать клиентам добавить также банку Gson. Я хотел бы собрать мой код и банку Gson вместе и иметь возможность доставлять только одну простую банку, а не две.Создайте банку из 2 зависимых банок с градиентом

Я знаю, что у maven есть plugin, который делает именно то, что мне нужно.

Я хочу иметь возможность делать то же самое с помощью градиента (включая изменение имени Gson во избежание конфликтов).

ответ

2

Gradle имеет эквивалентный плагин: shadow plugin. Это должно быть то, что вы ищете.

1

Если вы разрабатываете студию Android, вы можете использовать библиотеку aar вместо jar для совместного использования вашего проекта в качестве библиотеки.

Комплект «aar» - это двоичное распределение проекта библиотеки Android.

Расширение файла .aar и тип Maven артефакт должен быть AAR, а также, но сам файл простой почтовый файл со следующими записями:

/AndroidManifest.xml (mandatory) 
/classes.jar (mandatory) 
/res/ (mandatory) 
/R.txt (mandatory) 
/assets/ (optional) 
/libs/*.jar (optional) 
/jni/<abi>/*.so (optional) 
/proguard.txt (optional) 
/lint.jar (optional) 
+0

Позвольте мне получить это прямо .. Если я сохраните файл Gson в папке libs и создайте файл aar - Gson будет включен внутри, и мне не придется использовать его jar для основного приложения (тот, который использует мой файл jar/aar)? Не совпадает ли это с другим gson, который может быть добавлен в приложение (я не знаю, используют ли его клиенты или нет)? – Zbun

+0

В вашей библиотеке, вместо того чтобы включать gson jar вручную, вы должны включить ее через maven repo. Когда вы это сделаете, банка не будет скомпилирована в ваш AAR, она просто отобразит зависимость в файле POM. Это либо устранит дублирование, либо приведет вас к правильному пути. Итак, если вы используете gson jar напрямую, замените свою директиву компиляции jar в зависимостях gradle с помощью: compile 'com.google.code.gson: gson: 2.3' – SubinM