国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Android NDK初探 你也可以做移動開發

移動開發 Android
本文將為各位詳細介紹Android NDK的安裝、使用和實戰。由淺入深,你也可以成為一名Android開發者!

51CTO曾介紹Android開發WebView組件的使用詳解,本文將為各位詳細介紹Android NDK的安裝、使用和實戰。我下載的是Android Native Developer Kit (NDK) R4版本,當前的最新版。

Android NDK
Android NDK

下載地址如下: http://dl.google.com/android/ndk/android-ndk-r4b-linux-x86.zip

我下面講的都是以linux環境為準,因為我的系統是linux的。windows下可以弄個Cygwin,模擬linux環境。

首先進入NDK目錄,有個README文件,里面提到了API的文檔在docs/STABLE-APIS.TXT里面,如何安裝NDK,參考docs/INSTALL.TXT,還有如何使用NDK,參考docs/HOWTO.TXT。建議這些文檔都看一遍,有個大概了解。

安裝: 

INSTALL.TXT里面講的是如何安裝,安裝NDK,就需要一個可以make環境,linux自帶了,所以不用關心。還有一點,以前的版本都需要運行build/host-setup.sh來進行初始化,這個版本把它刪除了,這樣更方便。

然后就是配置環境變量。

在~/.bashrc文件里面,添加Shell代碼

NDK_ROOT=~/android-ndk-r4b #后面的路徑是NDK所在的目錄,根據自己的目錄修改  export NDK_ROOT 

然后保存,重新打開bash。

使用: 

先拿sample試刀吧,剛開始什么都不知道,只有運行出一個例子,才能增加信心。

編譯的兩種方法:

1.進入要目標工程目錄,比如$NDK_ROOT/samples/hello-jni,然后執行$NDK_ROOT/ndk-build

2.在任何地方,執行$NDK_ROOT/ndk-build -C $NDK_ROOT/samples/hello-jni.

如果成功的話,會生成obj和libs兩個目錄。

選擇一種方法,編譯這個例子。然后打開eclipse,把hello-jni這個工程導入,運行,ok,就能看到效果了。

進階: 

docs下的STABLE-APIS.TXT里面講了系統API的用法。我以1.5為例。進入$NDK_ROOT/build/platforms/android-3/arch-arm/usr/include,里面有很多.h文件,這些都是可以在NDK里面調用的,除了linux和asm目錄下的。

一般來說,主要用到的是jni.h,里面提供了很多對類和對象的操作。

另外,1.5提供了log的API,在android/log.h里面,使用的時候,在c文件中#include <android/log.h>,然后在Android.mk里面加上LOCAL_LDLIBS := -llog,就可以了。

1.6到2.01提供了openGL ES 1.x的API,2.1提供了openGL ES 2.0的API,2.2提供了graphics的處理接口。使用方法同log。

實例: 

給出兩個點的坐標,求它們的距離。

首先,創建一個Point對象,

Java代碼 

  1. public class Point {    
  2.     float x;    
  3.     float y;    
  4. }    
  5.    
  6.  

然后在c文件中定義一個函數  

C代碼 

  1. jfloat Java_chroya_demo_ndk_Main_distance(JNIEnv* env, jobject thiz, jobject a,jobject b){}   

返回值是float,在jni中定義的是jfloat。

函數名規則: Java開頭,接著是包名的每一段,然后是類名,最后是Java中調用的方法名,中間都用下劃線隔開。第一個參數JNIEnv* env和第二個參數jobject thiz都是必須的,后面的才是Java中傳遞進來的參數。這里是兩個Point對象。

首先確定要做的步驟:

◆找到這個Point類

◆找到類中的域x和y的域id

◆根據ID取出x和y的值

◆計算結果并返回

那么代碼如下:

Java代碼 

  1. #include <jni.h>    
  2. #include <math.h>    
  3. #include <android/log.h>    
  4.     
  5. jfloat Java_chroya_demo_ndk_Main_distance(JNIEnv* env, jobject thiz, jobject a,jobject b)    
  6. {    
  7.         //步驟1    
  8.     jclass point_class = (*env)->FindClass(env, "chroya/demo/ndk/Point");    
  9.     if(point_class == NULL) {    
  10.         //printf("class not found");    
  11.         __android_log_write(ANDROID_LOG_INFO, "MyNdkDemo", "class Point not found");    
  12.         return 0;    
  13.     } else {    
  14.         __android_log_write(ANDROID_LOG_INFO, "MyNdkDemo", "found class Point");    
  15.     }    
  16.         //步驟2    
  17.     jfieldID field_x = (*env)->GetFieldID(env, point_class, "x", "F");    
  18.     jfieldID field_y = (*env)->GetFieldID(env, point_class, "y", "F");    
  19.         //步驟3    
  20.     jfloat ax = (*env)->GetFloatField(env, a, field_x);    
  21.     jfloat ay = (*env)->GetFloatField(env, a, field_y);    
  22.     jfloat bx = (*env)->GetFloatField(env, b, field_x);    
  23.     jfloat by = (*env)->GetFloatField(env, b, field_y);    
  24.         //步驟4    
  25.     return sqrtf(powf(bx-ax, 2) + powf(by-ay, 2));    
  26. }   
  27.  

然后在Java里面調用:

Java代碼 

  1. public class Main extends Activity {    
  2.        
  3.     @Override    
  4.     public void onCreate(Bundle savedInstanceState) {    
  5.         super.onCreate(savedInstanceState);    
  6.         TextView tv = new TextView(getApplicationContext());    
  7.         Point a = new Point();    
  8.         a.x = 3;    
  9.         a.y = 3;    
  10.             
  11.         Point b = new Point();    
  12.         b.x = 5;    
  13.         b.y = 5;    
  14.             
  15.         float d = distance(a,b);    
  16.         tv.setText("distance(a,b):"+d);    
  17.         setContentView(tv);    
  18.     }    
  19.         
  20.     public native float distance(Point a, Point b);    
  21.         
  22.     static {    
  23.         System.loadLibrary("demo");    
  24.     }    
  25. }    
  26.  

運行,得到結果distance(a,b):2.828427

源碼參見附件 。

【編輯推薦】

  1. Android平臺值得關注的開源項目 
  2. Android系統搜索對話框設計妙招 
  3. Android開發之WebView組件的使用詳解 
責任編輯:佚名 來源: Javaeye論壇
相關推薦

2012-03-16 13:43:29

2010-10-09 15:01:27

PhoneGapiPhoneAndroid

2011-06-16 10:25:29

AndroidAIR

2021-06-16 09:10:29

APP開發AndroidiOS

2019-06-28 12:34:34

Python情感分析NLP

2010-08-03 10:32:42

Android 3.0Android 3.0Android開發

2022-07-21 10:02:47

SonarQube代碼Java

2013-01-16 15:07:30

Android NDKAndroid開發

2010-08-18 09:23:19

Flash Lite移動應用程序開發

2013-12-27 09:54:58

Android開發NDK

2011-01-11 11:35:17

jQueryAndroidgoogle

2024-09-24 17:12:47

2012-10-08 10:18:11

2010-08-23 08:26:12

Android超算

2014-07-30 16:43:49

Android

2009-10-30 10:45:45

ScalaEclipseAndroid

2019-01-15 14:41:06

數據分析新聞聯播統計分析

2011-08-02 11:06:55

2014-10-22 13:37:44

開發者程序員

2015-10-10 10:52:53

移動游戲開發
點贊
收藏

51CTO技術棧公眾號

亚洲精品一区在线观看| 麻豆传媒一区二区| 成人日韩在线观看| 欧美超级乱淫片喷水| 亚洲图片欧美| 屁屁影院在线观看| 久草在.com| 国产欧美视频在线观看| 在线人成日本视频| 狠狠色狠狠色综合日日小说| av资源网在线播放| 国产欧亚日韩视频| 国内精品在线播放| 青青国产在线| 欧美精品成人91久久久久久久| 国产日韩高清一区二区三区在线| 十八禁视频网站在线观看| 欧美日韩一区二区电影| 精品国产午夜肉伦伦影院| 亚洲精品二区| 色狠狠一区二区| 国产剧情一区二区在线观看| 免费久久一级欧美特大黄| 亚洲免费伊人电影| 欧美视频免费看| 日本视频一区二区不卡| 亚洲sss视频在线视频| 精品久久亚洲| 亚洲永久一区二区三区在线| 欧美视频中文在线看| 超碰精品在线| 成人欧美一区二区三区小说| 网友自拍视频在线| 性欧美疯狂xxxxbbbb| 99草草国产熟女视频在线| 高清免费成人av| 国产视频福利在线| 欧美日韩亚洲视频一区| 在线免费黄色| 精品国产1区2区3区| 青春有你2免费观看完整版在线播放高清| 精品播放一区二区| 久久99爱视频| 亚洲国产精品嫩草影院久久| 亚洲蜜桃视频| 亚洲黄色av网址| 国产一区二区三区欧美| 日本美女一区二区三区视频| 成人不用播放器| 国产精品尤物福利片在线观看| 国产精品免费99久久久| 亚洲欧美一区二区三区在线播放| 亚洲国产免费av| 66久久国产| 欧美a级免费视频| 国产精品久久久久毛片软件| 欧美videos粗暴| 国产精品电影观看| 五月婷婷亚洲| 国产激情视频一区| 亚洲xxx拳头交| 可以免费看污视频的网站| 亚洲五月天综合| 911精品产国品一二三产区| 天天影视欧美综合在线观看| 蜜芽视频在线观看| 亚洲综合成人婷婷小说| 色狠狠色狠狠综合| 一本久道久久综合狠狠爱| jizz在线观看视频| 久久国产精品亚洲va麻豆| 日韩三级电影网址| 极品少妇一区二区三区精品视频 | 黄色大片在线看| 亚洲aa中文字幕| 欧美在线观看视频一区二区| 夜久久久久久| 欧美xxxx做受欧美88bbw| 亚洲黄色一区二区三区| 国产一级久久| 欧美日韩免费做爰大片| 2019中文在线观看| 成人免费视频a| 亚洲精品中文字幕在线观看| 九一亚洲精品| 成r视频免费观看在线播放| 国产欧美va欧美va香蕉在线| 91福利在线观看| 日本欧美一区二区| 成人国产网站| 国产对白国语对白| 97久久夜色精品国产九色| 精品欧美一区二区久久| 成人性生交大片| 国产精品极品国产中出| 桥本有菜亚洲精品av在线| 国产一区二区不卡视频| 精品视频一区在线视频| 国产午夜三级一区二区三| 成人在线亚洲| 91精品大全| 欧洲精品视频在线| 欧美极品美女视频网站在线观看免费 | 熟女人妇 成熟妇女系列视频| 69久久夜色精品国产7777 | 狠狠躁夜夜躁人人躁婷婷91| 99在线精品视频在线观看| 亚洲黄色免费看| 色婷婷亚洲十月十月色天| 亚洲一区二区三区在线视频| 亚洲成人激情在线| 国产精品久久99| 国产精品v欧美精品v日本精品动漫| 中国色在线日|韩| 激情视频网址| 亚洲第一精品区| 欧美专区福利在线| 日韩一区二区高清| 国产精品色呦呦| 久久一区国产| 欧美日韩麻豆| 亚洲精品白浆| 欧美1819sex性处18免费| 久久爱av电影| 久久久久久久97| 777午夜精品视频在线播放| 久久亚洲欧美国产精品乐播 | 久久精品国产电影| 色综合久久精品| 国产成人啪免费观看软件| 久久日韩精品一区二区五区| 韩国亚洲精品| 粉嫩91精品久久久久久久99蜜桃| 91露出在线| 男女羞羞网站| 欧美日韩在线免费播放| 精品久久精品久久| 日韩美女视频免费在线观看| 亚洲精品一区二区三区精华液| 亚洲免费在线视频一区 二区| 国产一二精品视频| 成人动漫一区二区在线| 人交獸av完整版在线观看| 激情内射人妻1区2区3区 | 国产一二区在线观看| 国产免费人做人爱午夜视频| 国产精品一区二区三区四区五区 | 91精品国产吴梦梦| 91老司机精品视频| 不卡av电影院| 日韩电影第一页| 在线观看日韩av先锋影音电影院| 91毛片在线观看| 日韩一区欧美二区| 国产精品不卡| y111111国产精品久久久| 精精国产xxxx视频在线野外| 夜色福利资源站www国产在线视频| aa在线免费观看| 亚洲午夜精品一区二区| 国产超碰91| 国产成人啪精品视频免费网| 精品国产自在精品国产浪潮| 日韩欧美中文一区二区| 欧美日韩国产黄| 国产精品婷婷午夜在线观看| 成人午夜激情在线| 久久精品国产秦先生| 激情文学一区| 久久国产成人午夜av影院宅| 卡通动漫国产精品| 秋霞午夜一区二区三区视频| 亚洲精品福利电影| 丰乳肥臀在线| 182tv在线播放| 国产免费视频在线| 亚洲精品一区视频| 毛片视频免费观看| 国产色视频网站| 五月婷婷开心综合| 日本精品久久久久中文字幕| 精品视频免费在线播放| 免费在线看黄色片| 男女日批视频在线观看| 狠狠噜天天噜日日噜| 真实国产乱子伦对白视频| 中文字幕の友人北条麻妃| 中国老女人av| 在线观看福利一区| 99精品视频网站| 加勒比海盗1在线观看免费国语版| 伊人精品久久久久7777| 亚洲国产午夜伦理片大全在线观看网站 | 在线观看91视频| 在线观看中文字幕不卡| 在线免费观看一区| 3d成人h动漫网站入口| 欧美一二三四在线| 日韩成人av网| 神马久久桃色视频|