自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android技術2:NDK開發(fā)之Helloworld

移動開發(fā) Android
我們都知道在Android中編寫應用程序的主要代碼使用Java,然后Java自身某些不足,如Java代碼都運行在虛擬機上面,處理速度相對C/C++來說比較慢,但是隨便近年來即時編譯器,虛擬機技術的發(fā)展,Java處理速度有很大的發(fā)展。

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

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

1.開發(fā)工具

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

2.NDK之Helloworld的步驟介紹

2.1新建android項目

這里我使用項目名:AndroidNDK

包名:com.forsta.ndk; (這里包名需要注意跟后面的c語言函數名相關)

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

2.3在Java代碼中添加native方法

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

2.4添加c語言代碼

由于C語言代碼函數名與包名,類名,方法名相關,書寫不變,可以利用javah工具實現

可以先建立MainActivty.java文件

  1. package com.forsta.ndk; 
  2. class MainActivity{ 
  3. public native String FromCString(); 
  4.  
  5. 通過javac MainActivity.java編譯,獲得MainActivity.class 
  6.  
  7. 然后通過javah MainActivity 
  8.  
  9. 得到com_forsta_ndk_MainActivity.h 
  10.  
  11. 代碼如下 
  12.  
  13. /* DO NOT EDIT THIS FILE - it is machine generated */ 
  14. #include <jni.h> 
  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. 上面灰色背景即為函數名 
  35.  
  36. 可以幫.h頭文件放到jni目錄下,然后建立Hello.c 
  37.  
  38. #include <stdio.h> 
  39. #include <jni.h> 
  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

下面是最簡單的mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := hello
LOCAL_SRC_FILES := hello.c

include $(BUILD_SHARED_LIBRARY)

2.6cygwin下編譯c語言文件

2.6.1Cygwin移動到項目工程目錄下

2.6.2使用ndk-build編譯

2.6.3刷新工程

得到obj ,lib目錄

2.7運行android程序

2.8點擊Button效果

 

 

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

責任編輯:chenqingxiang 來源: apkbus
相關推薦

2022-02-21 15:38:57

Openharmon操作系統鴻蒙

2020-11-10 11:58:17

鴻蒙應用開發(fā)

2013-01-16 15:07:30

Android NDKAndroid開發(fā)

2013-01-06 12:23:59

Android開發(fā)SQLite數據庫

2013-01-16 16:56:36

Android開發(fā)NDKSDK

2013-12-27 09:54:58

Android開發(fā)NDK

2021-02-28 10:11:31

HelloWorldSSMSpringboot

2013-03-29 10:24:44

NDK隱藏敏感信息Android

2017-04-26 11:00:34

Spring BootHelloWorld詳解

2018-03-15 11:50:53

機器學習入門Tensorflow

2010-08-11 10:58:06

AndroidAndroid NDK

2014-03-31 15:32:36

AndroidNDK開發(fā)

2013-09-16 15:42:00

Android優(yōu)化界面UI

2020-11-23 09:32:43

WIFI連接

2024-05-14 08:33:57

Native API鴻蒙工具

2024-05-21 10:23:02

反射技術.NET編程語言

2009-03-16 15:00:16

阿里軟件旺旺軟件平臺SaaS

2014-07-01 11:31:35

NDKSO庫JNI調用

2021-12-30 10:43:21

Android函數Crash

2022-02-15 14:06:36

OpenHarmon操作系統鴻蒙
點贊
收藏

51CTO技術棧公眾號