聽 聽杩欏嚑澶╀竴鐩村湪鐮旂┒JNI鐨勫紑鍙戣繃绋嬶紝椤轰究鎶奛DK鐜鎼缓涓€璧锋€荤粨涓嬨€傚湪windows鐜涓嬪紑鍙慾ni闇€瑕乧/c++缂栬瘧鍣ㄧ殑鏀寔锛岀綉缁滀笂鎴戠湅寰堝浜轰娇鐢╟ygwin銆傚懙鍛垫垜涓嶆槸寰堝枩娆娇鐢ㄥ畠锛屾劅瑙夊畨瑁呰捣鏉ユ尯楹荤儲鐨勩€傛垜浣跨敤GNUStep锛屼笅杞藉湴鍧€http://www.gnustep.org/experience/Windows.html銆?/p>

涓嬭浇瀹夎鍚庯紝楠岃瘉鏄惁鎴愬姛銆傛墦寮€GNUstep->Shell锛岃緭鍏ake -v 鍜?gcc -v鍛戒护锛屽鍥炬墍绀恒€?/p>

聽聽

涓嬭浇NDK锛屽湴鍧€http://developer.android.com/tools/sdk/ndk/index.html銆備笅杞藉畬鍚庤В鍘嬪嵆鍙€?/p>

聽閰嶇疆ndk鐜鍙橀噺锛実nustep鏄ā鎷焞inux鐨勭幆澧冪殑锛屾墦寮€gnustep鐨勫畨瑁呯洰褰曚笅鐨凣:\softinstall\GNUstep\GNUstep\GNUstep.conf鏂囦欢锛屾坊鍔犱互涓嬪唴瀹癸細

NDK=/g/softinstall/Android/android-ndk-r8b

export=NDK

璇存槑濡傛灉涓嶇煡閬搉dk鐩綍鍦╨inux涓嬪簲璇ユ槸鍦ㄥ摢閲岋紝浣犲彲浠ユ墦寮€gnustep鐨勫懡浠ょ獥鍙o紝杈撳叆mount锛屽氨鍙互鎵惧埌瀵瑰簲鐨勭洏绗︺€?/p>

楠岃瘉鐜鍙橀噺锛屽涓嬪浘銆偮?a href="https://img.it610.com/image/info3/e8650550450849b79b8792e39e8e63df.png" target="_blank">

浠ヤ笂灏遍厤缃垚鍔熶簡銆?/p>

涓嬭浇杩涘叆姝i鍟︺€侸ni鐨勫紑鍙戞楠ゃ€?/p>

鎵撳紑eclipse锛屾柊寤哄伐绋嬪悕涓簍estJni銆傚湪activity涓坊鍔犱互涓嬩唬鐮?/p>

聽聽

            
  1. package聽com.xzw.jni;聽
  2. import聽android.os.Bundle;聽
  3. import聽android.app.Activity;聽
  4. import聽android.view.Menu;聽
  5. import聽android.view.MenuItem;聽
  6. import聽android.widget.TextView;聽
  7. import聽android.support.v4.app.NavUtils;聽
  8. /**
  9. 聽*聽
  10. 聽*聽@author聽XuZhiwei聽(xuzhiwei@gmail.com)
  11. 聽*聽sina锛歨ttp://weibo.com/xzw1989
  12. 聽*聽
  13. 聽*聽Create聽at聽2012-8-30聽涓婂崍10:49:45
  14. 聽*/
  15. publicclass聽MainActivity聽extends聽Activity聽{聽聽
  16. 聽聽聽聽@Override
  17. 聽聽聽聽publicvoid聽onCreate(Bundle聽savedInstanceState)聽{聽
  18. 聽聽聽聽聽聽聽聽super.onCreate(savedInstanceState);聽聽
  19. 聽聽聽聽}聽
  20. 聽聽聽聽publicnative聽String聽hello();聽
  21. 聽聽聽聽
  22. 聽聽聽聽static{聽
  23. 聽聽聽聽聽聽聽聽System.loadLibrary("testJni");聽
  24. 聽聽聽聽}聽
  25. 聽聽聽聽聽
  26. }聽
缂栬瘧鍚庣殑鏂囦欢鍦╞in鐩綍涓嬶紝閫氳繃javah鍛戒护鐢熸垚c/c++鐨勬枃浠跺ご銆傚涓嬪浘 聽 聽

浼氬湪椤圭洰鐩綍涓嬬敓鎴恓ni/com_xzw_jni_TestJni.h銆?/p>

澶存枃浠朵唬鐮佸涓嬶細

            
  1. /*聽DO聽NOT聽EDIT聽THIS聽FILE聽-聽it聽is聽machine聽generated聽*/
  2. #include聽
  3. /*聽Header聽for聽class聽com_xzw_jni_TestJni聽*/
  4. #ifndef聽_Included_com_xzw_jni_TestJni
  5. #define聽_Included_com_xzw_jni_TestJni
  6. #ifdef聽__cplusplus
  7. extern"C"聽{聽
  8. #endif
  9. /*
  10. 聽*聽Class:聽聽聽聽聽com_xzw_jni_TestJni
  11. 聽*聽Method:聽聽聽聽hello
  12. 聽*聽Signature:聽()Ljava/lang/String;
  13. 聽*/
  14. JNIEXPORT聽jstring聽JNICALL聽Java_com_xzw_jni_TestJni_hello聽
  15. 聽聽(JNIEnv聽*,聽jobject);聽
  16. #ifdef聽__cplusplus
  17. }聽
  18. #endif
  19. #endif

鏍规嵁澶存枃浠剁紪鍐檆浠g爜

聽聽

            
  1. #include聽
  2. #include聽
  3. 聽聽
  4. jstring聽
  5. Java_com_xzw_jni_TestJni_hello聽
  6. 聽聽(JNIEnv*聽env,聽jobject聽thiz){聽
  7. 聽聽聽聽聽聽return聽(*env)->NewStringUTF(env,聽"鍝堝搱瀹屾垚鑷姩鍖栫紪璇懧?");聽
  8. }聽

鎺ヤ笅鏉ョ紪鍐櫬燗ndroid.mk,璇ユ枃浠跺彲浠ョ洿鎺ヤ粠NDK鐨剆amples涓嬬殑hello-jni鐨刯ni鏂囦欢涓嬬洿鎺ラ潬杩囨潵鏀规敼灏卞彲浠ヤ簡銆備篃璐翠笅浠g爜鍝堛€?/p>

            
  1. #聽Copyright聽(C)聽2009聽The聽Android聽Open聽Source聽Project聽
  2. #聽
  3. #聽Licensed聽under聽the聽Apache聽License,聽Version聽2.0聽(the聽"License");聽
  4. #聽you聽may聽not聽use聽this聽file聽exceptin聽compliance聽with聽the聽License.聽
  5. #聽You聽may聽obtain聽a聽copy聽of聽the聽License聽at
  6. #聽
  7. #聽聽聽聽聽聽http://www.apache.org/licenses/LICENSE-2.0聽
  8. #聽
  9. #聽Unless聽required聽by聽applicable聽law聽or聽agreed聽toin聽writing,聽software聽
  10. #聽distributed聽under聽the聽License聽is聽distributed聽on聽an聽"AS聽IS"聽BASIS,聽
  11. #聽WITHOUT聽WARRANTIES聽OR聽CONDITIONS聽OFANY聽KIND,聽either聽express聽or聽implied.聽
  12. #聽See聽the聽License聽for聽the聽specific聽language聽governing聽permissions聽and
  13. #聽limitations聽under聽the聽License.聽
  14. #聽
  15. LOCAL_PATH聽:=聽$(call聽my-dir)聽
  16. include聽$(CLEAR_VARS)聽
  17. LOCAL_MODULE聽聽聽聽:=聽testJni聽
  18. LOCAL_SRC_FILES聽:=聽testJni.c聽
  19. include聽$(BUILD_SHARED_LIBRARY)聽

鍏朵腑浣犲彧闇€瑕佽LOCAL_MODULE鍜孡OCAL_SRC_FILES灏卞彲浠ヤ簡銆?/p>

璇存槑:LOCAL_MODULE鏄弿杩版ā鍧楃殑锛岀敤鏉ョ粰java璋冪敤鐨勬ā鍧楀悕锛屼細鐢熸垚瀵瑰簲鐨刲ibtestJni.so

LOCAL_SRC_FILES灏辨槸婧愭枃浠跺暒锛屽涓枃浠剁┖鏍奸殧寮€鍗冲彲銆?/p>

鎺ヤ笅鏉ワ紝鎴戜滑瑕佸紑濮嬬紪璇戠敓鎴恠o鏂囦欢鍜€?/p>

鎵撳紑gnustep鐨勫懡浠ょ獥鍙o紝杩涘叆鍒伴」鐩簳涓嬶紝杈撳叆$NDK/ndk-build鍛戒护锛屽嵆鍙嚜鍔ㄧ敓鎴恖ibs/armeabi/libtestJni.so鏂囦欢銆?/p>

鎺ヤ笅鏉ュ氨鏄痡ava璋冪敤鏉ャ€傜洿鎺ヤ笂浠g爜聽

            
  1. package聽com.xzw.jni;聽
  2. import聽android.os.Bundle;聽
  3. import聽android.app.Activity;聽
  4. import聽android.view.Menu;聽
  5. import聽android.view.MenuItem;聽
  6. import聽android.widget.TextView;聽
  7. import聽android.support.v4.app.NavUtils;聽
  8. /**
  9. 聽*聽
  10. 聽*聽@author聽XuZhiwei聽(xuzhiwei@gmail.com)
  11. 聽*聽sina锛歨ttp://weibo.com/xzw1989
  12. 聽*聽
  13. 聽*聽Create聽at聽2012-8-30聽涓婂崍10:49:45
  14. 聽*/
  15. publicclass聽TestJni聽extends聽Activity聽{聽聽
  16. 聽聽聽聽@Override
  17. 聽聽聽聽publicvoid聽onCreate(Bundle聽savedInstanceState)聽{聽
  18. 聽聽聽聽聽聽聽聽super.onCreate(savedInstanceState);聽
  19. 聽聽聽聽聽聽聽聽TextView聽tv聽=聽new聽TextView(this);聽
  20. 聽聽聽聽聽聽聽聽tv.setText(hello());聽
  21. 聽聽聽聽聽聽聽聽setContentView(tv);聽
  22. 聽聽聽聽}聽
  23. 聽聽聽聽publicnative聽String聽hello();聽
  24. 聽聽聽聽
  25. 聽聽聽聽static{聽
  26. 聽聽聽聽聽聽聽聽System.loadLibrary("testJni");聽
  27. 聽聽聽聽}聽
  28. 聽聽聽聽聽
  29. }聽

杩愯缁撴灉濡備笅

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. Android(安卓)Log Analysis转
  2. android系统学习笔记四
  3. android升级的问题
  4. ubuntu 平台 FFmpeg Android(安卓).so文
  5. android中的maven配置
  6. android中layer-list
  7. Android: Support Libraries for Android
  8. Android(安卓)性能参数获取
  9. 2.28学习内容,android,dialog自定义宽高、i
  10. How to use Sensor Simulator in Android