上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 191 下一页
摘要: 接着来分析函数dvmDefineClass,它的代码如下: ClassObject*dvmDefineClass(DvmDex*pDvmDex, constchar*descriptor, Object*classLoader) { 这个函数输入的参数有三个,第一个pDvmDex参数是表示Dex文件对象,第二个descriptor参数是需要加载类名称,第三个classLoader参数是类的加载对象。 assert(pDvmDex !=NULL); returnfindClassNoInit(descriptor, classLoader, pDvmDex);这行代码调用函数fi... 阅读全文
posted @ 2011-09-12 15:08 ajuanabc 阅读(301) 评论(0) 推荐(0)
摘要: 当在虚拟机里加载Dex文件后,这个文件的数据已经读取到内存里,能不能马上使用呢?能不能使用里面的类呢?显然是不行的,因为那些加载到内存的数据,只是储存的格式,不具备运行的条件,因此需要调用方法defineClass来定义类,才可以运行在虚拟机里。所有Java编译后的类保存在Dex文件里,使用上面介绍的方法openDexFile打开Dex文件,接着需要调用方法defineClass来定义类,其实就是调用原生的函数Dalvik_dalvik_system_DexFile_defineClass, 类的加载流程如下:1)方法openDexFile里通过dvmDexFileOpenFromFd函数调用 阅读全文
posted @ 2011-09-09 22:29 ajuanabc 阅读(336) 评论(0) 推荐(0)
摘要: 演示地址:http://www.corange.cn/demo/3785/index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Conte 阅读全文
posted @ 2011-09-06 12:06 ajuanabc 阅读(118) 评论(0) 推荐(0)
摘要: 在上面的函数里,提到使用dvmJarFileOpen函数找到classes.dex文件,并加载到内存里,然后提供后面的函数使用。现在就来分析这个函数的代码,如下:intdvmJarFileOpen(const char* fileName, const char* odexOutputName, JarFile** ppJarFile, bool isBootstrap){在这里提供四个参数,第一个参数fileName是输入的Jar的文件名称;第二个参数odexOutputName是进行优化后的Dex输出文件;第三个参数ppJarFile是已经打开并缓存到内存里的文件对象;第四个参数isB.. 阅读全文
posted @ 2011-09-04 14:21 ajuanabc 阅读(1215) 评论(0) 推荐(0)
摘要: 从上面可知调用函数Dalvik_dalvik_system_DexFile_openDexFile来打开Dex文件,这个函数的源码如下:staticvoid Dalvik_dalvik_system_DexFile_openDexFile(const u4* args, JValue* pResult){ StringObject* sourceNameObj =(StringObject*) args[0];这行是输入的Jar或Dex文件名参数。 StringObject* outputNameObj =(StringObject*) args[1];这行是输出的文件名参数。 ... 阅读全文
posted @ 2011-09-03 21:46 ajuanabc 阅读(441) 评论(0) 推荐(0)
摘要: function get_weekend_days($start_date,$end_date){ if (strtotime($start_date) > strtotime($end_date)) list($start_date, $end_date) = array($end_date, $start_date); $start_reduce = $end_add = 0; $start_N = date('N',strtotime($start_date)); $start_reduce = ($start_N == 7) ? 1 : 0; $end_N = d 阅读全文
posted @ 2011-08-29 08:58 ajuanabc 阅读(185) 评论(0) 推荐(0)
摘要: 下面来分析这个函数代码,如下:intdexZipPrepArchive(int fd, const char* debugFileName, ZipArchive*pArchive){这个函数输入文件句柄、文件名称、压缩文件对象。 MemMapping map; int err; map.addr = NULL; memset(pArchive, 0, sizeof(*pArchive)); pArchive->mFd = fd;这行代码是保存文件句柄。 if (sysMapFileInShmem(pArchive->mFd,&map) != 0) { er... 阅读全文
posted @ 2011-08-28 09:26 ajuanabc 阅读(604) 评论(0) 推荐(0)
摘要: ORA-02019 错误提示是未找到远程数据库的连接说明,通常发生在本地数据库无法连接到远程数据库。引发该问题的原因很多,比如网络连接,连接方式(tnsnames),dblinkc的创建等等。而下面的描述的故障则比较奇特。一、错误现象 SQL> select * from scanfilename@dss.m85; select * from scanfilename@dss.m85 ORA-02019: 未找到远程... 阅读全文
posted @ 2011-08-15 14:44 ajuanabc 阅读(1417) 评论(0) 推荐(0)
摘要: ORA-02409:超时:分布式事务处理等待锁定ORA-02063一、错误现象与环境 前端应用程序运行时出现下面的错误提示: 事件添加失败:ORA-02409;超时:分布式事务处理等待锁定 ORA-02063:紧接着line(源于ITSPFDB.US.ORACLE.COM) 该应用程序后台对应的数据库为db01(oraclce 8),使用了db link到数据库itspfdb(oracle 9) 下面的SQL信息来自Oracle 8的数据库 SQL> select * from v$version; ... 阅读全文
posted @ 2011-08-15 14:23 ajuanabc 阅读(1341) 评论(0) 推荐(0)
摘要: 我们知道,要读取一个类代码,或读取类里的方法代码,都需要打开Dex文件,然后按前面介绍的格式去分析,并且读取出相应的内容,才可以给虚拟机进行解释执行。现在,我们就来学习和分析Dex文件的读取相关的代码。如下:/* *Open the specified file read-only. We memory-map the entire thingand *parse the contents. * *This will be called on non-Zip files, especially during VM startup,so *we don't want to be too 阅读全文
posted @ 2011-08-05 18:09 ajuanabc 阅读(937) 评论(0) 推荐(0)
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 191 下一页