Je suis nouveau dans le développement de plugins cordova ..__ Je veux écrire un plugin capable d'ouvrir une nouvelle activité Android et d'afficher des publicités.
J'ai donc suivi un tutoriel simple ici . Cela fonctionne très bien et comme prévu.
La prochaine étape consiste à inclure ce projet Android Studio Gradle dans mon plugin.
Mon premier essai: Ajouter le projet Gradle à un sous-dossier de mon plugin Cordova et ajouter la ligne suivante au fichier plugin.xml:
<framework src="libs/Broper/build.gradle" custom="true" type="gradleReference" />
aussi j'ai essayé:
<framework src="libs/Broper/app/build.gradle" custom="true" type="gradleReference" />
Les fichiers graddle sont reconnus par cordova. Mais quelque chose ne fonctionne pas. Je ne peux donc pas importer les classes de ce projet de studio Android dans mes fichiers Java de plug-in.
Ensuite, une meilleure solution (je le pensais bien) consiste à ajouter un AAR à la place. Mais là, je ne sais même pas quoi faire pour ajouter cet AAR dans mon plugin cordova.
La question est donc de savoir comment ajouter correctement un objet Android (ou une bibliothèque) Android à mon plugin cordova.
Voici ce que j'ai fait pour utiliser une référence Gradle avec un plugin Cordova. Je pense que cela pourrait vous aider.
Structure globale:
pluginFolder/
build-extras.gradle
plugin.xml
yourDirContainingYourAAR/
src/
Android/
yourFile.gradle
myPlugin.Java
Placez votre bibliothèque, par exemple foo.aar
, dans le répertoire yourDirContainingYourAAR
(créez-la si nécessaire)
Dans le fichier 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>
Dans le fichier gradle yourFile.gradle
:
repositories{
jcenter()
flatDir {
dirs 'libs'
}
}
dependencies {
compile(name:'foo', ext:'aar')
}
Android {
packagingOptions {
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
}
}
Dans le dossier root de votre plug-in (même niveau que plugin.xml
), créez un build-extras.gradle
. Si nécessaire, ajoutez ou supprimez minSdkVersion
et targetSdkVersion
en fonction des besoins de votre projet:
Android {
defaultConfig {
minSdkVersion 16
targetSdkVersion 22
}
packagingOptions {
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
}
}
Il doit y avoir une légère modification de réponse de Niko
Lorsque gradle exécute la compilation à l'aide de Niko's answer , il recherche les bibliothèques dans app/libs
qui ne sont pas présentes dans le projet (dans le projet standard Android Studio, mais dans la structure de projet Cordova Android, le dossier libs est différent). Cependant, le plugin copie la bibliothèque aar dans app/src/main/libs
, ce qui peut nous faire penser qu'il copie l'Aar dans app/libs
<resource-file src="yourDirContainingYourAAR/foo.aar" target="libs/foo.aar" />
Par conséquent, le fichier de classement doit être
repositories{
jcenter()
flatDir {
dirs 'src/main/libs'
}
}
dependencies {
compile(name:'foo', ext:'aar')
}
Android {
packagingOptions {
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
}
}
Cela vous donnera une compilation réussie de l'application
À votre santé!!
Après la création du projet Cordova, l'ajout d'une plateforme, l'ajout d'un plugin est terminé.
Disons que le fichier aar est copié dans le dossier libs. (en supposant que le nom du fichier est cards.aar)
puis dans l'application build.gradle, indiquez ce qui suit et cliquez sur le projet de synchronisation avec les fichiers Gradle.
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compile(name:'cards', ext:'aar')
}
Ça marche pour moi!! mais un inconvénient de cette solution est .. vous devez ouvrir le projet depuis le dossier de la plate-forme sur Android Studio et ajouter les lignes ci-dessus à votre build.gradle