Android Java Hook

http://www.52pojie.cn/thread-288128-2-1.html

http://www.52pojie.cn/thread-426890-1-2.html


apk加固

http://blog.csdn.net/jiangwei0910410003/article/details/48415225


Android自动打包程序

http://www.jizhuomi.com/android/environment/281.html


360 Android插件(DroidPlugin)无需安装运行APK的原理是什么,用途都有哪些?

http://www.zhihu.com/question/35138070



http://www.kanxue.com/bbs/forumdisplay.php?f=161




Android中插件开发篇之----动态加载Activity(免安装运行程序)

http://blog.csdn.net/jiangwei0910410003/article/details/48104455



远程服务

http://www.2cto.com/kf/201402/276822.html



Android Activity学习笔记——Activity的启动和创建

http://www.cnblogs.com/bastard/archive/2012/04/07/2436262.html


Android-精通Activity

http://www.imooc.com/learn/413


Android系统Activity窗口启动过程

http://www.tuicool.com/articles/yQRrUv


Android的应用(APP)启动详细流程

http://laokaddk.blog.51cto.com/368606/1206822


Android 插件化 动态升级


http://www.trinea.cn/android/android-plugin/

https://github.com/cayden/Android-Plugin-Framework





Android插件化开发,初入殿堂

http://my.oschina.net/kymjs/blog/327232



Android应用程序启动过程源代码分析


http://blog.csdn.net/luoshengyang/article/details/6689748

老罗帖子的里面最后的总结:

在应用程序内部启动新的Activity的过程要执行很多步骤,但是整体来看,主要分为以下四个阶段:

. Step 1 - Step 10:应用程序的MainActivity通过Binder进程间通信机制通知ActivityManagerService,它要启动一个新的Activity

. Step 11 - Step 15ActivityManagerService通过Binder进程间通信机制通知MainActivity进入Paused状态;

. Step 16 - Step 22MainActivity通过Binder进程间通信机制通知ActivityManagerService,它已经准备就绪进入Paused状态,于是ActivityManagerService就准备要在MainActivity所在的进程和任务中启动新的Activity了;

. Step 23 - Step 29ActivityManagerService通过Binder进程间通信机制通知MainActivity所在的ActivityThread,现在一切准备就绪,它可以真正执行Activity的启动操作了。



对比

  • DynamicLoadApk
    迁移成本很重:需要使用『that』而不是『this』,所有activity都需要继承自proxy avtivityproxy avtivity负责管理所有activity的生命周期)。
    无法启动apk内部的activity
    不支持ServiceBroadcastReceiver。文章开头提到,要想成为一个插件apk,是要满足一定条件的,如下是采用本文机制开发插件apk所需要遵循的规范:
  1. 慎用this(接口除外):因为this指向的是当前对象,即apk中的activity,但是由于activity已经不是常规意义上的activity,所以this是没有意义的,但是如果this表示的是一个接口而不是context,比如activity实现了而一个接口,那么this继续有效。
  2. 使用that:既然this不能用,那就用thatthatapkactivity的基类BaseActivity中的一个成员,它在apk安装运行的时候指向this,而在未安装的时候指向宿主程序中的代理activityanywaythat is better than this
  3. activity的成员方法调用问题:原则来说,需要通过that来调用成员方法,但是由于大部分常用的api已经被重写,所以仅仅是针对部分api才需要通过that去调用用。同时,apk安装以后仍然可以正常运行。
  4. 启动新activity的约束:启动外部activity不受限制,启动apk内部的activity有限制,首先由于apk中的activity没注册,所以不支持隐式调用,其次必须通过BaseActivity中定义的新方法startActivityByProxystartActivityForResultByProxy,还有就是不支持LaunchMode
  5. 目前暂不支持ServiceBroadcastReceiver等需要注册才能使用的组件,但广播可以采用代码动态注册。
  • AndroidDynamicLoader
    迁移成本很重:
    使用资源时要用MyResources.getResource(Me.class)而不是context.getResources()
    使用Fragment作为UI容器,所有每个页面都是使用Fragment而不是Activity,需要使用URL mapping才能实现页面跳转。
  • android-pluginmgr
    未经过生产环境App测试。
    不支持ServiceBroadcastReceiver
  • DroidPlugin from 奇虎360
    非常有趣的框架!DroidPlugin能够在一个App内启动一个没有安装的App。这个特性可能更适合360的安全产品,因为被启动的App和宿主App完全没有任何关联,相互间不能支持资源和代码调用。
    不支持自定义推送栏。


更多相关文章

  1. android的进程与线程
  2. Android中事件分发机制分析
  3. Android面试系列文章2018之Android部分Handler机制篇
  4. android 中的 Broadcast 机制详解

随机推荐

  1. 基于Android(安卓)Q 修改默认音量等级
  2. android入门级小软件身高体重计算器源代
  3. Android(安卓)Activity的生命周期
  4. Android(安卓)SDK 26以后ant编译错误解决
  5. Android(安卓)ontouch 手速
  6. Android(安卓)Studio开发环境配置
  7. Qualcomm Android(安卓)display架构分析
  8. Notes on the implementation of encrypt
  9. Android(安卓)通过Intent调用系统功能和A
  10. Android(安卓)获取设备各种信息以及其它