Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android NDK JNI 的環境搭建以及簡單的代碼

Android NDK JNI 的環境搭建以及簡單的代碼

編輯:Android開發實例

  今天下午蛋疼地開始研究ndk和jni。

    首先去下載一個Android ndk

http://dl.google.com/android/ndk/android-ndk-1.6_r1-windows.zip

  我下載的是1.6版本的

    然後去下載安裝一個Cygwin 這個安裝和下載方法自己google一下很多

這些都弄好了之後 進入我們的代碼環節

首先創建一個工程 如下圖

其中JNI.java

  1. package zy.myTestJni;  
  2. public class JNI {  
  3.    public native void write();  
  4. }  

 

JniTest.java

  1. package zy.myTestJni;  
  2. import android.app.Activity;  
  3. import android.os.Bundle;  
  4. public class JniTest extends Activity {  
  5.     /** Called when the activity is first created. */ 
  6.     static {  
  7.         System.loadLibrary("myjni");  
  8.     }   
  9.     @Override 
  10.     public void onCreate(Bundle savedInstanceState) {  
  11.         super.onCreate(savedInstanceState);  
  12.         setContentView(R.layout.main);  
  13.         JNI j=new JNI();  
  14.         j.write();  
  15.     }  

 

然後用JNI.java來生成我們的頭文件

進入你的工程的bin目錄

執行下述代碼

D:\Users\ZY\workspace\myTestJni\bin>javah -classpath .  -jni zy.myTestJni.JNI

然後生成了一個

zy_myTestJni_JNI.h文件

這個文件不用改

然後新建一個zy_myTestJni_JNI.c的文件

代碼為

 

  1. #include<stdio.h> 
  2. #include <stdlib.h> 
  3. #include "zy_myTestJni_JNI.h"  
  4. JNIEXPORT void JNICALL Java_zy_myTestJni_JNI_write  
  5.   (JNIEnv *e, jobject j)  
  6. {  
  7.     FILE * v=fopen("/sdcard/zy.txt","w+");  
  8.     fprintf(v,"aaaa");  
  9.     fclose(v);  
  10. }  

然後把這兩個文件拷貝到ndk路徑的app路徑下 新建一個myjni文件夾在建一個jni放進去

然後在myjni下新建一個Application.mk

  1. APP_PROJECT_PATH := $(call my-dir)  
  2. APP_MODULES             := myjni 

 

在jni目錄下新建一個Android.mk

  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 except in 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 to in writing, software  
  10. # distributed under the License is distributed on an "AS IS" BASIS,  
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY 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    := myjni 
  18. LOCAL_SRC_FILES := zy_myTestJni_JNI.c  
  19. include $(BUILD_SHARED_LIBRARY)  

 

接下來 我們來編譯我們的.so庫

   然後進入到你的ndk目錄 我的目錄是這個

在cygwin裡用cd命令進入到這個ndk目錄

然後執行

bulid/host-setup.sh

  

執行 make APP=myjni -B

此時可以看到我們的myjni目錄下多了一個libs目錄 裡面有我們的.so文件

然後將整個libs目錄放到我們的Android工程下

在AndroidManifest.xml裡加上

  1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">   
  2. </uses-permission> 

 

運行我們的代碼

可以看到 在sdcard下面建立了一個zy.txt 裡面的內容是aaaa

轉自:http://blog.csdn.net/Zengyangtech/archive/2010/11/30/6046170.aspx

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved