详细分析Android中实现Zygote的源码

2020-01-06 13:36:52丽君
  •   ALOGV("--- registering native functions ---n"); 
  •   env->PushLocalFrame(200); 
  •   if (register_jni_procs(gRegJNI, NELEM(gRegJNI), env) < 0) { 
  • env->PopLocalFrame(NULL);  return -1; 
  • }  env->PopLocalFrame(NULL); 
  •   return 0; 
  • 关键是需要注册JNI函数,具体实现是由register_jni_procs函数实现的,我们来看一下这个函数的具体实现(/frameworks/base/core/jni/AndroidRuntime.cpp):

     

     
    1. static int register_jni_procs(const RegJNIRec array[], size_T count, JNIEnv* env)  { 
    2. for (size_t i = 0; i < count; i ++) {  if (array[i].mProc(env) < 0) { 
    3. #ifndef NDEBUG  ALOGD("------!!! %s failed to loadn", array[i].mName); 
    4. #endif  return -1; 
    5. }  } 
    6.   return 0;