Разработка плагина Cordova - добавление aar
Я новичок в разработке плагинов cordova.
Я хочу написать плагин, который может открыть новую активность Android и показать рекламу.
Итак, я проделал простой учебник здесь. Это работает очень хорошо и, как ожидалось.
Следующий шаг - включить этот проект Android Studio Gradle в мой плагин.
Моя первая попытка: добавление проекта Gradle в подпапку моего плагина cordova и добавление следующей строки в файл plugin.xml:
<framework src="libs/Broper/build.gradle" custom="true" type="gradleReference" />
также я пробовал:
<framework src="libs/Broper/app/build.gradle" custom="true" type="gradleReference" />
Файлы graddle распознаются кордовой. Но что-то не работает. Поэтому я не могу импортировать классы этого проекта студии Android в мои java файлы плагина.
Тогда лучшим решением (я так думал) является добавление AAR. Но там я даже не знаю, что делать, чтобы добавить этот AAR в мой плагин cordova.
Итак, вопрос в том, как правильно добавить андроид (или библиотеку) Android для моего плагина cordova?
Ответы
Ответ 1
Вот что я сделал, чтобы использовать ссылку gradle с плагином Cordova, я думаю, это может вам помочь.
Глобальная структура:
pluginFolder/
build-extras.gradle
plugin.xml
yourDirContainingYourAAR/
src/
android/
yourFile.gradle
myPlugin.java
Поместите свою библиотеку, скажем foo.aar
, в каталог yourDirContainingYourAAR
(при необходимости создайте ее)
-
В файле plugin.xml
:
<platform name="android">
<!-- your configuration elements, references, source files, etc... -->
<framework src="src/android/yourFile.gradle" custom="true" type="gradleReference" />
<resource-file src="yourDirContainingYourAAR/foo.aar" target="libs/foo.aar" />
</platform>
-
В файле gradle yourFile.gradle
:
repositories{
jcenter()
flatDir {
dirs 'libs'
}
}
dependencies {
compile(name:'foo', ext:'aar')
}
android {
packagingOptions {
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
}
}
-
В корневой папке вашего плагина (тот же уровень, что и plugin.xml
) создайте build-extras.gradle
.
При необходимости добавьте или удалите minSdkVersion
и targetSdkVersion
в соответствии с вашими проектами:
android {
defaultConfig {
minSdkVersion 16
targetSdkVersion 22
}
packagingOptions {
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
}
}
Ответ 2
Должна быть небольшая модификация ответа Нико
Когда gradle запускает компиляцию, используя ответ Niko, он ищет библиотеки lib в app/libs
которых нет в проекте (это происходит в стандартном проекте Android Studio, но в структуре проекта Android Cordova папка libs отличается). Однако плагин копирует библиотеку aar в app/src/main/libs
что позволяет нам думать, что она копирует aar в app/libs
<resource-file src="yourDirContainingYourAAR/foo.aar" target="libs/foo.aar"/>
Следовательно, файл Gradle должен быть
repositories{
jcenter()
flatDir {
dirs 'src/main/libs'
}
}
dependencies {
compile(name:'foo', ext:'aar')
}
android {
packagingOptions {
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
}
}
Это даст вам успешную компиляцию приложения
Ура !!
Ответ 3
После создания проекта Cordova добавляется платформа, добавляется плагин.
Допустим, файл aar скопирован в папку libs. (предположим, что имя файла - cards.aar)
Затем в приложении build.gradle укажите следующее и нажмите синхронизировать проект с файлами Gradle.
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compile(name:'cards', ext:'aar')
}
Меня устраивает!! но есть один недостаток этого решения: вам нужно открыть проект из папки платформы на Android Studio и добавить вышеупомянутые строки в ваш build.gradle