APK加载工作流文档

时间:2014-04-22 20:49:05

标签: android

是否有任何文档可以找到如何加载APK,调用哪些组件以及使用哪些参数?我对合子以及DVM如何收到APK感兴趣。

1 个答案:

答案 0 :(得分:0)

没有相关文档,因为它不是公共API。这是实施细节,这意味着它可以随时改变。

虽然您可以做的最好的事情是查看平台的代码。

例如,当您在启动器中点击图标时调用应用程序的意图时,系统会识别它属于您的应用程序,首先需要确定是否已创建Application对象。如果不是 - 做吧。它通过使用类加载器来进行反射,类加载器是上下文类的成员。

看看LoadedApk.java

if (mApplication != null) { return mApplication; } ... java.lang.ClassLoader cl = getClassLoader(); app = mActivityThread.mInstrumentation.newApplication( cl, appClass, appContext);

根据我的经验创建应用程序后,还会创建内容提供程序,最后创建与您的意图相关的活动。

关于apk如何与DVM一起使用的问题,我相信它与ApplicationLoaders类有关:

PathClassLoader pathClassloader = new PathClassLoader(zip, libPath, parent);

DexClassLoader类接受一个实际上是带有classes.dex的zip文件。 LibPath 是.so文件的路径, parent 是父类加载器 - 所有系统的东西都是zygote预先知道的,并且首先引导整个事物。