Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 初級開發 >> Android NDK開發技巧一

Android NDK開發技巧一

編輯:初級開發

平時我們開發Android應用時可能部分要求由於性能問題需要使用NDK來實現,比如OpenGL、OpenCore這樣的多媒體應用,使用本地C/C++語言可以處理一些性能敏感或復雜的算法,android123就我們日常NDK開發中遇到的問題以及技巧逐一總結方便網友查閱。

     1. Android NDK編譯的應用可以運行在Android 1.5或更高的操作系統上,在android平台中本地調用主要通過JNI方式處理,JNI調用開銷不小如果很簡單的操作沒有必要畫蛇添足。

     2. 一般NDK生成的so文件如何打包到apk中去呢?一般工程目錄下創建一個libs文件夾,當然了手動釋放也可以比如說 data/data/cn.com.android123.cwj/files/rmvb-decoder.so

     3. 在JNI下面,我們常用的命名方式:

    static JavaVM *g_VM;   //全局環境指針

    static jclass jNativesClass;

  (*env)->GetJavaVM(env, &g_VM);   //獲取env環境指針,這樣以後用g_VM就可以了。

     4.   jobjectArray jargv // Java數組

int getArrayLen(JNIEnv * env, jobjectArray jarray): //獲取一個Java數組長度,返回為JSize類型

jstring jele = (JString)(*env)->GetObjectArrayElement(env, jargv, n);  //從將Java數組元素n轉為本地的JString
const char *Word = (*env)->GetStringUTFChars(env, jele, 0); //將Java的utf字符轉為c下面的char*

   5.  記住釋放內存,這不是Java

  (*env)->ReleaseStringUTFChars(env, jele, Word); 

   6. 有關Java類命名方式

    (LJava/lang/String;I)V   其中本句

 I = Integer
B = Byte
S = Short
C = Char
LXXX; = L加上類名

  7. JNI本身沒有什麼技術含量,android123提醒大家,會C語言的網友只需要知道Java和C/C++中如何通過JNI相互傳輸數據即可。

  8. JNI和Java如何傳遞大型數據呢,其實變通的方法可以通過共享一個文件方式處理一些大型數據。

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved