2015-03-20 2 views
4

Я хотел бы создать закрытую исходную андроидную библиотеку с помощью Gradle. Моя библиотека имеет некоторые зависимости от проектов с открытым исходным кодом. Как я должен структурировать свою библиотеку? Могу ли я использовать град?Создайте закрытую базу Android-изображений, основанную на Gradle

+0

Если вам удастся решить эту проблему, – 2cupsOfTech

ответ

4

Могу ли я использовать град?

Короткий ответ:

Да.

Длинный ответ:

Я бы предположил, что библиотека поставляется в виде aar (содержит ресурсы и скомпилированный байт-код).

Первое, что вам нужно знать, это то, что на момент написания этого сообщения невозможно создать библиотеки fat-aar, а это значит, что вам придется распределять зависимости вашей библиотеки по отдельности. Самый удобный способ сделать это, на мой взгляд, состоит в том, чтобы сгенерировать файл pom.xml и опубликовать вашу библиотеку в репозитории Maven (плагин maven может сделать все это), поэтому клиенты будут просто извлекать все зависимости самостоятельно. Поскольку это «частная» библиотека, это может быть закрытое репо вашей компании по правам доступа (простыми словами - создать специального пользователя для вашего репо и поделиться паролем с заинтересованными сторонами).

Одна из недостатков заключается в том, что все зависимости будут выставлены в pom.xml, и вы не сможете их запутать. Лично я не думаю, что это проблема.

Кроме того, вы получаете огромное преимущество от возможности автоматического развертывания сборки и предоставления клиентам возможности использовать копии снимков библиотеки. Это очень полезно, когда вы пытаетесь устранить проблемы и хотите быстро доставить их пользователям. На стороне клиента все, что им нужно сделать, это либо просто обновить версию в своем build.gradle, либо просто повторно синхронизировать проект, если они использовали моментальный снимок.

Второе. Поскольку ваша библиотека закрыта, вам нужно запустить proguard, чтобы обфускать все, кроме публичного интерфейса вашей библиотеки (все общедоступные методы, которые доступны для конечного пользователя).

Помните, что даже после обфускации ваш код все еще можно декомпилировать, и все строковые литералы все еще существуют. Итак, хотя уже было сказано миллионы раз, не храните в библиотеке какие-либо критические данные (например, пароли, ключи и т. Д.). Это не так сложно извлечь, как вы можете подумать: https://www.youtube.com/watch?v=X28Oogg2Q3k

Третье. Я настоятельно рекомендую вам создать внутренний тестовый проект (как подмодуль градиента), который будет использовать вашу библиотеку, поэтому вы будете уверены, что не совершаете никаких изменений.

Надеюсь, этот ответ заставил вас по крайней мере немного легче.

Смежные вопросы