日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Android技術(shù)2:NDK開(kāi)發(fā)之Helloworld

我們都知道在Android中編寫(xiě)應(yīng)用程序的主要代碼使用Java,然后Java自身某些不足,如Java代碼都運(yùn)行在虛擬機(jī)上面,處理速度相對(duì)C/C++來(lái)說(shuō)比較慢,但是隨便近年來(lái)即時(shí)編譯器,虛擬機(jī)技術(shù)的發(fā)展,Java處理速度有很大的發(fā)展。還有在游戲視頻處理方法,需要短時(shí)間內(nèi)大量的計(jì)算,這個(gè)Java無(wú)法做到;C語(yǔ)言發(fā)展以來(lái)有了很多開(kāi)源的庫(kù),供大家使用,但如果應(yīng)用到android中,為了避免再重新用Java改寫(xiě)的麻煩,Android推出了NDK技術(shù),它能將C語(yǔ)言編譯成Linux下可以運(yùn)行的二進(jìn)制文件(.so)。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了五河免費(fèi)建站歡迎大家使用!

對(duì)于環(huán)境的搭配具體不在介紹,可以參考其他博客文章,已經(jīng)講得非常詳細(xì)了。

1.開(kāi)發(fā)工具

首先簡(jiǎn)單的介紹下開(kāi)發(fā)的工具,在準(zhǔn)備學(xué)習(xí)NDK技術(shù)時(shí),必然之前一些Android方法的基本已經(jīng)大致了解,當(dāng)然已經(jīng)搭配JDK,Eclipse,ADT等工具。如果準(zhǔn)備學(xué)習(xí)NDK還需要下載NDK,下載安裝Cygwin(模擬Linux環(huán)境用的),下載CDT(Eclipse C/C++開(kāi)發(fā)插件)。

2.NDK之Helloworld的步驟介紹

2.1新建android項(xiàng)目

這里我使用項(xiàng)目名:AndroidNDK

包名:com.forsta.ndk; (這里包名需要注意跟后面的c語(yǔ)言函數(shù)名相關(guān))

2.2在工程目錄下,新建目錄文件夾-jni,在這里添加c語(yǔ)言代碼和Andorid.mk

2.3在Java代碼中添加native方法

我在MainActivity中添加 public native String FromCString();

2.4添加c語(yǔ)言代碼

由于C語(yǔ)言代碼函數(shù)名與包名,類名,方法名相關(guān),書(shū)寫(xiě)不變,可以利用javah工具實(shí)現(xiàn)

可以先建立MainActivty.java文件

 
 
 
 
  1. package com.forsta.ndk; 
  2. class MainActivity{ 
  3. public native String FromCString(); 
  4.  
  5. 通過(guò)javac MainActivity.java編譯,獲得MainActivity.class 
  6.  
  7. 然后通過(guò)javah MainActivity 
  8.  
  9. 得到com_forsta_ndk_MainActivity.h 
  10.  
  11. 代碼如下 
  12.  
  13. /* DO NOT EDIT THIS FILE - it is machine generated */ 
  14. #include  
  15. /* Header for class com_forsta_ndk_MainActivity */ 
  16.  
  17. #ifndef _Included_com_forsta_ndk_MainActivity 
  18. #define _Included_com_forsta_ndk_MainActivity 
  19. #ifdef __cplusplus 
  20. extern "C" { 
  21. #endif 
  22. /* 
  23. * Class: com_forsta_ndk_MainActivity 
  24. * Method: FromCString 
  25. * Signature: ()Ljava/lang/String; 
  26. */ 
  27. JNIEXPORT jstring JNICALL Java_com_forsta_ndk_MainActivity_FromCString 
  28. (JNIEnv *, jobject); 
  29.  
  30. #ifdef __cplusplus 
  31. #endif 
  32. #endif 
  33.  
  34. 上面灰色背景即為函數(shù)名 
  35.  
  36. 可以幫.h頭文件放到j(luò)ni目錄下,然后建立Hello.c 
  37.  
  38. #include  
  39. #include  
  40. #include "com_forsta_ndk_MainActivity.h" 
  41.  
  42. /* 
  43. * Class: com_forsta_ndk_MainActivity 
  44. * Method: FromCString 
  45. * Signature: ()Ljava/lang/String; 
  46. */ 
  47. JNIEXPORT jstring JNICALL Java_com_forsta_ndk_MainActivity_FromCString 
  48. (JNIEnv *env, jobject obj){ 
  49.  
  50. return (*env)->NewStringUTF(env,"Hello,I am Forsta from C lib!"); 
  51.  

2.5添加Android.mk

下面是最簡(jiǎn)單的mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := hello
LOCAL_SRC_FILES := hello.c

include $(BUILD_SHARED_LIBRARY)

2.6cygwin下編譯c語(yǔ)言文件

2.6.1Cygwin移動(dòng)到項(xiàng)目工程目錄下

2.6.2使用ndk-build編譯

2.6.3刷新工程

得到obj ,lib目錄

2.7運(yùn)行android程序

2.8點(diǎn)擊Button效果

本文鏈接:http://www.cnblogs.com/forsta/archive/2014/07/30/3878044.html


本文題目:Android技術(shù)2:NDK開(kāi)發(fā)之Helloworld
鏈接分享:http://www.5511xx.com/article/ccsgejg.html