android动态加载

移动端APP热更新方案(iOS+Android)

我与影子孤独终老i 提交于 2020-03-30 07:17:53
出自:http://www.cnblogs.com/Creator/p/7007694.html 为什么要做热更新 当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就会忙得焦头烂额:重新打包App、测试、向各个应用市场和渠道换包、提示用户升级、用户下载、覆盖安装。 重点是还会有原来的版本遗留,无论你怎么提示都有人放弃治疗,不愿意升级,强制不能使用体验又足够糟糕到让人不能启齿。 如果这是一个影响公司收入或者体验影响极其不好的Bug,那完蛋了,可能公司老板会对整个技术团队的技术能力丧失信心,其对技术人员的伤害是致命的。 最后最致命的是: 有时候仅仅是因为不小心写错了一行代码,就让所有的加班都付之东流,苦不苦,冤不冤,想想都苦。 还有一种剧情是研发总监把锅甩给测试团队,测试不过关,测试摊摊手说我也不是神啊,总会有漏网之鱼. 那能不能神不知鬼不觉再没有产生较大影响前把bug快速修复了呢? 热更新的行业情况 先来说说Android 并不是因为Android更有料就先说他,而是它的用户量级比Iphone大,我们写文章也是讲究大数据分析的不是.. Andoid端在15年热补丁就比较火,先后出现了Dexposed、AndFix,Qzone超级补丁的类Nuwa方式,微信的Tinker, 大众点评的nuwa、百度金融的rocooFix,

Android checkbox及动态加载控件

雨燕双飞 提交于 2020-02-17 06:13:15
1.动态加载布局 (1)使用LayoutInflater: LinearLayout linearLayout = (LinearLayout) getLayoutInflater().inflate(R.layout.main, null);返回的是main文件的root。 向获取到的linearLayout中添加控件使用其父类的方法addView(...); (2)使用View的静态方法inflate(...): LinearLayout togLayout = (LinearLayout)View.inflate(Main.this, R.layout.togglebutton, linearLayout); public static View inflate(Context context, int resource, ViewGroup root) Inflate a view from an XML resource. This convenience method wraps the LayoutInflater class, which provides a full range of options for view inflation. 参数: context - The Context object for your activity or

Android动态加载jar/dex

浪尽此生 提交于 2020-01-25 02:07:04
前言    在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优势。本文对网上Android动态加载jar的资料进行梳理和实践在这里与大家一起分享,试图改善频繁升级这一弊病。 声明   欢迎转载,但请保留文章原始出处:)     博客园:http://www.cnblogs.com     农民伯伯: http://over140.cnblogs.com     Android中文翻译组: http://androidbox.sinaapp.com/ 正文   一、 基本概念和注意点     1.1  首先需要了解一点:在Android中可以动态加载,但无法像Java中那样方便动态加载jar       原因:Android的虚拟机(Dalvik VM)是不认识Java打出jar的byte code,需要通过dx工具来优化转换成Dalvik byte code才行。这一点在咱们Android项目打包的apk中可以看出:引入其他Jar的内容都被打包进了classes.dex。       所以这条路不通,请大家注意。     1.2  当前哪些API可用于动态加载       1.2.1  DexClassLoader        

Android动态加载jar/dex

Deadly 提交于 2020-01-24 04:47:06
前言    在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优势。本文对网上Android动态加载jar的资料进行梳理和实践在这里与大家一起分享,试图改善频繁升级这一弊病。 声明   欢迎转载,但请保留文章原始出处:)     博客园:http://www.cnblogs.com     农民伯伯: http://over140.cnblogs.com     Android中文翻译组: http://androidbox.sinaapp.com/ 正文   一、 基本概念和注意点     1.1  首先需要了解一点:在Android中可以动态加载,但无法像Java中那样方便动态加载jar       原因:Android的虚拟机(Dalvik VM)是不认识Java打出jar的byte code,需要通过dx工具来优化转换成Dalvik byte code才行。这一点在咱们Android项目打包的apk中可以看出:引入其他Jar的内容都被打包进了classes.dex。       所以这条路不通,请大家注意。     1.2  当前哪些API可用于动态加载       1.2.1   DexClassLoader        

Android动态加载代码技术

时间秒杀一切 提交于 2020-01-18 09:06:32
Android动态加载代码技术 在开发Android App的过程当中,可能希望实现插件式软件架构,将一部分代码以另外一个APK的形式单独发布,而在主程序中加载并执行这个APK中的代码。 实现这个任务的一般方法是: // 加载类cls Context pluginContext = mainContext.createPackageContext(PLUGIN_PKG, Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE); ClassLoader loader = pluginContext.getClassLoader(); Class<?> cls = loader.loadClass(CLASS_NAME); // 通过反射技术,调用cls中的方法,下面是一个示例,实际代码因情况而定 Object obj = cls.newInstance(); Method method = cls.getDeclaredMethod("someMethod"); method.invoke(obj); 但是,这个方法在Android 4.1及之后的系统中存在一些问题:对于收费应用,Google Play会将其安装在一个加密目录之下(具体就是/data/app-asec),而不是一个普通目录之下(具体就是/data

Android动态加载代码技术

末鹿安然 提交于 2020-01-16 02:32:07
在开发Android App的过程当中,可能希望实现插件式软件架构,将一部分代码以另外一个APK的形式单独发布,而在主程序中加载并执行这个APK中的代码。 实现这个任务的一般方法是: // 加载类cls Context pluginContext = mainContext.createPackageContext(PLUGIN_PKG, Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE); ClassLoader loader = pluginContext.getClassLoader(); Class<?> cls = loader.loadClass(CLASS_NAME); // 通过反射技术,调用cls中的方法,下面是一个示例,实际代码因情况而定 Object obj = cls.newInstance(); Method method = cls.getDeclaredMethod("someMethod"); method.invoke(obj); 但是,这个方法在Android 4.1及之后的系统中存在一些问题:对于收费应用,Google Play会将其安装在一个加密目录之下(具体就是/data/app-asec),而不是一个普通目录之下(具体就是/data/app)

Android类动态加载技术

[亡魂溺海] 提交于 2020-01-15 06:37:23
帮助我们实现插件接口,主要是评论部分. 建立插件工程,导入插件接口.jar,需要选择user library并且勾选下面的system library,这样打出的apk是不包含插件接口的. 为了访问因此成员,需要改变类搜索顺序,选择项目属性->Java Build Path->Order and Export,把所建立的User Libraries移到Android SDK的上面 转自: http://www.blogjava.net/zh-weir/archive/2011/10/29/362294.html Android 类动态加载技术 Android 应用开发在一般情况下,常规的开发方式和代码架构就能满足我们的普通需求。但是有些特殊问题,常常引发我们进一步的沉思。我们从沉思中产生顿悟,从而产生新的技术形式。 如何开发一个可以自定义控件的 Android 应用?就像 eclipse 一样,可以动态加载插件;如何让 Android 应用执行服务器上的不可预知的代码?如何对 Android 应用加密,而只在执行时自解密,从而防止被破解?…… 熟悉 Java 技术的朋友,可能意识到,我们需要使用类加载器灵活的加载执行的类。这在 Java 里已经算是一项比较成熟的技术了,但是在 Android 中,我们大多数人都还非常陌生。 类加载机制 Dalvik 虚拟机如同其他 Java

Android学习笔记31:使用惰性控件ViewStub实现布局动态加载

时光怂恿深爱的人放手 提交于 2020-01-10 23:51:16
  在Android开发中,经常会遇到这样的情况,在程序运行过程中动态的根据当前条件来决定是否显示某个控件或布局,这时就可以使用惰性控件ViewStub来方便的完成这一功能。   惰性控件ViewStub是一个轻量级的View,可以实现动态布局加载。ViewStub对象是一个看不见的,零大小的视图,并在程序运行时根据需要进行动态加载。只有当ViewStub对象被设置为可见,或是调用了ViewStub.inflate()方法时,ViewStub对象所指向的布局才会被实例化,并加载到指向的父布局中。这样,便通过惰性控件ViewStub实现了动态加载某个控件或布局。   在本篇博文中,我们将通过一个实例来演示如何使用惰性控件ViewStub完成动态加载布局操作。完成后的程序运行效果如图1所示。 图1 主界面显示效果   在如图1所示的主界面中,点击“展开宝贝详细描述”按钮,将通过惰性控件ViewStub加载动态布局的方式,引入一段对商品的文字描述信息,如图2所示。 图2 动态加载布局效果   从图2可以看出,通过使用惰性控件ViewStub,我们在原布局中动态的加入了一段有关商品的描述信息。当点击“隐藏宝贝详细描述”按钮时,这段商品描述信息将被隐藏,主界面将重新变为图1所示的显示效果。   下面就来说说该实例的具体实现方法。 1.静态加载布局  

APP实现与原理

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-07 13:44:06
###实现 不需要任何权限获得Android设备的唯一ID RecyclerView的通用适配器,和滚动时不加载图片的封装 完美的解决如何让AsyncTask终止操作 webview rexsee sdcard 缓存文件可以放在哪里?它们各自的特点是什么? Android 开发时如何正确获取使用扩展存储路径 如何区分手机内置存储卡与外置存储卡 Android清除数据 插件及动态加载 Android动态加载技术 简单易懂的介绍方式 Android动态加载进阶 代理Activity模式 Android动态加载入门 简单加载模式 来源: oschina 链接: https://my.oschina.net/u/133016/blog/545933

Android动态加载——jar/dex

女生的网名这么多〃 提交于 2019-12-03 23:07:39
前言    在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优势。本文对网上Android动态加载jar的资料进行梳理和实践在这里与大家一起分享,试图改善频繁升级这一弊病。 声明   欢迎转载,但请保留文章原始出处:)     博客园:http://www.cnblogs.com     农民伯伯: http://over140.cnblogs.com     Android中文翻译组: http://androidbox.sinaapp.com/ 正文   一、 基本概念和注意点     1.1  首先需要了解一点:在Android中可以动态加载,但无法像Java中那样方便动态加载jar       原因:Android的虚拟机(Dalvik VM)是不认识Java打出jar的byte code,需要通过dx工具来优化转换成Dalvik byte code才行。这一点在咱们Android项目打包的apk中可以看出:引入其他Jar的内容都被打包进了classes.dex。       所以这条路不通,请大家注意。     1.2  当前哪些API可用于动态加载       1.2.1   DexClassLoader