2015-06-10 13 views
23

Sono nuovo nello sviluppo di plugin cordova. Voglio scrivere un plugin che è in grado di aprire una nuova attività Android e mostrare qualche pubblicità.Sviluppo plug-in Cordova - aggiunta aar

Così ho seguito un semplice tutorial here. Funziona molto bene e come previsto.

Il passaggio successivo consiste nell'includere questo progetto Android Studio Gradle nel mio plug-in.

Il mio primo tentativo: Aggiungendo il progetto Gradle in una sottocartella del mio plugin di Cordova e aggiungere la seguente riga al file plugin.xml:

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

anche ho provato:

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

Il i file graddle sono riconosciuti da Cordova. Ma qualcosa non funziona. Quindi non posso importare le classi di quel progetto di Android Studio nei miei file java plugin.

Quindi una soluzione migliore (ho pensato così) è di aggiungere un AAR invece. Ma lì non ho nemmeno la più pallida idea di cosa fare per aggiungere quell'ARC nel mio plugin Cordova.

Quindi, la domanda è: come faccio ad aggiungere un android atroject (o libreria) al mio plugin Cordova nel modo giusto?

risposta

40

Ecco cosa ho fatto per utilizzare un riferimento gradle con un plug-in Cordova, penso che questo potrebbe aiutarti.

struttura globale:

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

Metti la tua biblioteca, dire foo.aar, nella directory yourDirContainingYourAAR (crearlo se necessario)

  • Nel file 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> 
    
  • Nel file gradle yourFile.gradle:

    repositories{  
        jcenter() 
        flatDir { 
         dirs 'libs' 
        } 
    } 
    
    dependencies { 
        compile(name:'foo', ext:'aar') 
    } 
    
    android { 
        packagingOptions { 
        exclude 'META-INF/NOTICE' 
        exclude 'META-INF/LICENSE' 
        } 
    } 
    
  • Nella cartella radice del vostro plugin (stesso livello di plugin.xml) creare un build-extras.gradle. Se necessario, aggiungere o rimuovere minSdkVersion e targetSdkVersion secondo il vostro progetto ha bisogno:

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

E 'questo per un AAR o un normale progetto Android Studio? E cos'altro c'è nella directory src/android? l'intero gradl Android Studio Project? O la RAA? o la directory "app" dal progetto Android Studio? – SleepingMole

+0

src/android dir contiene tutte le cose necessarie per il tuo plugin. Puoi inserire un intero progetto Android Studio – Niko

+0

Questa risposta mi confonde un po 'di più. Perché se metto il mio progetto Android Studio lì, io risponderò al build.gradle da quello con il "vuoto" che hai fornito. quindi non vedo la connessione tra ASP e il mio plugin. O semplicemente non capisco qualcosa di giusto. – SleepingMole

0

Dopo la creazione del progetto Cordova, aggiungendo la piattaforma, l'aggiunta di plug-in è fatto.

Diciamo che il file di aar è copiato nella cartella libs. (supponiamo che il nome del file sia cards.aar)

quindi in app build.gradle specificare quanto segue e fare clic su progetto di sincronizzazione con i file Gradle.

repository { flatDir { dirs 'libs' } }

dipendenze { compilazione (nome: 'carte', ext: 'AAR') }

Funziona per me! ! ma uno svantaggio di questa soluzione è .. è necessario aprire il progetto dalla cartella piattaforma su Android Studio e aggiungere le linee sopra al tuo build.gradle

Problemi correlati