Geralmente se faz isso para obter mais performance (como é necessário no desenvolvimento de jogos por exemplo)
Mais detalhes em: https://developer.android.com/ndk/index.html
Eu estou usando para ver se consigo acessar recursos de telefonia para fazer uma conference... Mas enfim, segue um Hello World:
Faça o download do NDK: https://developer.android.com/ndk/downloads/index.html
Crie um novo projeto normalmente (File > New > New Project > dê um nome/domínio > Next > Next > Blank/Empty Activity > Finish)
No arquivo local.properties adicione uma linha com o caminho do seu NDK:
ndk.dir=C\:\\android\\ndk\\android-ndk-r10e
No arquivo gradle.properties adicione isso:
android.useDeprecatedNdk=true
No arquivo build.gradle (da app) adicione em defaultConfig isso:
ndk { moduleName "MyLib" }
Verifique se a MainActivity está estendendo diretamente a classe Activity, se não estiver, ajuste.
Na sua activity crie um método assim:
public native String getStringFromNative();
Vá em Build > Make
Depois vá no Terminal do Android Visual Studio e rode esse comando:
cd app\src\main
Depois rode esse comando (Não esquece de trocar as partes em negrito):
javah -d jni -classpath C:\android\sdk\platforms\android-23\android.jar;..\..\build\intermediates\classes\ debug br.com.localhost8080.ndksample.MainActivity
Isso vai criar uma pasta chamada jni com um arquivo .h nela
Crie nessa pasta jni um arquivo chamado main.c com o conteúdo abaixo (não esqueça de trocar os br_com_localhost8080_ndksample_MainActivity)
#include "br_com_localhost8080_ndksample_MainActivity.h" JNIEXPORT jstring JNICALL Java_br_com_localhost8080_ndksample_MainActivity_getStringFromNative (JNIEnv * env, jobject obj) { return (*env)->NewStringUTF(env, "Hello from JNI!"); }
Cria na mesma pasta um arquivo vazio chamado util.c (isso é necessário pois sem ele dá bug no gradle)
Depois dê um Build > Make
No activity_main.xml adicione um id no TextView:
android:id="@+id/my_textview"
Coloque na sua Activity
static { System.loadLibrary("MyLib"); }
No final do onCreate coloque:
TextView tv = (TextView) findViewById(R.id.my_textview); tv.setText(getStringFromNative());
Dê um play e veja seu lindo HelloWorld escrito em C
Fontes no meu github: https://github.com/adrianoschmidt/ndk-sample
Para fazer esse hello world eu segui esse vídeo-tutorial (eh um pouco antigo, então peguei uns bugs que não apareceram no vídeo, e está em inglês): https://software.intel.com/en-us/videos/using-the-ndk-with-android-studio
Abraço!
Adriano Schmidt
True, If you want to become an app developer, the journey is not easy. You will have to learn and practice a lot before. Eiliana.com is a global freelancing portal where you find the best freelancing app development projects across the world.
ResponderExcluir