乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      android NDK JNI

       dddTTLee 2011-05-03
       
       
      目前Android NDK只能編譯出動態(tài)庫.so文件,并不是能生成.apk文件,這里我們簡單介紹下NDK中的Hello JNI列子。整個例子分Java和Native C兩個部分。首先是我們常用的Java端調(diào)用部分。  package com.example.hellojni;
      import android.app.Activity;
      import android.widget.TextView;
      import android.os.Bundle;
      public class HelloJni extends Activity
      {
          @Override
          public void onCreate(Bundle savedInstanceState)
          {
              super.onCreate(savedInstanceState);
              TextView  tv = new TextView(this);
              tv.setText( stringFromJNI() ); //如果調(diào)用失敗將會拋出 java.lang.UnsatisfiedLinkError異常
              setContentView(tv);
          } //注意下面的native關(guān)鍵字
          public native String  stringFromJNI();
          public native String  unimplementedStringFromJNI();
           static {
              System.loadLibrary("hello-jni"); //載入hello-jni庫
          }  
      }
      需要注意的是這里必須設(shè)置SDK版本為1.5或以上版本即在androidmanifest.xml文件中指明<uses-sdk android:minSdkVersion="3" /> 這里我們看到JNI調(diào)用無需特殊的權(quán)限。
      而在Native C/C++中我們可以直接使用C++庫,不過這里包含了jni這個頭文件。
      #include <string.h>
      #include <jni.h>
      其中下面的返回類型jstring是VM String,在jni.h頭文件中有定義
      jstring Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz )
      {
          return (*env)->NewStringUTF(env, "Hello from JNI, Android123 Test!");
      }
      其實(shí)很好理解的,僅僅是換個了別名而以,定義如下
      typedef uint8_t         jboolean;       /* unsigned 8 bits */
      typedef int8_t          jbyte;          /* signed 8 bits */
      typedef uint16_t        jchar;          /* unsigned 16 bits */
      typedef int16_t         jshort;         /* signed 16 bits */
      typedef int32_t         jint;           /* signed 32 bits */
      typedef int64_t         jlong;          /* signed 64 bits */
      typedef float           jfloat;         /* 32-bit IEEE 754 */
      typedef double          jdouble;        /* 64-bit IEEE 754 */
      #else
      typedef unsigned char   jboolean;       /* unsigned 8 bits */
      typedef signed char     jbyte;          /* signed 8 bits */
      typedef unsigned short  jchar;          /* unsigned 16 bits */
      typedef short           jshort;         /* signed 16 bits */
      typedef int             jint;           /* signed 32 bits */
      typedef long long       jlong;          /* signed 64 bits */
      typedef float           jfloat;         /* 32-bit IEEE 754 */
      typedef double          jdouble;        /* 64-bit IEEE 754 */
      #endif

      typedef jint            jsize;
      還有一些調(diào)用平時注意的聲明
      #define JNI_FALSE   0
      #define JNI_TRUE    1
      #define JNI_VERSION_1_1 0x00010001
      #define JNI_VERSION_1_2 0x00010002
      #define JNI_VERSION_1_4 0x00010004
      #define JNI_VERSION_1_6 0x00010006
      #define JNI_OK          (0)         /* no error */
      #define JNI_ERR         (-1)        /* generic error */
      #define JNI_EDETACHED   (-2)        /* thread detached from the VM */
      #define JNI_EVERSION    (-3)        /* JNI version error */
      #define JNI_COMMIT      1           /* copy content, do not free buffer */
      #define JNI_ABORT       2           /* free buffer w/o copying back */
      #define JNIIMPORT
      #define JNIEXPORT
      #define JNICALL

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多