android studio ndkè°ç¨è¿ç¨å¦ä¸ï¼
éè¿jniaesæ¡ä¾è¯´æè°ç¨NDKå±é ç½®è¿ç¨
èæä»¬éè¿åºå±æ¥å¤æç¾åæ¯å¦æ£ç¡®ï¼å¦ææ£ç¡®åç»§ç»æ§è¡æ ¸å¿ä»£ç ï¼å¦åéåºç¨åºï¼è¿æ ·å°±å¯ä»¥é²æ¢å«äººæ¶æåç¼è¯ï¼å¹¶è¿è¡äºæ¬¡æå ã
é¦å å»å®ç½ä¸è½½ä¸ä¸ªææ°çNDKï¼é便æ¾å°åªé½è¡ï¼åææ¾å¨D:\Dev\Android\android-ndk-r10d.
(1) æ°å»ºä¸ä¸ªé¡¹ç®ï¼åç§°JniAes
é¦å å¨javaç±»ä¸æ·»å nativeæ¥å£ï¼æ³¨æå好nativeæ¥å£åSystem.loadLibrary()å³å¯ã代ç å¦ä¸ï¼
1 public synchronized static native String getFromNativeIv();
2 public synchronized static native String getStringFromNative();
3 public synchronized static native int jniCheckAPP(Context context);
4
ç¶åbuild projectå¾å°å ¶ä¸ä¸é´æä»¶ï¼æä»¬å ³æ³¨çæ¯.classæä»¶ãç¼è¯OK以åçæçclassæä»¶å¨ASå·¥ç¨çå¦ä¸ç®å½ï¼
aes\app\build\intermediates\classes\debug\android\
ï¼2ï¼æ¥ä¸æ¥è·classæä»¶çæç¸åºç.h头æä»¶ï¼æ§è¡å¦ä¸å½ä»¤å³å¯
ç¹å»"View->Tool Windows->Terminal" å³å¨Studioä¸è¿è¡ç»ç«¯å½ä»¤è¡å·¥å
·.æ§è¡å¦ä¸å½ä»¤çæcè¯è¨å¤´æä»¶.
javah -d jni -classpath c:\Users\sodinochen\AppData\Local\Android\sdk\platforms
\android-16\android.jar;..\..\build\intermediates\classes\debug com.aes.jniaes.MainActivity
ï¼3ï¼ç¶åå°åæç .hæä»¶åªåè¿æ¥ãå¨jniç®å½ä¸æ°å»ºä¸ä¸ªcæä»¶ï¼éæååï¼æçå«strk.c ã
strk.cæä»¶ï¼ç¨äºå®ç°æ ¸å¿ä»£ç é»è¾ï¼å¤æå
å.åå¸å¼æ¯å¦åæ³ï¼å¦æè¿å1ï¼ä¸ºåæ³ãåä¹ï¼åä¸åæ³ãå
¥å£æ¹æ³ä¸ºï¼
jint Java_com_aes_jniaes_MainActivity_jniCheckAPP(JNIEnv* env, jobject context,
jobject thiz)
æ¥ä¸æ¥å¨å·¥ç¨çlocal.propertiesæä»¶ä¸æ·»å NDKè·¯å¾ï¼ä¸é¢ä¸è½½å¥½çé£ä¸ªNDKï¼ï¼ç±»ä¼¼å ¶ä¸çSDKè·¯å¾ä¸æ ·ï¼æçæ·»å åå¦ä¸ï¼
sdk.dir=D\:\\Dev\\Android\\android-sdk-windows
ndk.dir=D\:\\Dev\\Android\\android-ndk-r10d
ï¼4ï¼æ¥ä¸æ¥å¨app moduleç®å½ä¸çbuild.gradleä¸è®¾ç½®åºæä»¶åï¼çæçsoæä»¶åï¼ãæ¾å°gradleæä»¶çdefaultConfigè¿é¡¹ï¼å¨é颿·»å å¦ä¸å 容ï¼
defaultConfig {
applicationId "com.aes.jniaes"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
ndk {
moduleName "checkapp-jni" //çæçsoåå
abiFilters "armeabi", "armeabi-v7a", "x86" //è¾åºæå®ä¸ç§abiä½ç³»ç»æä¸çsoåºãç®å坿坿 ã
}
}
ï¼5ï¼æåå°±æ¯æ·»å éæåå§åloadLibrary代ç ï¼æ·»å å¦ä¸ï¼
static {
System.loadLibrary("checkapp-jni"); //soæä»¶çåå
}
ç¼è¯åºæ¥çsoæä»¶å¨aes\app\build\intermediates\ndk\debug\libç®å½ä¸
é£ä¹å¦ä½å°ç¼è¯å¥½çsoæä»¶è¿è¡ä½¿ç¨ï¼å¯ä»¥éè¿å¦ä¸æ¹å¼ï¼
äº . å¼ç¨soæä»¶
ï¼1ï¼.å¨âsrc/mainâç®å½ä¸æ°å»ºå为âjniLibsâçç®å½ï¼
ï¼2ï¼.å°soæä»¶å¤å¶ãç²è´´å°âjniLibsâç®å½å ã