在创建Dalvik虚拟机的过程中,会调用dvmCreateJNIEnv()函数为当前进程的主线程配置运行环境,初始化可能会调用的原生方法相关的初始化配置位于gNativeInterface变量中。在配置好运行环境后,接着就调用dvmStartup()函数创建Dalvik虚拟机,并完成相关组件如内存跟踪器(Alloc-Tracker)、垃圾回收器(Garbage Collector)、主线程、DEX优化器(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),  			//系统时钟
            REG_JNI(register_android_util_EventLog),				//事件日志
            REG_JNI(register_android_util_Log),					//调试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),				//文件系统
            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),				//网络管理
            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虚拟机才能具备利用底层原生服务的能力。