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中shape的使用
  3. Android应用自启动
  4. Android(安卓)使用CoordinatorLayout+AppBarLayout+CollapsingTo
  5. 【web browser】启动android默认浏览器
  6. android 通知Notification的使用小实例(振动,灯光,声音)
  7. Android(安卓)SDK和最新ADT下载地址
  8. Android之ViewFlipper的使用与ListView的分页加载
  9. android原生SQLite数据库的使用

随机推荐

  1. Android(安卓)Intent 其中一个分析
  2. Android开源项目xUtils HttpUtils模块分
  3. Android(安卓)基础-Activity的使用(二)
  4. 【Android】监听蓝牙状态变化
  5. android support Percent支持库开发
  6. Android异步下载网络图片(其三)
  7. android:Bitmap和Drawable相互转换方法
  8. 图片加载处理
  9. Java CRC16算法校验
  10. Mars视频笔记——Animation(2)