App启动流程

前言 作为 Android 用户,我们会点击桌面图标,然后一个 app 就启动了了,在这个过程中到底发生了什么呢?换句话说 Android app 是怎么启动的呢?如果和我有一样的好奇,我

Activity启动流程

前言 作为Android开发,我们经常会写startActivity方法,这样我们就可以启动Activity了,在这个过程中到底发生了什么呢?

AndroidPlugin源码解析-(九)

前言 前面我们分了 8 篇讲解整个 Android Apk 的打包过程,可以说我们中间几篇文章都是只见树木不见森林,研究了其中的细节,但缺少对这个过程的整体把握,这篇文

AndroidPlugin源码解析-(八)

这篇文章我们就来看看打包过程中最后一个方法createPackagingTask createPackagingTask public void createPackagingTask(@NonNull TaskFactory tasks, @NonNull VariantScope variantScope, boolean publishApk, @Nullable AndroidTask<InstantRunWrapperTask> fullBuildInfoGeneratorTask) { GlobalScope globalScope = variantScope.getGlobalScope(); ApkVariantData variantData = (ApkVariantData) variantScope.getVariantData(); boolean signedApk = variantData.isSigned(); // s

AndroidPlugin源码解析-(七)

忽视了 Aidl, Shader, Ndk, Jni, Jack, DataBinding, StripNativeLibrary, Split, InstantRun, Lint 这些 Task 之后,我们就只剩下面三个重要的 Task 了: createJavacTask(tasks, variantScope); createPostCompilationTasks(tasks, variantScope); createPackagingTask(tasks, variantScope, true /publishApk/, fullBuildInfoGeneratorTask); 这篇文章我们来分析前面两个 Task createJavacTask 这个 Task 的方法为: public AndroidTask<? extends JavaCompile>

AndroidPlugin源码解析-(六)

上篇提到,我们这篇研究的是接下来三个过程, 分别是: createBuildConfigTask createApkProcessResTask createProcessJavaResTasks 接下来,我们一个一个来看 createBuildConfigTask 这个 task 实际执行如下方法: // must clear the folder in case the packagename changed, otherwise, // there'll be two classes. File

AndroidPlugin源码解析-(五)

上篇提到,我们这篇研究的是如下过程, 分别是: createGenerateResValuesTask createMergeResourcesTask createMergeAssetsTask 接下来,我们一个一个来看 createGenerateResValuesTask 这个 task 实际执行下面的方法: // 该folder名字为resValue

AndroidPlugin源码解析-(四)

接下来几篇就来解析上篇提到的代码。 一个一个 Task 来看 createAnchorTasks 这个方法创建的 Tasks 就如名字所示,是 Anchor Tasks(即所谓的锚点任务)。在这里不做仔细的解析。 具