5

Sto cercando di creare un progetto di libreria Android con codice nativo. Per la sezione "Limitazioni conosciute" sotto http://tools.android.com/tech-docs/new-build-system/gradle-experimental sono supportati i progetti di librerie ibride. Ma non mi sembra di vedere il nativo in modo che i file vengano generati nella cartella libs del file di libreria di aar.Problemi nella creazione di una libreria Android con codice nativo

Ecco come il mio setup progetto sembra

  1. passaggi seguiti nella http://tools.android.com/tech-docs/new-build-system/gradle-experimental per il supporto NDK
  2. Aggiunto moduli una biblioteca che carica staticamente il nativo così file e la espone le funzionalità tramite alcuni metodi
  3. aggiunto un altro modulo che utilizza il modulo nativo. Impostare le dipendenze del modulo per includere il progetto della libreria.

Quando eseguo questa app, ottengo un UnsatisfiedLinkError, che mi aspettavo visto che non vedo alcun nativo, quindi i file vengono generati nel file di aar.

Ecco come il mio file di build.gradle biblioteca assomiglia

apply plugin: 'com.android.model.library' 

model { 
    android { 
     compileSdkVersion = 23 
     buildToolsVersion = "23.0.1" 
    } 
    android.ndk { 
     moduleName = "native" 
     cppFlags = ['-std=c++11'] 
     stl = "gnustl_shared" 
    } 
} 

Questo è il modo build.gradle del mio modulo app assomiglia

apply plugin: 'com.android.model.application' 
model { 
    android { 
     compileSdkVersion = 23 
     buildToolsVersion = "23.0.1" 
    } 
} 
dependencies { 
    compile project(':mylibrary') 
} 

risposta

1

Questo è un problema comune in Gradle sperimentale 0.2. 0 e 0.2.1. Ha avuto lo stesso problema, aggiornato a 0.3.0-alpha4 e ha funzionato (basta sostituire 0.2.0 con nel build.gradle del progetto). Per eseguire l'aggiornamento è necessario Gradle 2.6 (fare clic con il tasto destro del mouse su un modulo/Impostazioni modulo aperto/selezionare il sottomenu del progetto gradle versione a 2.6). Si noti che sto utilizzando Android Studio 1.4 RC3.

+0

Lavorato con 0.3.0-alpha4 e gradle 2.6. Non ho dovuto aggiornare da AS 1.3.2 – Harkish

+0

Sei in grado di eseguire il debug del codice nativo? Ho un problema con questo e mi chiedo se il debug nella libreria ibrida non è ancora supportato o sto facendo qualcosa di sbagliato. – Nedko

+0

Che errore vedi? Ricevo quanto segue quando eseguo il debug di un progetto di libreria ibrida "Errore durante l'avvio sul server di debug del dispositivo: com.android.tools.ndk.run.DebuggerContext $ StartServerException: java.lang.IllegalStateException: server LLDB non trovato". BTW Sono in grado di eseguire il debug di un progetto di applicazione ibrida senza problemi – Harkish