編輯:關於Android編程
之前寫過一篇Eclipse制作.so的文章,使用的是GNUstep模擬Linux環境,過程現在看來是想相當麻煩,後來發現一個簡單的方法就是通過項目右鍵添加Native Supprot...可以快速創建.so而不使用命令行,
由於AS越來越被大家使用,所以Eclipse的制作過程就不再寫了,這篇主要講的是如何用AS快速制作一個簡單的.so文件!
如果之前對制作.so一點了解也沒有的話,在看這一篇之前可以看下文章開頭提到的文章,會對這篇文章的理解上有所幫助,因為本篇文章不打算講解的太過詳細!
步驟1:
創建一個新的AS項目(模板選擇EmptyActivity即可)jnitest,包名:com.byl.jnitest:
步驟2:
添加NDK支持:
按Ctrl+Alt+Shift+S,出現如圖:
ok,完成後,打開項目根目錄下的local.properties文件:
ndk的路徑會自動添加進來,表示操作成功!
步驟3:
打開根目錄下gradle.properties文件,添加代碼:
android.useDeprecatedNdk=true
步驟4:
項目>app>src>main文件夾下,新建jni文件夾,並放入三個文件.h、.c、.c:
注意:
.h文件命名的命名方式,包名+調用.so的Activity名且"."需要更換成下滑線"_";
jnitest.c的命名可以隨便定義;
util.c是一個空的.c文件,作用就是在ndk編譯時避免一個錯誤:
make.exe: *** No rule to make target
/* DO NOT EDIT THIS FILE - it is machine generated */ #include/* Header for class com_byl_jnitest_MainActivity */ #ifndef _Included_com_byl_jnitest_MainActivity #define _Included_com_byl_jnitest_MainActivity #ifdef __cplusplus extern "C" { #endif /* * Class: com_byl_jnitest_MainActivity * Method: getSec * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_byl_jnitest_MainActivity_getSec (JNIEnv *, jclass); #ifdef __cplusplus } #endif #endif
#include#include jstring Java_com_byl_jnitest_MainActivity_getSec (JNIEnv* env,jobject thiz){ return (*env)->NewStringUTF(env,"調用jni成功"); }
步驟5:
在MainActivity中調用.so:
public static native String getSec();//.so中的方法名 static{ System.loadLibrary("jnitest"); }
步驟6:
最後一步,打開app目錄下build.gradle文件,修改gradle配置:
defaultConfig { applicationId "com.byl.jnitest" minSdkVersion 14 targetSdkVersion 23 versionCode 1 versionName "1.0" ndk { moduleName "jnitest" ldLibs "log", "z", "m" abiFilters "armeabi" } }
以上步驟全部完成後,直接點擊run>>:
運行必然要報錯的,因為之前.so文件並不存在,經此一調,ndk便自動為我們生成了想要的東西:
將.so文件復制出來,然後在main文件夾下建立jniLibs/armeabi,並將.so放入:
再次運行>>:
此例只是簡單的輸出一個字符串,一般的項目放入一個不想外露的密鑰之類的還是非常有用的!
步驟:1.https://github.com/android/platform_development/blob/master/ide/intellij/codesty
當你想在Android Studio中刪除某個module時,大家習慣性的做法都是選中要刪除的module,右鍵去找delete。但是 在Android Studio中你
Android和java啟動的區別不同於使用 main() 方法啟動應用的其他編程范例,Android 系統會通過調用對應於其生命周期中特定階段的特定回調方法在 Acti
Hi~大家好,出來創業快3個月了,一切還不錯,前一段時間用了業余時間搞了個問答類網站YQMA.想做中國的stackoverflow,哈哈,只是YY下,希望大家多多支持!好