2015-06-10 22 views
23

Ich bin neu in der Cordova-Plugin-Entwicklung Zeug. Ich möchte ein Plugin schreiben, das in der Lage ist, eine neue Android-Aktivität zu öffnen und Werbung zu zeigen.Cordova Plugin-Entwicklung - Hinzufügen aar

Also folgte ich einem einfachen Tutorial here. Das funktioniert sehr gut und wie erwartet.

Der nächste Schritt ist, dieses Android Studio Gradle-Projekt in mein Plugin aufzunehmen.

Mein erster Versuch: das gradle Projekt zu einem Unterordner von meiner cordova-Plugin und die folgende Zeile in die Datei plugin.xml Hinzufügen:

<framework src="libs/Broper/build.gradle" custom="true" type="gradleReference" /> 

auch ich versuchte:

<framework src="libs/Broper/app/build.gradle" custom="true" type="gradleReference" /> 

Der Graddle-Dateien werden von Cordova erkannt. Aber etwas funktioniert nicht. Also kann ich die Klassen dieses Android-Studio-Projekts nicht in meine Plugin-Java-Dateien importieren.

Dann ist eine bessere Lösung (ich dachte so), eine AAR stattdessen hinzuzufügen. Aber ich habe nicht einmal eine Ahnung, was ich tun soll, um dieses AAR in mein cordova-Plugin einzufügen.

Also, die Frage ist: Wie füge ich ein Android-atoAroject (oder Bibliothek) zu meinem Cordova-Plugin den richtigen Weg?

Antwort

40

Hier ist, was ich getan habe, um eine Gradle-Referenz mit einem Cordova-Plugin zu verwenden, ich denke, das könnte Ihnen helfen.

Globale Struktur:

pluginFolder/ 
    build-extras.gradle 
    plugin.xml 
    yourDirContainingYourAAR/ 
    src/ 
    android/ 
     yourFile.gradle 
     myPlugin.java 

Setzen Sie Ihre Bibliothek, sagen foo.aar im yourDirContainingYourAAR Verzeichnis (es schaffen, wenn nötig)

  • In der plugin.xml Datei:

    <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> 
    
  • In der Gradle-Datei yourFile.gradle:

    repositories{  
        jcenter() 
        flatDir { 
         dirs 'libs' 
        } 
    } 
    
    dependencies { 
        compile(name:'foo', ext:'aar') 
    } 
    
    android { 
        packagingOptions { 
        exclude 'META-INF/NOTICE' 
        exclude 'META-INF/LICENSE' 
        } 
    } 
    
  • Im Stammordner Ihres Plugins (gleichen Niveau wie plugin.xml) erstellen build-extras.gradle. Bei Bedarf , hinzuzufügen oder zu entfernen minSdkVersion und targetSdkVersion nach Ihrem Projekt benötigt:

    android { 
        defaultConfig { 
         minSdkVersion 16 
         targetSdkVersion 22 
        } 
    
        packagingOptions { 
         exclude 'META-INF/NOTICE' 
         exclude 'META-INF/LICENSE' 
        } 
    } 
    
+0

Ist dies für eine AAR oder ein normales Android Studio Project? Und was ist sonst noch im src/android dir? das ganze gradl android Studio Project? Oder die AAR? oder das "App" -Dir vom Android Studio Project? – SleepingMole

+0

src/android dir enthält alle notwendigen Dinge für Ihr Plugin. Sie können ein ganzes Android Studio Studio-Projekt setzen – Niko

+0

Diese Antwort verwirrt mich ein bisschen mehr. Denn wenn ich mein Android Studio Project dort einlege, werde ich den Build.gradle von dem mit dem "leeren", den du versorgst, orverwirte. also sehe ich nicht die Verbindung zwischen dem ASP und meinem Plugin. Oder verstehe einfach nicht, was richtig ist. – SleepingMole

0

Nach cordova Projekterstellung, das Hinzufügen Plattform, das Hinzufügen Plugin erfolgt.

Nehmen wir an, die AAR-Datei wird in den Ordner libs kopiert. (Nehmen wir an, der Dateiname lautet cards.aar)

dann in App build.gradle Folgendes angeben und auf Sync-Projekt mit Gradle-Dateien klicken.

Repositorys { flatDir { 'libs' dirs} }

Abhängigkeiten { Kompilierung (Name: 'Karten', ext: 'aar') }

Es funktioniert für mich! ! aber ein Nachteil dieser Lösung ist .. Sie müssen das Projekt von Plattformordner auf Android Studio öffnen und fügen Sie die obigen Zeilen zu Ihrem Build.gradle

Verwandte Themen