Использование библиотек с открытым исходным кодом в проектах Android

Я новичок в программировании для Android, и я работаю с Android Studio... теперь я блуждаю, как лучше всего установить библиотеки с открытым исходным кодом из gitHub. мой вопрос с точки зрения принципов организации: должен ли я создать новый пакет для каждой библиотеки и поместить весь исходный код библиотеки как есть в этот пакет? должен ли пакет находиться в папке source.main.java?? (тот, который андроид-студия создает автоматически). извините за глупый вопрос... просто я делаю свои первые детские шаги в крупномасштабной программе, и я не хочу потерять голову в будущем из-за плохой организации.


person kundasaba    schedule 29.03.2015    source источник


Ответы (4)


На этот вопрос нет правильного ответа. Несколько неправильных способов сделать это, но здравый смысл поможет вам.

Мой совет:

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

Что касается того, как вы его потребляете, у вас есть несколько вариантов.

  1. Создайте открытый исходный код в своем собственном проекте (проверенном в системе управления версиями, но отдельно от вашего основного проекта). Затем просто возьмите скомпилированные файлы (.class, .jar, .lib и т. д.) и загрузите их в свой основной проект. Это наиболее гибкий вариант, если вы не думаете, что вам когда-либо понадобится так часто изменять открытый исходный код. Имеет побочное преимущество в управлении несколькими проектами.

  2. Поместите исходный код как есть прямо в ваш проект. Это означает, что вы всегда будете перестраивать код. Это дает максимальную гибкость при разработке и изменении кода, специфичного для нужд вашего проекта.

Вероятно, есть и гибридные решения этих вариантов.

Суть в том, что все, что вы используете, должно быть скопировано и встроено в вашу собственную систему. Потому что код, который вы вытащили из GitHub, может исчезнуть или существенно измениться в любое время.

person selbie    schedule 29.03.2015

Простым решением было бы использовать JitPack для импорта этих проектов GitHub в вашу сборку Gradle.

Сначала вам нужно добавить репозиторий:

repositories {
    maven { url "https://jitpack.io" }
}

а затем все репозитории GitHub в качестве зависимостей:

dependencies {
    compile 'com.github.RepoOwner:Repo:Version'
    // more dependencies...
}

За кулисами JitPack проверит код и скомпилирует его.

person Andrejs    schedule 02.05.2015

Я думаю, вы ищете это. Если вы используете eclipse, вы должны проверить это

Если вы хотите добавить файл jar в свою библиотеку, вы можете просто создать папку lib в своем проекте и добавить файл jar в библиотеку, и вы должны добавить строку compile files('jarfile.jar') в файл сборки (сборка gradle). Если вы используете eclipse, вы можете следовать этому

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

person Raghu Venmarathoor    schedule 29.03.2015

Если сторонний код упакован как .jar или .aar и доступен в общедоступном репозитории maven (например, maven Central), вам следует добавить библиотеку в качестве зависимости в файл build.gradle.

Если он недоступен в качестве зависимости maven/gradle, вы можете добавить код библиотеки в свой проект, как это предлагается в других ответах здесь. Мне это решение вообще никогда не нравилось.

Вы также можете создать .jar или .aar и добавить его в каталог lib вашего проекта, как это также предлагается в других ответах здесь. Для небольшого простого проекта с небольшим количеством зависимостей это может иметь смысл.

Что мне нравится делать для более крупных и долгоживущих проектов, так это настраивать свой собственный сервер Nexus (сервер репозитория Maven) и помещать туда сторонние зависимости.

person GreyBeardedGeek    schedule 29.03.2015
comment
Благодарность! у меня нет сервера Nexus, но я пока не стремлюсь к такому масштабу проектов... - person kundasaba; 29.03.2015