久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Android源碼學習之如何使用eclipse+NDK

 quasiceo 2012-12-24

網上已經有太多的有關如何配置eclipse+NDK了,,本人就不再重復這些了,,只是想記錄下自己開始寫第一個NDK程序的整個流程(保證可執(zhí)行),共自己和大家分享,。

首先安裝一個能夠支持Native代碼的eclipse插件Sequoyah,,然后在eclipse中的“窗口-首選項-Android”中多出來了一個“本機開發(fā)”選項,在“NDK Location”選擇你的android-ndk的路徑,。有了Sequoyah插件進行Android Native開發(fā)就簡單多了,。下面根據自己的第一個Android Native程序開發(fā)過程,做一個記錄,。

1. 創(chuàng)建Android應用程序MyFirstNativeStore,,過程省去。

2. 創(chuàng)建用來保存int和String類型的

public enum StoreType {
 Integer, String
}和Store類,,該類使用到Native函數,,利用本地語言進行保存和讀取操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.yemeishu.myfirstnativestore.store;
 
public class Store {
 
    static{
        System.loadLibrary("MyFirstNativeStore");
    }
     
    public native int getInteger(String pKey);
    public native void setInteger(String pKey, int pInt);
     
    public native String getString(String pKey);
    public native void setString(String pKey, String pString);
}

 其中在eclipse中會提示“此項目沒有本機庫支持”

這時候可以點開左邊的提示,,選擇“加上本機支持”:

之后會在出現添加本機支持有關的參數名稱(如NDK所在路徑,、生成的lib**.so文件名稱等等)

添加完成之后,在項目中多了一個“jni”文件夾,,該文件夾這時候多出了兩個文件,,如本程序中多了“MyFirstNativeStore.cpp”和“Android.mk”,,有了這兩個文件,我們不用自己手動編寫麻煩的“Android.mk”文件了,。這兩個文件的含義也不用多說了,。

2. 利用javah編譯生成頭文件,首先在eclipse中“運行-外部工具-外部工具配置”選項中配置javah工具:

3. 執(zhí)行外部工具javah,,執(zhí)行完之后,,刷新本工程,會在jni文件夾下自動生成頭文件“com_yemeishu_myfirstnativestore_store_Store.h”(包名+java類名),。

4. 完成一些基本類配置之后,,我們來設計android顯示層,顯示需要導入的store數據和讀取store數據,,設計界面

xml代碼如下:

 在StoreActivity類中 直接獲取控件資源,,設置兩個按鈕的按鍵事件函數onSetValue()和onGetValue。

 兩個函數代碼如下:

 5. 完成了界面設計了,,java層基本完成,現在把注意力放在jni文件夾下,,讀取和保存Store類型的數據的Native層實現了,。

5.1 在文件夾下jni由于沒配置好c++編譯器和NDK命令等,所以自動生成的.cpp和.h等文件出現錯誤,,所以先進行配置,,首先在工程屬性中,在“C/C++ Build”下的“Tool Chain Editor”選擇GCC等工具,。

"C/C++ Build的Builder Settings"中配置"Build command:"直接輸入ndk-build,。

在“Behaviour”中設置

5.2 首先在jni文件夾下創(chuàng)建Store.h文件,主要創(chuàng)建一些保存Store類型,、Store數組等枚舉,、結構體等信息,直接上代碼(你肯定能看得懂):

 這里還定義了一些操作Store類型信息的操作函數,,如findEntry()查找保存在pStore鏈表中的Store數據,,并返回StoreEntry結構數據,即數據的key,、數據類型(int和string類型)和數據值,。具體實現函數在jni文件夾下創(chuàng)建Store.c類中實現,代碼如下:

5.3 完成了基本Store操作之后,,現在開始完成連接java和Native橋梁的“MyFirstNativeStore.cpp”(還記得吧,?),在該類中直接實現由javah外部工具生成的“com_yemeishu_myfirstnativestore_store_Store.h”的頭文件定義的四個函數,,“com_yemeishu_myfirstnativestore_store_Store.h”中的四個函數定義如下顯示

 具體實現函數代碼如下

 5.4 最后修改下自動生成的Android.mk文件,,將Store.c也包含進去

LOCAL_PATH := $(call my-dir)
 
include $(CLEAR_VARS)
 
LOCAL_MODULE    := MyFirstNativeStore
### Add all source file names to be included in lib separated by a whitespace
LOCAL_SRC_FILES := MyFirstNativeStore.c Store.c
 
include $(BUILD_SHARED_LIBRARY)

 6. 編譯、執(zhí)行。結果省去,。

利用NDK進行Android編程,,主要流程為:

一、編寫Android程序,,創(chuàng)建需要利用Native編寫的實現函數類(包含native關鍵字的函數,,和static{System.loadLibrary("xxx")})。

二,、利用javah外部工具生成包含Native函數的頭文件(頭文件名為:包名+函數名稱),。

三、通過“本機開發(fā)”(eclipse插件Sequoyah)自動生成Android.mk文件和實現Native函數的.c或者.cpp文件,,實現函數功能,。

四、利用Android提供的“Android GCC”或者“Cygwin GCC”或者“MinGW GCC”等工具和NDK-build編譯Native函數,,生成lib***.so(windows下)庫文件,。

五、完成實現java與Native的函數調用和回調,、結果返回等,。

 7. 最后提供源碼程序:MyFirstNativeStore 和插件sequoyah(org.eclipse.sequoyah.feature.2.0.0.I20110609-0753)

 

 

標簽: JNI, Android, ndk

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內容中的聯系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現有害或侵權內容,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多