René's URL Explorer Experiment


Title: Android插件化从入门到放弃-最强合集 · Issue #8 · HankCoder/BlogAndCode · GitHub

Open Graph Title: Android插件化从入门到放弃-最强合集 · Issue #8 · HankCoder/BlogAndCode

X Title: Android插件化从入门到放弃-最强合集 · Issue #8 · HankCoder/BlogAndCode

Description: Android插件化从入门到放弃-最强合集 本人最近研究插件化, 偶然发现此合集, 按照部分链接的文章实际简单写了些demo,受益良多, 觉得确实不错,特转载过来,给需要的人。 插件化涉及的东西很多,所以我们需要多个维度去学习。大概分为5个部分:预备知识、入门、进阶、系列、类库。一步一步深入了解插件的原理。 基础 Java 类加载器 类加载器(class loader)是 Java中的一个很重要的概念。类加载器负责加载 Java 类的字节代码到 Java 虚拟机中。本文...

Open Graph Description: Android插件化从入门到放弃-最强合集 本人最近研究插件化, 偶然发现此合集, 按照部分链接的文章实际简单写了些demo,受益良多, 觉得确实不错,特转载过来,给需要的人。 插件化涉及的东西很多,所以我们需要多个维度去学习。大概分为5个部分:预备知识、入门、进阶、系列、类库。一步一步深入了解插件的原理。 基础 Java 类加载器 类加载器(class loader)是 Java中的一个很...

X Description: Android插件化从入门到放弃-最强合集 本人最近研究插件化, 偶然发现此合集, 按照部分链接的文章实际简单写了些demo,受益良多, 觉得确实不错,特转载过来,给需要的人。 插件化涉及的东西很多,所以我们需要多个维度去学习。大概分为5个部分:预备知识、入门、进阶、系列、类库。一步一步深入了解插件的原理。 基础 Java 类加载器 类加载器(class loader)是 Java中的一个很...

Opengraph URL: https://github.com/HankCoder/BlogAndCode/issues/8

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Android插件化从入门到放弃-最强合集","articleBody":"[Android插件化从入门到放弃-最强合集](http://www.jianshu.com/p/353514d315a7)\r\n\r\n本人最近研究插件化, 偶然发现此合集, 按照部分链接的文章实际简单写了些demo,受益良多, 觉得确实不错,特转载过来,给需要的人。\r\n插件化涉及的东西很多,所以我们需要多个维度去学习。大概分为5个部分:预备知识、入门、进阶、系列、类库。一步一步深入了解插件的原理。\r\n\r\n基础\r\n1. [Java 类加载器](https://www.ibm.com/developerworks/cn/java/j-lo-classloader/)\r\n类加载器(class loader)是 Java中的一个很重要的概念。类加载器负责加载 Java 类的字节代码到 Java 虚拟机中。本文首先详细介绍了 Java 类加载器的基本概念,包括代理模式、加载类的具体过程和线程上下文类加载器等,接着介绍如何开发自己的类加载器,最后介绍了类加载器在 Web 容器和 OSGi中的应用。\r\n\r\n2.[反射原理](https://github.com/JustinSDK/JavaSE6Tutorial/blob/master/docs/CH16.md)\r\nJava 提供的反射機制允許您於執行時期動態載入類別、檢視類別資訊、生成物件或操作生成的物件,要舉反射機制的一個應用實例,就是在整合式開發環境中所提供的方法提示或是類別檢視工具,另外像 JSP 中的 JavaBean 自動收集請求資訊也使用到反射,而一些軟體開發框架(Framework)也常見到反射機制的使用,以達到動態載入使用者自訂類別的目的。\r\n\r\n3.[代理模式及Java实现动态代理](http://www.jianshu.com/p/6f6bb2f0ece9)\r\n定义:给某个对象提供一个代理对象,并由代理对象控制对于原对象的访问,即客户不直接操控原对象,而是通过代理对象间接地操控原对象。\r\n\r\n入门\r\n1.[Android动态加载dex技术初探](http://blog.csdn.net/u013478336/article/details/50734108)\r\nAndroid使用Dalvik虚拟机加载可执行程序,所以不能直接加载基于class的jar,而是需要将class转化为dex字节码,从而执行代码。优化后的字节码文件可以存在一个.jar中,只要其内部存放的是.dex即可使用。\r\n\r\n2.[Android插件化入门](http://104.236.134.90/2016/02/02/Android%E6%8F%92%E4%BB%B6%E5%8C%96%E5%9F%BA%E7%A1%80/)\r\n开发者将插件代码封装成Jar或者APK。宿主下载或者从本地加载Jar或者APK到宿主中。将宿主调用插件中的算法或者Android特定的Class(如Activity)\r\n\r\n3.[插件化开发—动态加载技术加载已安装和未安装的apk](http://blog.csdn.net/u010687392/article/details/47121729?hmsr=toutiao.io\u0026utm_medium=toutiao.io\u0026utm_source=toutiao.io)\r\n动态加载技术就是使用类加载器加载相应的apk、dex、jar(必须含有dex文件),再通过反射获得该apk、dex、jar内部的资源(class、图片、color等等)进而供宿主app使用。\r\n\r\n4.[Android动态加载技术三个关键问题详解](https://blog.tingyun.com/web/article/detail/166)\r\n动态加载技术(也叫插件化技术)在技术驱动型的公司中扮演着相当重要的角色,当项目越来越庞大的时候,需要通过插件化来减轻应用的内存和CPU占用,还可以实现热插拔,即在不发布新版本的情况下更新某些模块。\r\n\r\n进阶\r\n1.[携程Android App插件化和动态加载实践](http://mp.weixin.qq.com/s?__biz=MzAwMTcwNTE0NA==\u0026mid=400217391\u0026idx=1\u0026sn=86181541ce0164156dfab135ed99bb5c\u0026scene=0\u0026key=b410d3164f5f798e61a5d4afb759fa38371c8b119384c6163a30c28163b4d4d5f59399f2400800ec842f1d0e0ffb84af\u0026ascene=0\u0026uin=MjExMjQ\u0026pass_ticket=Nt5Jaa28jjFxcQO9o%2BvQiXX%2B0iXG5DlZlHNW97Fk1Ew%3D)\r\n携程Android App的插件化和动态加载框架已上线半年,经历了初期的探索和持续的打磨优化,新框架和工程配置经受住了生产实践的考验。本文将详细介绍Android平台插件式开发和动态加载技术的原理和实现细节,回顾携程Android App的架构演化过程,期望我们的经验能帮助到更多的Android工程师。\r\n\r\n2.[动态加载APK原理分享](http://blog.csdn.net/hkxxx/article/details/42194387)\r\n被加载的apk称之为插件,因为机制类似于生物学的\"寄生\",加载了插件的应用也被称为宿主。 往往不是所有的apk都可作为插件被加载,往往需要遵循一定的\"开发规范\",还需要插件项目引入某种api类库,业界通常都是这么做的。\r\n\r\n3.Android插件化的一种实现\r\nAndroid的插件化已经是老生常谈的话题了,插件化的好处有很多:解除代码耦合,插件支持热插拔,静默升级,从根本上解决65K属性和方法的bug等等。下面给大家介绍一下我们正在用的差价化框架。本片主要以类图的方式向大家介绍插件话框架的实现。\r\n\r\n4.蘑菇街 App 的组件化之路\r\n随着我街业务的蓬勃发展,产品和运营随时上新功能新活动的需求越来越强烈,经常可以听到“有个功能我想周x上,行不行”。行么?当然是不行啦,上新功能得发新版本啊,到时候费时费力打乱开发节奏不说,覆盖率也是个问题。\r\n\r\n5.DynamicLoadApk 源码解析\r\nDynamicLoadApk 是一个开源的 Android 插件化框架。插件化的优点包括:(1) 模块解耦,(2) 动态升级,(3) 高效并行开发(编译速度更快) (4) 按需加载,内存占用更低等等DynamicLoadApk 提供了 3 种开发方式,让开发者在无需理解其工作原理的情况下快速的集成插件化功能。\r\n\r\n6.Android apk动态加载机制的研究\r\n问题是这样的:我们知道,apk必须安装才能运行,如果不安装要是也能运行该多好啊,事实上,这不是完全不可能的,尽管它比较难实现。在理论层面上,我们可以通过一个宿主程序来运行一些未安装的apk,当然,实践层面上也能实现,不过这对未安装的apk有要求。我们的想法是这样的,首先要明白apk未安装是不能被直接调起来.\r\n\r\n7.美团Android DEX自动拆包及动态加载简介\r\n作为一个android开发者,在开发应用时,随着业务规模发展到一定程度,不断地加入新功能、添加新的类库,代码在急剧的膨胀,相应的apk包的大小也急剧增加, 那么终有一天,你会不幸遇到这个错误.\r\n\r\n8.途牛原创|途牛Android App的插件实现\r\n途牛的插件化是基于dynamic-load-apk(github)实现的。定义了宿主和插件的通信方式,使得两者能够互起对方的页面,调用彼此的功能。同时对activity的启动方式singletask等进行了模式实现,并增加了对Service的支持等。总之使得插件开发最大限度的保持着原有的Android开发习惯。\r\n\r\n9. Android apk资源加载和activity生命周期管理\r\n博主分析了Android中apk的动态加载机制,并在文章的最后指出需要解决的两个复杂问题:资源的访问和activity生命周期的管理,而本文将会分析这两个复杂问题的解决方法。\r\n\r\n10.APK动态加载框架(DL)解析\r\n首先要说的是动态加载技术(或者说插件化)在技术驱动型的公司中扮演这相当重要的角色,当项目越来越庞大的时候,需要通过插件化来减轻应用的内存和cpu占用,还可以实现热插拔,即在不发布新版本的情况下更新某些模块。\r\n\r\n系列\r\n1.Kaedea---Android动态加载技术 简单易懂的介绍\r\n我们很早开始就在Android项目中采用了动态加载技术,主要目的是为了达到让用户不用重新安装APK就能升级应用的功能(特别是 SDK项目),这样一来不但可以大大提高应用新版本的覆盖率,也减少了服务器对旧版本接口兼容的压力,同时如果也可以快速修复一些线上的BUG。\r\n\r\n2.Kaedea---Android动态加载基础 ClassLoader的工作机制\r\n早期使用过Eclipse等Java编写的软件的同学可能比较熟悉,Eclipse可以加载许多第三方的插件(或者叫扩展),这就是动态加载。这些插件大多是一些Jar包,而使用插件其实就是动态加载Jar包里的Class进行工作。\r\n\r\n3.Kaedea---Android动态加载补充 加载SD卡的SO库\r\nAndroid中JNI的使用其实就包含了动态加载,APP运行时动态加载.so库并通过JNI调用其封装好的方法。后者一般是使用NDK工具从C/C++代码编译而成,运行在Native层,效率会比执行在虚拟机的Java代码高很多,所以Android中经常通过动态加载.so库来完成一些对性能比较有需求的工作(比如T9搜索、或者Bitmap的解码、图片高斯模糊处理等)。\r\n\r\n4.Kaedea---Android动态加载入门 简单加载模式\r\nJava程序中,JVM虚拟机是通过类加载器ClassLoader加载.jar文件里面的类的。Android也类似,不过Android用的是Dalvik/ART虚拟机,不是JVM,也不能直接加载.jar文件,而是加载dex文件。\r\n\r\n5.Kaedea---Android动态加载进阶 代理Activity模式\r\n简单模式中,使用ClassLoader加载外部的Dex或Apk文件,可以加载一些本地APP不存在的类,从而执行一些新的代码逻辑。但是使用这种方法却不能直接启动插件里的Activity。\r\n\r\n6.Kaedea---Android动态加载黑科技 动态创建Activity模式\r\n还记得我们在代理Activity模式里谈到启动插件APK里的Activity的两个难题吗,由于插件里的Activity没在主项目的Manifest里面注册,所以无法经历系统Framework层级的一系列初始化过程,最终导致获得的Activity实例并没有生命周期和无法使用res资源。\r\n\r\n7.尼古拉斯---插件开发基础篇:动态加载技术解读\r\n在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优势。本文对网上Android动态加载jar的资料进行梳理和实践在这里与大家一起分享,试图改善频繁升级这一弊病。\r\n\r\n8.尼古拉斯---插件开发开篇:类加载器分析\r\n这篇文章主要介绍了Android中主要的两个类加载器:PathClassLoader和DexClassLoader,他们的区别,联系,用法等问题,以及我们在制作插件的过程中会遇到哪些常见的问题。这篇文章也是后续两篇文章的基础,因为如果不了解这两个类的话,我们将无法进行后续的操作。\r\n\r\n9.尼古拉斯---插件开发中篇:资源加载问题(换肤原理解析)\r\n这篇文章主要通过现在一些应用自带的换肤技术的解读来看看,在开发插件的过程中如何解决一些资源加载上的问题,这个问题为何要单独拿出来解释,就是因为他涉及的知识很多,也是后面一篇文章的基础,我们在需要加载插件中的资源文件的时候。\r\n\r\n10.尼古拉斯---插件开发终极篇:动态加载Activity(免安装运行程序)\r\n这篇文章主要是讲解了如何加载插件中的Activity。从而实现免安装运行程序,同时这篇文章也是对前三篇文章知识的综合使用。下载很多应用都会使用到插件技术,因为包的大小和一些功能的优先级来决定哪些模块可以制作成插件。\r\n\r\n11.Weishu---Android插件化原理解析——概要\r\n类的加载可以使用Java的ClassLoader机制,但是对于Android来说,并不是说类加载进来就可以用了,很多组件都是有“生命”的;因此对于这些有血有肉的类,必须给它们注入活力,也就是所谓的组件生命周期管理.\r\n\r\n12.Weishu---Android插件化原理解析——Hook机制之动态代理\r\n使用代理机制进行API Hook进而达到方法增强是框架的常用手段,比如J2EE框架Spring通过动态代理优雅地实现了AOP编程,极大地提升了Web开发效率;同样,插件框架也广泛使用了代理机制来增强系统API从而达到插件化的目的.\r\n\r\n13.Weishu---Android插件化原理解析——Hook机制之Binder Hook\r\nAndroid系统通过Binder机制给应用程序提供了一系列的系统服务,诸如ActivityManagerService,ClipboardManager, AudioManager等;这些广泛存在系统服务给应用程序提供了诸如任务管理,音频,视频等异常强大的功能。\r\n\r\n14.Weishu---Android 插件化原理解析——Hook机制之AMS\u0026PMS\r\n在前面的文章中我们介绍了DroidPlugin的Hook机制,也就是代理方式和Binder Hook;插件框架通过AOP实现了插件使用和开发的透明性。在讲述DroidPlugin如何实现四大组件的插件化之前,有必要说明一下它对AMS以及PMS的Hook方式。\r\n\r\n15.Weishu---Android 插件化原理解析——Activity生命周期管理\r\n之前的 Android插件化原理解析 系列文章揭开了Hook机制的神秘面纱,现在我们手握倚天屠龙,那么如何通过这种技术完成插件化方案呢?具体来说,插件中的Activity,Service等组件如何在Android系统上运行起来?\r\n\r\n16.Weishu---Android 插件化原理解析——插件加载机制\r\n上文 Activity生命周期管理 中我们地完成了『启动没有在AndroidManifest.xml中显式声明的Activity』的任务;通过Hook AMS和拦截ActivityThread中H类对于组件调度我们成功地绕过了AndroidMAnifest.xml的限制。\r\n\r\n17.Weishu---Android插件化原理解析——广播的管理\r\n在Activity生命周期管理 以及 插件加载机制 中我们详细讲述了插件化过程中对于Activity组件的处理方式,为了实现Activity的插件化我们付出了相当多的努力;那么Android系统的其他组件,比如BroadcastReceiver,Service还有ContentProvider,它们又该如何处理呢?\r\n\r\n18.Weishu---Android 插件化原理解析——Service的插件化\r\n在 Activity生命周期管理 以及 广播的管理 中我们详细探讨了Android系统中的Activity、BroadcastReceiver组件的工作原理以及它们的插件化方案,相信读者已经对Android Framework和插件化技术有了一定的了解;\r\n19. [美团App插件化实践](https://juejin.im/entry/59df9eef51882546b15b836a?utm_source=gold_browser_extension)\r\n类库\r\n1.DroidPlugin\r\n是360手机助手在Android系统上实现了一种新的插件机制\r\n2.Android-Plugin-Framework\r\n此项目是Android插件开发框架完整源码及示例。用来通过动态加载的方式在宿主程序中运行插件APK。\r\n3.Small\r\n世界那么大,组件那么小。Small,做最轻巧的跨平台插件化框架。里面有很详细的文档\r\n4.dynamic-load-apk\r\nAndroid 使用动态加载框架DL进行插件化开发\r\n5.AndroidDynamicLoader\r\nAndroid 动态加载框架,他不是用代理 Activity 的方式实现而是用 Fragment 以及 Schema 的方式实现\r\n6.DynamicAPK\r\n实现Android App多apk插件化和动态加载,支持资源分包和热修复.携程App的插件化和动态加载框架.\r\n7.ACDD\r\n非代理Android动态部署框架\r\n8.android-pluginmgr\r\n不需要插件规范的apk动态加载框架。\r\n9. VirtualAPK\r\nVirtualAPK是滴滴出行自研的一款优秀的插件化框架。\r\n10.android-pluginmgr\r\n不需要插件规范的apk动态加载框架。\r\n11.RePlugin\r\nRePlugin是一套完整的、稳定的、适合全面使用的,占坑类插件化方案,由360手机卫士的RePlugin Team研发,也是业内首个提出”全面插件化“(全面特性、全面兼容、全面使用)的方案。\r\n\r\n参考视频\r\n1.DroidPlugin的实现原理及其应用\r\nDroid Plugin是360手机助手在2015年初研发的一个全新的基于Android平台的插件机制.\r\n2.android插件化及动态部署\r\n阿里技术沙龙第十六期《android插件化及动态部署》视频","author":{"url":"https://github.com/HankCoder","@type":"Person","name":"HankCoder"},"datePublished":"2017-10-20T04:11:42.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/8/BlogAndCode/issues/8"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:18238fd2-639b-6419-f6bd-b0aea5ede2e9
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idCB9C:CB088:173EDF8:21C0603:6A578BD1
html-safe-nonce5aa42af9db4c1c96a8e528e633165d69d32f7db5450946af1c334cb7dc25e695
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDQjlDOkNCMDg4OjE3M0VERjg6MjFDMDYwMzo2QTU3OEJEMSIsInZpc2l0b3JfaWQiOiI3MTgzNzI3NzUyMzU2NzkzMjk3IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmac5e2f7ff826b6a1da3c5b5a44f6c7c0a87945f19f94d94ef1f2c45b579e80ed4e
hovercard-subject-tagissue:267058867
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/HankCoder/BlogAndCode/8/issue_layout
twitter:imagehttps://opengraph.githubassets.com/cd9b20218e3ab31f7374bfc6fc52cc43ad9f56ac720312ccb282d091d7c39b0a/HankCoder/BlogAndCode/issues/8
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/cd9b20218e3ab31f7374bfc6fc52cc43ad9f56ac720312ccb282d091d7c39b0a/HankCoder/BlogAndCode/issues/8
og:image:altAndroid插件化从入门到放弃-最强合集 本人最近研究插件化, 偶然发现此合集, 按照部分链接的文章实际简单写了些demo,受益良多, 觉得确实不错,特转载过来,给需要的人。 插件化涉及的东西很多,所以我们需要多个维度去学习。大概分为5个部分:预备知识、入门、进阶、系列、类库。一步一步深入了解插件的原理。 基础 Java 类加载器 类加载器(class loader)是 Java中的一个很...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernameHankCoder
hostnamegithub.com
expected-hostnamegithub.com
Nonec6353e56e94423c9cd5abde7708a859afa36a0c1203c73749055bf6ee6704cd0
turbo-cache-controlno-preview
go-importgithub.com/HankCoder/BlogAndCode git https://github.com/HankCoder/BlogAndCode.git
octolytics-dimension-user_id10301539
octolytics-dimension-user_loginHankCoder
octolytics-dimension-repository_id83747204
octolytics-dimension-repository_nwoHankCoder/BlogAndCode
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id83747204
octolytics-dimension-repository_network_root_nwoHankCoder/BlogAndCode
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releasef59ab1c46b638204e2aea09126d089be5dc773b7
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/HankCoder/BlogAndCode/issues/8#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FHankCoder%2FBlogAndCode%2Fissues%2F8
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FHankCoder%2FBlogAndCode%2Fissues%2F8
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=HankCoder%2FBlogAndCode
Reloadhttps://github.com/HankCoder/BlogAndCode/issues/8
Reloadhttps://github.com/HankCoder/BlogAndCode/issues/8
Reloadhttps://github.com/HankCoder/BlogAndCode/issues/8
HankCoder https://github.com/HankCoder
BlogAndCodehttps://github.com/HankCoder/BlogAndCode
Notifications https://github.com/login?return_to=%2FHankCoder%2FBlogAndCode
Fork 0 https://github.com/login?return_to=%2FHankCoder%2FBlogAndCode
Star 1 https://github.com/login?return_to=%2FHankCoder%2FBlogAndCode
Code https://github.com/HankCoder/BlogAndCode
Issues 16 https://github.com/HankCoder/BlogAndCode/issues
Pull requests 0 https://github.com/HankCoder/BlogAndCode/pulls
Actions https://github.com/HankCoder/BlogAndCode/actions
Projects https://github.com/HankCoder/BlogAndCode/projects
Security and quality 0 https://github.com/HankCoder/BlogAndCode/security
Insights https://github.com/HankCoder/BlogAndCode/pulse
Code https://github.com/HankCoder/BlogAndCode
Issues https://github.com/HankCoder/BlogAndCode/issues
Pull requests https://github.com/HankCoder/BlogAndCode/pulls
Actions https://github.com/HankCoder/BlogAndCode/actions
Projects https://github.com/HankCoder/BlogAndCode/projects
Security and quality https://github.com/HankCoder/BlogAndCode/security
Insights https://github.com/HankCoder/BlogAndCode/pulse
Android插件化从入门到放弃-最强合集https://github.com/HankCoder/BlogAndCode/issues/8#top
Androidhttps://github.com/HankCoder/BlogAndCode/issues?q=state%3Aopen%20label%3A%22Android%22
插件化https://github.com/HankCoder/BlogAndCode/issues?q=state%3Aopen%20label%3A%22%E6%8F%92%E4%BB%B6%E5%8C%96%22
https://github.com/HankCoder
HankCoderhttps://github.com/HankCoder
on Oct 20, 2017https://github.com/HankCoder/BlogAndCode/issues/8#issue-267058867
Android插件化从入门到放弃-最强合集http://www.jianshu.com/p/353514d315a7
Java 类加载器https://www.ibm.com/developerworks/cn/java/j-lo-classloader/
反射原理https://github.com/JustinSDK/JavaSE6Tutorial/blob/master/docs/CH16.md
代理模式及Java实现动态代理http://www.jianshu.com/p/6f6bb2f0ece9
Android动态加载dex技术初探http://blog.csdn.net/u013478336/article/details/50734108
Android插件化入门http://104.236.134.90/2016/02/02/Android%E6%8F%92%E4%BB%B6%E5%8C%96%E5%9F%BA%E7%A1%80/
插件化开发—动态加载技术加载已安装和未安装的apkhttp://blog.csdn.net/u010687392/article/details/47121729?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
Android动态加载技术三个关键问题详解https://blog.tingyun.com/web/article/detail/166
携程Android App插件化和动态加载实践http://mp.weixin.qq.com/s?__biz=MzAwMTcwNTE0NA==&mid=400217391&idx=1&sn=86181541ce0164156dfab135ed99bb5c&scene=0&key=b410d3164f5f798e61a5d4afb759fa38371c8b119384c6163a30c28163b4d4d5f59399f2400800ec842f1d0e0ffb84af&ascene=0&uin=MjExMjQ&pass_ticket=Nt5Jaa28jjFxcQO9o%2BvQiXX%2B0iXG5DlZlHNW97Fk1Ew%3D
动态加载APK原理分享http://blog.csdn.net/hkxxx/article/details/42194387
美团App插件化实践https://juejin.im/entry/59df9eef51882546b15b836a?utm_source=gold_browser_extension
Androidhttps://github.com/HankCoder/BlogAndCode/issues?q=state%3Aopen%20label%3A%22Android%22
插件化https://github.com/HankCoder/BlogAndCode/issues?q=state%3Aopen%20label%3A%22%E6%8F%92%E4%BB%B6%E5%8C%96%22
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.