編輯:關於Android編程
NDK是一個工具集,可讓您實現您的應用程序使用本機代碼的語言,如C和C + +。Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google稱為“NDK”。
在此之前,Android平台的第三方應用程序均是依靠基於Java的Dalvik特制虛擬機進行開發的。原生SDK的公布可以讓開發者更加直接的接觸Android系統資源,並使用傳統的C或C++語言編寫程序,並在程序封包文件(.apks)中直接嵌入原生庫文件。
NDK的公布可以讓開發者更加直接的接觸Android系統資源,並使用傳統的C或C++語言編寫程序,並在程序封包文件(.apks)中直接嵌入原生庫文件。NDK的公布讓原來從事C語言開發者也參與到Android平台,也讓java開發者方便的調用底層操作,特別是游戲開者,對引擎,速度等要求較高者,有了新的工具來實現所需功能,做出更加完美的程序。
對於某些類型的應用程序,這可以是有益的,所以你可以重用現有的代碼庫,這些語言編寫的,但大多數應用程序不需要NDK。
Android NDK R9 主要是為了Android 4.3開發准備的。
隨著Android 4.3平台的發布,谷歌還發布了Android NDK (r9)的更新版本。新的NDK允許你本地訪問Android 4.3中的OpenGL ES 3.0 API以及其他穩定的API。如果你在游戲或應用中使用了高性能圖形功能,可以采用該版本。
Android NDK全稱:Native Development Kit,即本地開發包。
1、NDK是一系列工具的集合。
NDK提供了一系列的工具,這些工具對開發者的幫助是巨大的。它們能幫助開發者快速開發C(或C++)的動態庫,並能自動將so庫和java應用一起打包成apk。
NDK集成了交叉編譯器,並提供了相應的mk文件隔離CPU、平台、ABI等差異,開發人員只需要簡單修改mk文件(指出“哪些文件需要編譯”、“編譯特性要求”等),就可以創建出so庫。NDK可以自動地將so和Java應用一起打包,極大地減輕了開發人員的打包工作。
2、NDK提供了一份穩定、功能有限的API頭文件聲明。Google明確聲明該API是穩定的,在後續所有版本中都穩定支持當前發布的API。從該版本的NDK中看出,這些API支持的功能非常有限,包含有:C標准庫(libc)、標准數學庫(libm)、壓縮庫(libz)、Log庫(liblog)。
對於Windows環境下NDK的開發,如果使用的NDK是r7之前的版本,必須要安裝Cygwin才能使用NDK;從r7開始,Google的提供了一個ndk-build.cmd的腳本,可以直接用它編譯,而不需要使用Cygwin了。可以通過,配置path變量,直接在cmd下面運行ndk-build命令即可對android工程中的項目進行編譯了。
1,JAVA_HOME : C:Program Files (x86)Javajdk1.7.0_17 (jdk的安裝目錄)
2,CLASSPATH: .;%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar (固定不變)
3,ANDROID_NDK_HOME: D:android-ndk-r9d (ndk的解壓的目錄)
4,PATH: 將這 “%JAVA_HOME%in; %ANDROID_NDK_HOME%;”加到原有的後面。
5,test
在 cmd 中 輸入 java –version,ndk-build –h ,沒有出現
“xxx不是內部或外部命令”即成功
Android NDK開發教程(請按照教程順序操作,本人親測)
工具環境(Android Developer Tools,android-ndk-r9d,Android4.3 API18)
1, 在 ant中(eclipse),新建一個android項目(NDKhi)。
2, 在 src下的com.example.ndkhi 新建 jniClient.java 文件。
此文件作用:
1,加載本地C庫文件(.so)。
2,聲明本地C庫中的方法(static public native String sayHi())。
jniClient.java源碼:
package com.example.ndkhi;
public class jniClient {
static {
System.loadLibrary(Ndkhi);
}
static public native String sayHi();
}
3, 編譯android文件
eclipse默認自動編譯。在目錄 workspaceNDKhiinclassescomexample dkhi 中 查找 jniClient.class 文件是否存在,若不存在,手動編譯android工程。
4, 使用 javah 工具 生成 c語言的.h頭文件
在 工程NDKhi 中建立一個 名為 jni 的文件夾,打開window cmd,cd到jni目錄下,
輸入 javah –classpath ../bin/classes/com.example.ndkhi ,若命令執行成功,會在jni目錄中生成 com_example_ndkhi_jniClient.h 文件。
刷新 eclipse中的工程NDKhi,即可見com_example_ndkhi_jniClient.h 文件。
com_example_ndkhi_jniClient.h源碼(此文件為自動生成,一般不用修改):
/* DO NOT EDIT THIS FILE - it is machine generated */
#include
/* Header for class com_example_ndkhi_jniClient */
#ifndef _Included_com_example_ndkhi_jniClient
#define _Included_com_example_ndkhi_jniClient
#ifdef __cplusplus
extern C {
#endif
/*
* Class: com_example_ndkhi_jniClient
* Method: sayHi
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_example_ndkhi_jniClient_sayHi
(JNIEnv *, jclass);
#ifdef __cplusplus
}
#endif
#endif
5, 編寫c語言程序
在jni目錄下,新建 名為 com_example_ndkhi_jniClient..c 的文件,實現 com_example_ndkhi_jniClient.h中聲明的函數即可。
com_example_ndkhi_jniClient..c源碼:
#include
JNIEXPORT jstring JNICALL Java_com_example_ndkhi_jniClient_sayHi
(JNIEnv *env, jclass arg)
{
return (*env)->NewStringUTF(env, android ndk hi!!!);
}
6,Android.mk 文件(簡單理解為 makefile)
在 jni目錄下,新建 名為Android.mk 文件。
內容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Ndkhi
LOCAL_SRC_FILES := com_example_ndkhi_jniClient.c
include $(BUILD_SHARED_LIBRARY)
修改xxx.c文件,和 Ndkhi 為自己新建的.c文件,的要生成的.so
7, 編譯,鏈接C程序
打開windows cmd,cd到 workspaceNDKhi 目錄下,輸入 ndk-build 命令
若成功如下圖:
編譯鏈接成功後,會在 工程NDKhi的libs/armeabi/下 生成 libNdkhi.so,
8, 編寫MainActivity.java。
源碼:
package com.example.ndkhi;
import android.os.Bundle;
import android.R.string;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView tView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tView = (TextView) findViewById(R.id.tv);
String strHi = jniClient.sayHi();
tView.setText(strHi);
}
}
9,運行android 工程 NDKhi
四大組件的運行狀態: Android中的四大組件中除了BroadcastReceiver以外,其他三種組件都必須在Android Mainfrst中注冊。對於,Bro
Android開發中常用的數據庫有5個:1.OrmLiteOrmLite 不是 Android 平台專用的ORM框架,它是Java ORM。支持JDBC連接,Spring
本文實例講述了Android使用ActionBar和ViewPager切換頁面,分享給大家供大家參考。具體如下:運行效果截圖如下:項目布局如下:具體代碼如下:MainAc
今天做項目時,要求更改程序的包名。於是經過查資料與摸索。情況1:直接修改包名的“尾巴”,也就是包名的最後一級。比如:一個包名叫zzjr.com.t
國際慣例,先來效果圖 在閱讀本文章之前,請確定熟悉【Scrol