2015-01-13 11 views
7

As Gradle non supporta le dipendenze apklib come è possibile migrare dalle dipendenze aar alle dipendenze da ? È possibile convertire manualmente o automaticamente la dipendenza apklib in aar? Se sì - come, se no - perché no?Come convertire apklib in aar

In questa domanda presumo che non ho progetto originale per apklib, ma il file stesso.

risposta

11

apklib non contiene file oggetto, solo i file sorgente, quindi l'unico modo in cui può essere incluso in qualsiasi progetto è ricompilandolo Secondo alcuni documenti si può leggere all'indirizzo:

Android dependencies : apklib vs aar files e https://plus.google.com/+ChristopherBroadfoot/posts/7uyipf8DTau

Il formato apklib è stato inventato come un modo per condividere il codice di Android + risorse. È essenzialmente un progetto di libreria Android compresso, che era già lo status quo per la condivisione di codice + risorsa.

E si può vedere nel post di Chris Broadfoot che il compito che genera l'apklib appena zip il file AndroidManifest.xml e le directory src e res:

task apklib(type: Zip) { 
    appendix = extension = 'apklib' 

    from 'AndroidManifest.xml' 
    into('res') { 
     from 'res' 
    } 
    into('src') { 
     from 'src' 
    } 
} 

Nota che il suo post è sulla creazione di un apklib da Gradle, che è una cosa un po 'strana da voler fare, ma fornisce un'idea abbastanza chiara di come una di queste cose è strutturata.

La buona notizia è che questa è la struttura del progetto "standard" Android come di quando Eclipse è stato il primario IDE, e Android Studio sa come importare i moduli che assomigliano a questo. Quindi, attenersi alla seguente procedura:

  1. Spacchettare il file apklib in una directory temporanea. È in formato zip, quindi qualcosa come unzip library.apklib dovrebbe funzionare.

  2. Guardate cosa sta spacchettato. Si dovrebbe vedere una directory contenente AndroidManifest.xml, src e res cartelle.

  3. In Android Studio, all'interno di un progetto esistente, scegliere File> Import Module e puntarlo verso la directory dal punto 2.

  4. Android Studio dovrebbe gestire l'importazione copiando i file nel vostro progetto in una nuova modulo, disponendoli nella sua struttura di directory preferita e aggiungerà un file build.gradle per il modulo.

  5. A questo punto si è installato e funzionante. Se si desidera effettivamente il file .aar, verificare se il nuovo modulo è configurato come modulo libreria o modulo applicazione.Nel suo build.gradle, se si dispone di apply plugin: 'com.android.library', si tratta di un modulo libreria e Gradle genererà un .aar come parte della compilazione: sarà nella directory build/outputs/aar dopo una compilazione riuscita.

  6. Se il modulo importato come un modulo di app e non una biblioteca (apply plugin: 'com.android.application', quindi cambiamento che apply plugin dichiarazione, e potrebbe anche essere necessario per rimuovere l'istruzione applicationId dal file di generazione. Ora dovrebbe compilare come una libreria e generare un .aar.

  7. felice codifica!

0

Non è possibile convertire l'apklib a aar. Devi aggiornare manualmente le dipendenze per puntare a un file di aar. L'aar è compilato e contiene regole su lanci e proguard che l'apklib non può necessariamente determinare automaticamente.

Si può leggere un po 'di più sulle differenze qui:

Android dependencies : apklib vs aar files

+0

Grazie. Finora io so che non v'è alcun out-of-the-box soluzione per farlo, ma ancora sto cercando qualche idea su come migrare da 'apklib' a' aar' senza ricompilare manualmente ogni singola libreria (tenendo conto che non sono ancora distribuiti come 'aar'). –

Problemi correlati