if (DEBUG_MESSAGES) Slog.v(TAG, "<<< done: " + codeToString(msg.what)); } } ActivityThread...中对h的 应用,以及自身的定义: final H mH = new H(); /** Reference to singleton {@link ActivityThread} */...private static volatile ActivityThread sCurrentActivityThread; 所以我们主要是hook住这两个地方。
文章目录 一、 当前 Application 替换进度 二、 ActivityThread 中的 mAllApplications 集合添加 Application 一、 当前 Application...替换进度 ---- 上一篇博客 【Android 安全】DEX 加密 ( Application 替换 | 加密不侵入原则 | 替换 ActivityThread 的 mInitialApplication...集合中添加了 kim.hsl.multipledex.ProxyApplication 对象 ; 首先 , 获取 ActivityThread 对象 ; ActivityThread 之前已经获取过了..., 从 从 ContextImpl 对象中获取其 ActivityThread mMainThread 成员变量就是 ActivityThread , 参考 【Android 安全】DEX 加密 (...Application 替换 | 加密不侵入原则 | 替换 ActivityThread 的 mInitialApplication 成员 ) 博客 ; 然后 , 获取 ActivityThread 的
文章目录 一、ActivityThread 主函数启动 二、ActivityThread 绑定 ApplicationThread 三、AMS attachApplication -> attachApplicationLocked...实例对象 ActivityThread thread = new ActivityThread(); // 绑定 thread.attach(false...二、ActivityThread 绑定 ApplicationThread ---- ActivityThread 中的 void attach(boolean system, long startSeq...五、ActivityThread.H 处理 BIND_APPLICATION 消息 ---- 在 ActivityThread.ApplicationThread.bindApplication 中...六、ActivityThread.handleBindApplication 处理绑定问题 ---- 在 ActivityThread.handleBindApplication 方法中 , 通过调用
流程分析 一 ) 分析了从 ActivityThread 的 main() 函数启动 , ApplicationThread 绑定 , Application 创建 , 下面继续分析后续内容 ; 一、...ActivityManagerService.attachApplicationLocked ---- 回到 AMS 中的 ActivityManagerService 方法 , 在调用 ActivityThread...IActivityManager.Stub implements Watchdog.Monitor, BatteryStatsImpl.BatteryCallback { // 为 ActivityThread...绑定 ApplicationThread , 此时又回到 ActivityThread if (app.instr !...、ActivityStackSupervisor.realStartActivityLocked ---- 该方法步骤在 【Android 启动过程】Activity 启动源码分析 ( AMS -> ActivityThread
获取对象类型分析 二、替换 Application 时机 一、获取对象类型分析 ---- 在 【Android 安全】DEX 加密 ( Application 替换 | 获取 ContextImpl、ActivityThread...、LoadedApk 类型对象 | 源码分析 ) 博客中分析了获取 ContextImpl , ActivityThread , LoadedApk 类型的对象的方法 , ContextImpl : 从...Application 的 attachBaseContext(Context base) 方法中获取 ContextImpl 对象 , ContextImpl 对象就是该方法的参数 ; ActivityThread...: 从 ContextImpl 对象中获取其 ActivityThread mMainThread 成员变量 ; LoadedApk : 从 ContextImpl 对象中获取其 LoadedApk...mPackageInfo 成员变量 ; 二、替换 Application 时机 ---- 替换 Application 操作 , 必须在 onCreate 方法中执行 ; 因为在 ActivityThread
文章目录 一、ActivityThread 源码分析 二、ActivityThread 部分代码示例 dex 解密时 , 需要将 代理 Application 替换为 真实 Application ;...替换 Application 首先要理解系统如何注册应用的 Application 的 ; 一、ActivityThread 源码分析 ---- 参考源码 : /frameworks/base/core.../java/android/app/ActivityThread.java Zygote 进程孵化器 fork 出应用进程后 , 就会执行 ActivityThread 中的 main 函数 ; 在 main...thread = new ActivityThread() 创建了 ActivityThread 对象 , 并调用了该对象的 attach 函数 , thread.attach(false) ;...部分代码示例 ---- ActivityThread 部分代码示例 : public final class ActivityThread { final ApplicationThread
在 Instrumentation 中 , 通过调用 ActivityManagerService ( AMS ) 的 startActivity 方法 ,
文章目录 前言 一、ActivityThread 类 handleLaunchActivity -> performLaunchActivity 方法 二、Instrumentation.newActivity...方法 三、AppComponentFactory.instantiateActivityCompat方法 四、ActivityThread.performLaunchActivity 方法后续细节 五...、Instrumentation.callActivityOnCreate 方法 总结 前言 上一篇博客 【Android 启动过程】Activity 启动源码分析 ( ActivityThread -...> Activity、主线程阶段 一 ) 分析了在 ActivityThread 主线程中将要调用 handleLaunchActivity 方法 , 启动新的 Activity ; 一、ActivityThread...类 handleLaunchActivity -> performLaunchActivity 方法 ---- 在 ActivityThread 的 handleLaunchActivity 中 ,
文章目录 一、获取对象类型分析 二、获取 ContextImpl 类型对象 三、获取 ActivityThread、LoadedApk 类型对象 dex 解密时 , 需要将 代理 Application...源码参考 : 6.0.1_r16/xref/frameworks/base/core/java/android/app/ActivityThread.java LoadedApk 源码参考 : 6.0.1...、LoadedApk 类型对象 ---- 获取 ActivityThread、LoadedApk 类型对象 : 在 LoadedApk 中的 makeApplication 方法中 , ContextImpl...mainThread , 第三个参数是 LoadedApk packageInfo ; 在构造函数中 , mMainThread = mainThread , 构造函数中 ActivityThread...extends Context { // 应用的 ActivityThread final ActivityThread mMainThread; // 应用的 LoadedApk
文章目录 前言 一、热启动与冷启动选择 二、AMS 进程中执行的相关操作 三、通过 Binder 机制转到 ActivityThread 中执行的操作 总结 前言 上一篇博客 【Android 启动过程...】Activity 启动源码分析 ( AMS -> ActivityThread、AMS 线程阶段 ) 分析的分支是启动 Activity 时 , 没有 Activity 对应的进程 , 需要先调用 Zygote...// 在ActivityThread中的客户端上执行事务后,将回收用于本地调用的所有对象。...ActivityThread 主线程中 , 在该主线程中执行相关源码 ; /** * 它管理应用程序进程中主线程的执行、调度和执行活动、广播以及活动管理器请求的其他操作。...上述方法最终执行的是 ActivityThread.this.scheduleTransaction(transaction) , ActivityThread 继承了 ClientTransactionHandler
文章目录 前言 一、ClientTransactionHandler.scheduleTransaction 二、ActivityThread.H 处理 EXECUTE_TRANSACTION 消息 三...、AMS 线程阶段 二 ) 分析到 , 在 AMS 进程通过 Binder 机制调用 ActivityThread 中的 ApplicationThread 内部类中 scheduleTransaction...方法 ; 在该方法中 , 发送了 ActivityThread.H.EXECUTE_TRANSACTION 159 消息 , 由 ActivityThread 中的内部类 H 处理该消息 ; 从..., 最终调用的是 ActivityThread 的 handleLaunchActivity 方法 ; /** * 请求启动 Activity 。..., 然后经过上述一系列调用 , 获取到了启动 Activity 的所有数据 , 又回到 ActivityThread 中执行 handleLaunchActivity 方法 ;
文章目录 一、 加密不侵入 Application 原则 二、 替换 ActivityThread 中的 Application mInitialApplication 成员 一、 加密不侵入 Application...中的 Application mInitialApplication 成员是 kim.hsl.multipledex.ProxyApplication 对象 ; ③ ActivityThread 中的...中的 Application mInitialApplication 成员 ---- 替换 ActivityThread 中的 Application mInitialApplication 成员 ,...> activityThreadClass = Class.forName("android.app.ActivityThread"); // 获取 ActivityThread 中的 mInitialApplication...> activityThreadClass = Class.forName("android.app.ActivityThread"); // 获取 ActivityThread
文章目录 一、 Activity 中的 getApplication() 方法分析 二、 ActivityThread 中的 H 处理 消息及 handleLaunchActivity 方法操作 三、...ActivityThread 中的 performLaunchActivity 方法 四、 LoadedApk 中的 mApplication 成员 五、 ActivityThread 涉及源码 六、...中的 H 处理 消息及 handleLaunchActivity 方法操作 ---- 在 ActivityThread 中 , 创建并启动一个 Activity , H ( Handler 子类 )...三、 ActivityThread 中的 performLaunchActivity 方法 ---- handleLaunchActivity 方法中调用了 performLaunchActivity...涉及源码 ---- public final class ActivityThread { private class H extends Handler { public
文章目录 一、ActivityThread 后续分析 二、ActivityThread 相关源码 三、Application 替换位置 dex 解密时 , 需要将 代理 Application 替换为...真实 Application ; 替换 Application 首先要理解系统如何注册应用的 Application 的 ; 一、ActivityThread 后续分析 ---- 在 【Android...安全】DEX 加密 ( Application 替换 | Android 应用启动原理 | ActivityThread 源码分析 ) 基础上 , 继续分析 ActivityThread 的 handleBindApplication...相关源码 ---- public final class ActivityThread { Application mInitialApplication; final ArrayList<...thread = new ActivityThread(); thread.attach(false); Looper.loop(); } } 完整源码参考 :
(ActivityThread.java:3897) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java...(ActivityThread.java:3870) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java...(ActivityThread.java:3897) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java...(ActivityThread.java:3870) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java...(ActivityThread.java:3897) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java
(ActivityThread.java:2548) at android.app.ActivityThread.handleLaunchActivity...(ActivityThread.java:2707) at android.app.ActivityThread...-wrap12(ActivityThread.java) at android.app.ActivityThread...(ActivityThread.java:2707) at android.app.ActivityThread...-wrap12(ActivityThread.java) at android.app.ActivityThread
(ActivityThread.java:5045) at android.app.ActivityThread.installContentProviders(ActivityThread.java...:4631) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4571) at android.app.ActivityThread.access...$1700(ActivityThread.java:143) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:...(ActivityThread.java:5030) at android.app.ActivityThread.installContentProviders(ActivityThread.java...$1700(ActivityThread.java:143) at android.app.ActivityThread$H.handleMessage(ActivityThread.java
(ActivityThread.java:2646) at android.app.ActivityThread.handleLaunchActivity...(ActivityThread.java:2707) at android.app.ActivityThread...-wrap12(ActivityThread.java) at android.app.ActivityThread...(ActivityThread.java:2707) at android.app.ActivityThread...-wrap12(ActivityThread.java) at android.app.ActivityThread
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)...at android.app.ActivityThread.access$800(ActivityThread.java:144)...at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)...at android.app.ActivityThread.access$800(ActivityThread.java:144)...at android.app.ActivityThread.access$800(ActivityThread.java:144)
(ActivityThread.java:2951) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java...$H.handleMessage(ActivityThread.java:1816) at android.os.Handler.dispatchMessage(Handler.java...:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java...(ActivityThread.java:2931) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java...:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main
领取专属 10元无门槛券
手把手带您无忧上云