Подключение сторонней библиотеки в проект Android Studio

compl

Какие шаги нужно выполнить, чтобы добавить чужой проект (библиотеку) к своему в Android Studio? Нужно, чтобы я мог обратиться из своего проекта к классам из чужого проекта. В build.gradle я уже прописал.

2 ответа

compl

Во-первых, если библиотека достаточно выского качества, то автор библиотеки, как правило, дает инструкции о том, как ее подключить в свой проект - им надо следовать в первую очередь.

Сама Android Studio позволяет подключить три типа библиотек в свой проект:

  • из репозитория Maven

  • библиотеку в виде собранного .jar файла

  • библиотеку в виде исходных кодов

Для выполнения этой работы в Android Studio есть графический интерфейс, но олдскульные кодеры могут проделать ту же работу, прописывая необходимые команды в конфиги gradle вручную. Открываем окно структуры проекта (File -> Project Structure) и переходим к основному модулю проекта - слева секция Modules, кликнуть по названию модуля вашего приложения (на скриншоте это app). В открывшемся окне переходим к вкладке Dependencies. Здесь вы можете управлять подключенными зависимостями: добавить новые, удалить ненужные и перемещать их по иерархии.

Для того, чтобы добавить зависимость, нажимаем на плюсик справа и видим три пункта - рассмотрим их подробнее:

  1. Library dependency — добавление библиотеки из внешнего репозитория

Этот пункт требует, как правило, наименьшего количества усилий. Обычно, по умолчанию, в конфиге gradle всего проекта в качестве внешнего репозитория используется JCenter и все уважающие себя разработчики складывают свои труды туда, но вы можете прописать в том конфиге и другие репозитории с библиотеками, если таковые вам требуются. При выборе пункта 1 появляется окно поиска, в котором вы можете набрать имя требуемой библиотеки и, если она присутствует в репозитории - вы ее увидите. Нажатие кнопки OK проделает всю черную работу по подключению библиотеки и после того, как gradle проведет необходимые манипуляции по скачиванию и импорту, она будет доступна в вашем проекте.

Если вы не доверяете инструментам Android Studio и желаете самостоятельно вручную добавить библиотеку из репозитория, вам необходимо прописать в секции dependencies{} конфига build.gradle вашего приложения ссылку на нужную библиотеку:

dependencies {
    compile 'com.mikepenz:materialdrawer:2.9.8'
 }

При внесении каких-либо изменений в конфиги gradle вверху появляется предупреждение о необходимости синхронизировать проект - когда все изменения будут сделаны, нажмите на ссылку Sync Now вверху справа, чтобы gradle применил ваши изменения.

  1. File dependency — добавление библиотеки из локального скомпилированного .jar файла

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

Для того, чтобы вручную сделать то же самое — добавить библиотеку на основе .jar файла, в секции dependencies{} конфига build.gradle приложения необходимо прописать следующее:

dependencies {
    compile files('libs/realm.jar')
}

Для того, чтобы подключить все библиотеки из папки /libs/ разом, нужно сделать так:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
}
  1. Module dependency — добавление библиотеки из исходных кодов

Перед импортом библиотеки из исходных кодов необходимо скачать сами исходные коды и распаковать в какой-то каталог. Для наименьших проблем:

  • исходные коды должны быть gradle-проектом Android Studio/IntelliJ IDEA

  • имена основного модуля и модуля подключаемой библиотеки не должны совпадать.

  • подключаемый исходник является библиотекой, а не приложением (в build.gradle того, что вы подключаете указано apply plugin: 'com.android.library') — это можно исправить самостоятельно в конфиге gradle того, что вы подключаете.

  • минимальные версии SDK вашего проекта и библиотеки должны совпадать — можно исправить самостоятельно в конфигах gradle проекта или библиотеки.

  • версии BuildTools проекта и библиотеки должны совпадать (рекомендуется), либо обе версии должны быть установлены в вашем SDK (не рекомендуется). Лучшее решение — всегда использовать самую последнюю версию BuildTools

Для начала импортируем нужную библиотеку в свой проект в качестве модуля. Нажимаем File -> New -> Import Module, указываем путь до корневой папки с разархивированными исходниками и следуем другим указаниям мастера импорта.

После чего, выбрав пункт 3 (смотрите первый скриншот) появляется окно выбора модуля, кликнув по нужному и нажав кнопку OK будет проведена работа по импорту в ваш проект, после чего библиотека будет доступна в вашем проекте.

Добавление библиотеки на основе исходников вручную — несколько муторное занятие и описывать я его не буду. Ценители ручного способа конфигурации проекта получат удовольствие, проделав "таинство" самостоятельно, а остальным вовсе без надобности.


compl

https://github.com/mikepenz/MaterialDrawer#minimal-setup

It's (theoretically) a one-liner :D. This will create an empty drawer.

new Drawer().withActivity(this).build()

Activity with Toolbar

Drawer.Result result = new Drawer()
    .withActivity(this)
    .withToolbar(toolbar)
    .addDrawerItems(
        new PrimaryDrawerItem().withName(R.string.drawer_item_home),
        new DividerDrawerItem(),
        new SecondaryDrawerItem().withName(R.string.drawer_item_settings)
    )
    .withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
    @Override
    public void onItemClick(AdapterView<!--?--> parent, View view, int position, long id, IDrawerItem drawerItem) {
        // do something with the clicked item :D
    }
    })
    .build();

//use the result object to get different views of the drawer or modify it's data
//some sample calls
result.setSelectionByIdentifier(1);
result.openDrawer();
result.closeDrawer();
result.isDrawerOpen();
result.addItem(..);
..

Ну там же все написано...

licensed under cc by-sa 3.0 with attribution.