Nano Hash - криптовалюты, майнинг, программирование

Повторное использование модулей в Android Studio

Всякий раз, когда я добавляю проект библиотеки Android в качестве модуля в свой проект Android Studio, источники копируются в папку проекта Android Studio.

Есть ли способ решить эту проблему, как в eclipse, где есть только одна копия проекта библиотеки, на которую могут ссылаться любые проекты?


  • Когда вы меняете модуль C в A, просто читайте модуль C в B. 14.11.2015

Ответы:


1

У вас есть разные способы добиться этого:

  1. используя локальный модуль, ссылающийся на правильный путь
  2. добавление файла aar
  3. используя репозиторий maven

СЛУЧАЙ 1:
Используя gradle и локальную библиотеку, внутри проекта вы можете ссылаться на внешний модуль.

Просто используйте:

Project
|__build.gradle
|__settings.gradle
|__app (application module)
   |__build.gradle

In settings.gradle:

include ':app' 
include ':myLib'
project(':myLib').projectDir=new   File('pathLibrary')

In app/build.gradle:

dependencies {
    compile project(':myLib')
}

Обратите внимание на myLib.
Вы должны использовать путь к библиотеке внутри другого проекта, не корень проекта.

СЛУЧАЙ 2.
Скомпилируйте библиотечный модуль, получите файл aar, а затем добавьте в основной проект:

Добавьте папку, в которую вы поместили файл aar, в качестве репозитория:

repositories {
    jcenter()
    flatDir {
        dirs 'libs'
    }
}

Затем добавьте зависимость:

dependencies {
    compile(name:'nameOfAarFile', ext:'aar')
}

СЛУЧАЙ 3: Другой способ — опубликовать ваш модуль в репозитории maven.

Таким образом, просто используйте:

dependencies {
    compile ('mypackage:mymodule:X.Y.Z')
}
14.11.2015
  • Я использую этот трюк для подмодулей, где библиотека находится в другом подкаталоге. Очень полезный трюк. 14.11.2015
  • Спасибо за совет, похоже, работает, но теперь он не распознает банки, включенные в проект библиотеки. Это дает мне не удалось решить: ошибка xyz.jar. 14.11.2015
  • Хорошо, исправил это с помощью flatDir { dirs project(':mopub-sdk').file('libs') } , спасибо, ребята! 14.11.2015
  • Случай 1 работал как подпруга, чтобы повторно использовать мой библиотечный модуль, сохраняя при этом его исходное репо. 29.06.2017

  • 2

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

    Чтобы создать этот Android-архив, вам нужно собрать проект как релизную сборку с помощью этой команды:

    gradlew aR
    

    После этого у вас есть файл с именем <modulename>-release.aar, этот файл находится в папке <projectroot>/<modulename>/build/outputs/aar. Я переименовываю эти файлы в <modulename>.aar, после чего вы можете поместить их в каталог lib вашего модуля.

    Когда вы закончите, вы можете ссылаться на него из модуля, где вам это нужно, вот так:

    compile(name:'<modulename>', ext:'aar')
    

    Это также ускоряет время сборки, поскольку вам больше не нужно компилировать проект.

    14.11.2015
    Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..