0

我的问题与我之前的问题有关:

如何通过.apk传递dalvik命令行参数?

Android 应用程序的验证和优化已关闭。

我仍然想在便携式dalvik 模式下启动我的 Android 应用程序。据我了解,不可能设置一些清单规则来实现这个勇敢的目标。

于是我决定换dalvik虚拟机!

我决定在文件/dalvik/vm/DvmDex.cpp中更改此功能:

int dvmDexFileOpenFromFd(int fd, DvmDex** ppDvmDex)
{
    ...

    //MY CODE
    if (... file is my) {
        ALOGI("dvmDexFileOpenFromFd: changing mode to portable\n");
        gDvm.executionMode = kExecutionModeInterpPortable;
    }
    //MY CODE - END


    ...
}

看来,一切正常。消息“dvmDexFileOpenFromFd:将模式更改为可移植”在 Android 日志中。 “init”方法在便携模式下执行。但!某些不明原因的“onCreate”方法在快速模式下执行。

我不知道发生了什么,因为据我所知,android 应用程序应该在它自己的进程中使用它自己的 dalvik 执行。

那么有人可以阐明这个问题吗?

为什么我的应用程序的一部分以快速模式执行,而另一部分以便携模式执行?

如果可能的话,我应该怎么做才能强制 dalvik仅在我的应用程序中以便携模式运行?

4

0 回答 0