7

Recentemente sono passato da Eclipse + ADT ad Android Studio. La mia app è un'applicazione C++ nativa completa. Uso Android Studio 2.0 Beta 5 e Gradle Experimental 0.6.0-beta4.La compilazione del codice nativo per Android Studio è lenta

Il processo di generazione di Android Studio è molto lento per il codice nativo. Ho letto tutte le domande su Stackoverflow e Internet. Ho applicato tutti i metodi suggeriti (--offline, --daemon, --parallel, -XmxSize, ecc.). Si rivolgono principalmente per accelerare la compilazione del codice Java. Il processo di compilazione di file C++ nativi (ndk-build) è ancora molto lento. Anche se scrivo un codice C++ di una riga, aspetto 5-7 minuti ogni volta che faccio clic sul pulsante Esegui, dove il tempo di compilazione di Eclipse era di circa 15-20 secondi per lo stesso lavoro.

Hai qualche suggerimento per accelerare il processo di compilazione del codice nativo (C/C++) su Android Studio?

+0

Provare a separare il passo ndkBuild come descritto in http://ph0b.com/android-studio-gradle-and-ndk-integration/ –

+0

@AlexCohn Questo inserisce il lavoro in Android Studio. Potrebbe essere un'opzione per le app Java che non si occupano di file nativi ma utilizzano alcune librerie native. La mia app è un'app nativa pura. Sto cercando una soluzione all'interno del sistema di costruzione gradle-experimental. – Rancs

+1

Un trucco potrebbe essere quello di limitare gli ABI creati da Android Studio –

risposta

1

Se si sta costruendo su linux ho un hack per voi per accelerare la costruzione NDK:

cd <ndk-bundle-path> 
mv ndk-build ndk-build2 

Ora creare uno script di shell chiamato "NDK-build" contenente quanto segue:

#!/bin/sh 
$(dirname $0)/ndk-build2 -j 8 [email protected] 

Ora impostare le autorizzazioni di esecuzione per il nuovo script:

chmod 775 ndk-build 

Ora, chi lancia NDK-build (in cluding gradle/android studio) sarà la forza di battere i file oggetto su 8 core contemporaneamente. 8 core è solo un esempio. È necessario impostare questo numero in qualsiasi numero di core disponibili. Se lo si imposta troppo alto rispetto al numero di core disponibili, di solito si perdono le prestazioni. Se la CPU ha hyper threading puoi raddoppiare il numero di core.

Sono sicuro che c'è un modo equivalente di farlo su Windows con uno script batch o qualcosa del genere ma non ho una macchina Windows disponibile atm.

+0

Perché ** 8 ** core? È invariante? –

+0

Questo perché ho 4 core con hyper threading. Dovresti impostare ciò che hai sempre a disposizione. Se lo si imposta superiore al numero di core fisici (doppio se hyper threading) di solito si perdono le prestazioni. – bofjas