2015-02-19 15 views
19

Sto migrando tutto il mio progetto da Eclipse ad Android Studio (1.0.2, scaricalo appena ieri) ma avendo problemi con il modulo esterno.Modulo di collegamento da progetto esterno in Android Studio

In Eclipse, ho spazio di lavoro come questo

enter image description here

tutte le attività, frammenti, i modelli e le classi sono in progetto 'Core'. Il progetto Core richiedeva il funzionamento di alcune librerie (come Google Play Service, Facebook o Twitter). Mentre App 1, App 2, App 3 e così via sono solo applicazioni per le etichette. Quelle app non contengono nulla eccetto icone, file di configurazione, caricamento immagini ecc.

Sono riuscito a importare l'app "Core" e tutte le sue dipendenze in Android Studio come un nuovo progetto. Quando costruisco il nucleo, ho ricevuto 0 errori e 0 avvertimenti

enter image description here

Poi, io creo nuovi chiamata progetto "Test" e collegamento al progetto "Core" per seguendo risposta selezionata da questa domanda

How to share a single library source across multiple projects

setting.gradle del progetto di test

include ':Test' 
include '..:..:AppyCore:Core' 

build.gradle del progetto di test

dependencies { 
    compile 'com.android.support:support-v4:+' 
    compile project('..:..:AppyCore:Core') 
} 

Ma, quando ricostruisco progetto, ho ottenuto questo errore

Error:(41, 0) Project with path ':SlidingMenu' could not be found in project '..:..:AppyCore:Core' 

Quando si fa doppio clic sul messaggio di errore, IDE mostrami build.gradle del progetto Core ed evidenziare la parte di dipendenza del file come segue

enter image description here

Sembra che quando provo a creare il progetto "Test", non sia possibile individuare tutte le dipendenze del progetto "Core". Sai come aggiustarlo?

Nota

  • Credo che la messa a punto del progetto "Core" è già corretto perché ho fatto creare "Test 2" app e progetto di importazione "Core" nella stessa directory principale, allo stesso progetto. Sta funzionando senza alcun problema. Ma questa non è un'opzione perché in realtà ho circa 20+ app per white label. Sarà super difficile aggiornarne uno per uno se ognuna di quelle app ha il proprio "core".
  • Penso che la directory che includo commettere errori, altrimenti, io invece ottengo questo errore

    "Errore: Configurazione con nome 'default' non trovato."

(ho cercato per directory sbagliato intenzionalmente messo e ottenuto questo stesso errore)

+2

Wow ... Mi è piaciuta la tua domanda. Questo deve essere referenziato come una domanda di esempio. Ottimo lavoro! –

+2

Si consiglia di utilizzare 'projectDir' nel file ** settings.gradle ** anziché in' ..: .. 'sintassi. Questo potrebbe aiutare a districare le dipendenze. Vedi http://stackoverflow.com/questions/24658422/android-studio-0-8-1-creating-modules-without-copying-files/24659324#24659324 –

+0

So che questa domanda è un po 'vecchia, ma se sei ancora non l'ho capito, sarebbe bene se potessi pubblicare i tuoi diversi file build.gradle e il file settings.gradle. –

risposta

5

Si sta cercando di fare un nuovo progetto per ogni versione dell'app, e collegarli ad una base di codice comune. In questo scenario è molto meglio usare la funzione "variante" di Gradle: con essa ogni app è una "variante" dell'app principale, con il proprio nome di pacchetto, i propri file di risorse e persino i propri file src.

Per fare ciò è necessario:

  1. modificare build.gradle per il vostro core app:

    android { 
        productFlavors { 
        // default BuildConfig variables 
        all { 
        } 
        app_1 { 
         applicationId 'com.yourcompany.app_1' //package name 
         def variantName='app_1' //name of the variant 
        } 
        app_2 { 
         applicationId 'com.yourcompany.app_2' //package name 
         def variantName='app_2' //name of the variant 
        } 
        } 
    } 
    
  2. Creare app_1, app_2 ... app_x cartelle in /src, ciascuno con la propria AndroidManifest. xml, /src e /res cartelle.

  3. Cambiare la variante attuale nel Android Studio: enter image description here

è possibile trovare maggiori informazioni sulla costruzione di variante Android Tools Project Site.

Posso garantire personalmente questo approccio, in quanto l'ho usato in modo tale che un singolo progetto di Android Studio supporta la creazione di dozzine di varianti, ognuna con il proprio nome di pacchetto univoco, file di risorse e codice personalizzato che modifica in modo significativo alcuni aspetto dell'app base, per tutto il tempo condividendo un codice base comune.

Problemi correlati