Подтвердить что ты не робот

Разработка плагина 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?

4b9b3361

Ответ 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