97干视频,99国产精品懂色,亚洲精品99久久久久中文字幕,伊人五月丁香综合AⅤ,国产精品成人免费999

  您的位置:華清遠見教育科技集團 >> 新聞動態(tài) >> Android資料 >> Dalvik虛擬機原生方法的注冊  
 
Dalvik虛擬機原生方法的注冊
分享到:

在創(chuàng)建Dalvik虛擬機的過程中,會調(diào)用dvmCreateJNIEnv()函數(shù)為當前進程的主線程配置運行環(huán)境,初始化可能會調(diào)用的原生方法相關的初始化配置位于gNativeInterface變量中。在配置好運行環(huán)境后,接著就調(diào)用dvmStartup()函數(shù)創(chuàng)建Dalvik虛擬機,并完成相關組件如內(nèi)存跟蹤器(Alloc-Tracker)、垃圾回收器(Garbage Collector)、主線程、DEX優(yōu)化器(DEX optimizer)、Dalvik類校驗器(Dalvik classfile verification)、緩沖(1024bit)、bootstrap 類加載器(bootstrap class loader)、java.lang.Thread等線程,java.lang.Thread等異常類、Hash表、原生代碼加載器(native code loader)、Dalvik原生類(gDvmNativeMethodSet)、java JNI、java/lang/reflect/AccessibleObject等映射類,Profile等。

注冊原生方法的過程主要是通過AndroidRuntime::startReg()在AndroidRuntime:: register_jni_procs()中完成的。注冊原生方法的具體過程如下:

代碼1-1 注冊原生方法

static const RegJNIRec gRegJNI[]={
        REG_JNI(register_android_debug_JNITest),
        REG_JNI(register_com_android_internal_os_RuntimeInit),
        REG_JNI(register_android_os_SystemClock), //系統(tǒng)時鐘
        REG_JNI(register_android_util_EventLog), //事件日志
        REG_JNI(register_android_util_Log), //調(diào)試Log
        REG_JNI(register_android_util_FloatMath),
        REG_JNI(register_android_text_format_Time),
        REG_JNI(register_android_pim_EventRecurrence),
        REG_JNI(register_android_content_AssetManager), //斷言管理器
        REG_JNI(register_android_content_StringBlock),
        REG_JNI(register_android_content_XmlBlock),
        REG_JNI(register_android_emoji_EmojiFactory),
        REG_JNI(register_android_security_Md5MessageDigest),
        REG_JNI(register_android_text_AndroidCharacter),
        REG_JNI(register_android_text_KeyCharacterMap), //按鍵映射
        REG_JNI(register_android_os_Process),
        REG_JNI(register_android_os_Binder), //IBinder通信
        REG_JNI(register_android_os_Hardware),
        REG_JNI(register_android_view_Display),
        REG_JNI(register_android_nio_utils),
        REG_JNI(register_android_graphics_PixelFormat),
        REG_JNI(register_android_graphics_Graphics),
        REG_JNI(register_android_view_Surface), //渲染管理
        REG_JNI(register_android_view_ViewRoot),
        REG_JNI(register_com_google_android_gles_jni_EGLImpl), //OpenGL ES
        REG_JNI(register_com_google_android_gles_jni_GLImpl),
        REG_JNI(register_android_graphics_Bitmap), //2D圖像
        REG_JNI(register_android_graphics_BitmapFactory),
        REG_JNI(register_android_graphics_Camera),
        REG_JNI(register_android_graphics_Canvas),
        REG_JNI(register_android_graphics_ColorFilter),
        REG_JNI(register_android_graphics_DrawFilter),
        REG_JNI(register_android_graphics_Interpolator),
        REG_JNI(register_android_graphics_LayerRasterizer),
        REG_JNI(register_android_graphics_MaskFilter),
        REG_JNI(register_android_graphics_Matrix), //矩陣
        REG_JNI(register_android_graphics_Movie), //動畫
        REG_JNI(register_android_graphics_NinePatch), // NinePatch
        REG_JNI(register_android_graphics_Paint),
        REG_JNI(register_android_graphics_Path),
        REG_JNI(register_android_graphics_PathMeasure),
        REG_JNI(register_android_graphics_PathEffect),
        REG_JNI(register_android_graphics_Picture),
        REG_JNI(register_android_graphics_PorterDuff),
        REG_JNI(register_android_graphics_Rasterizer),
        REG_JNI(register_android_graphics_Region),
        REG_JNI(register_android_graphics_Shader),
        REG_JNI(register_android_graphics_Typeface),
        REG_JNI(register_android_graphics_Xfermode),
        REG_JNI(register_com_android_internal_graphics_NativeUtils),
        REG_JNI(register_android_database_CursorWindow),
        REG_JNI(register_android_database_SQLiteDatabase), //SQL
        REG_JNI(register_android_database_SQLiteDebug),
        REG_JNI(register_android_database_SQLiteProgram),
        REG_JNI(register_android_database_SQLiteQuery),
        REG_JNI(register_android_database_SQLiteStatement),
        REG_JNI(register_android_os_Debug),
        REG_JNI(register_android_os_Exec),
        REG_JNI(register_android_os_FileObserver), //文件系統(tǒng)
        REG_JNI(register_android_os_FileUtils),
        REG_JNI(register_android_os_ParcelFileDescriptor),
        REG_JNI(register_android_os_Power), //電源管理
        REG_JNI(register_android_os_StatFs),
        REG_JNI(register_android_os_SystemProperties),
        REG_JNI(register_android_os_UEventObserver),
        REG_JNI(register_android_net_LocalSocketImpl),
        REG_JNI(register_android_net_NetworkUtils), //網(wǎng)絡管理
        REG_JNI(register_android_net_wifi_WifiManager), //WIFI管理器
        REG_JNI(register_android_os_MemoryFile),
        REG_JNI(register_com_android_internal_os_ZygoteInit), //Zygote虛擬機
        REG_JNI(register_android_hardware_Camera),
        REG_JNI(register_android_hardware_SensorManager), //傳感器管理器
        REG_JNI(register_android_media_AudioRecord), // AudioRecord
        REG_JNI(register_android_media_AudioSystem), // AudioSystem
        REG_JNI(register_android_media_AudioTrack), // AudioTrack
        REG_JNI(register_android_media_JetPlayer),
        REG_JNI(register_android_media_ToneGenerator),
        REG_JNI(register_android_opengl_classes), //3D渲染
        REG_JNI(register_android_bluetooth_Database), //BT
        REG_JNI(register_android_bluetooth_HeadsetBase),
        REG_JNI(register_android_bluetooth_BluetoothAudioGateway),
        REG_JNI(register_android_bluetooth_RfcommSocket),
        REG_JNI(register_android_bluetooth_ScoSocket),
        REG_JNI(register_android_server_BluetoothDeviceService),
        REG_JNI(register_android_server_BluetoothEventLoop),
        REG_JNI(register_android_server_BluetoothA2dpService),
        REG_JNI(register_android_message_digest_sha1),
        REG_JNI(register_android_ddm_DdmHandleNativeHeap),
        REG_JNI(register_android_util_Base64),
        REG_JNI(register_android_location_GpsLocationProvider),
    };

這些原生方法均為Java與底層原生服務的接口,只有對原生方法進行注冊,Dalvik虛擬機才能具備利用底層原生服務的能力。

 更多相關文章

·Android Dalvik虛擬機啟動
·Android服務管理器守護進程
·Android init.rc腳本語
·Android開機啟動過程
·Android進程的生命周期