使用Sencha完成APK局部更新

简介:

 好久没更新博文了,这段时间各种学习、各种打击,呵呵,但总归来说学到的东西也越来越多了,今天找时间来更新下这段时间学到的,也是我个人觉得不错的一个东西“Android APK局部模块化更新”,之前也在网上找了相关的资料查了下,没找到觉得比较好的,大多都是Copy来Copy去的,由于前段时间开发的时候用到了一个我没听过的框架<Sencha>,小马个人觉得开发出来的东西还是挺好的,不过有结论证明在IOS上这个东西更适用跑得也更流畅,但同样也可以运用到我们安卓上啦,借此机会,就跟大家分享下在Android中使用Sencha、HTML5、JS 、EXT 来完成APK应用的局部更新,小马的老规矩,先写大致流程,再逐步细化,小马保证,如果读一遍,你肯定能学到东西的,在博客中放一些实用的东西跟大家分享交流,吼吼,废话不多说,先一起来看大体流程怎么走:

    大体步骤有如下几步:

      一:新建自己的Android工程

      二:熟悉并从官网http://www.sencha.com/products/sdk-tools/下载Sencha SDK 及基本使用的工具包

      三:以经典Project 《HelloWorld 》开始Sencha之旅吧  http://www.sencha.com/learn/hello-world

      四:整合Sencha与Android Project,完整最终版本的局部模块更新

     好了,以上就是大体的流程了,下面来看下具体的操作流程吧,如上所述,配置及下载Sencha SDK及工具包的步骤大家可以直接在官网中获取,在此不一一赘述,小马主要讲下实现局部更新的原理,供大家交流学习,吼吼….

首先:Android工程本来就是纯原生的Android工程,目录结构如下图所示:

 

上面让大家下载的Sencha SDK 及里面的一些工具如下图所示:

 

 

    只是里面加了一些基于HTML 、EXT、JS等完成的一些实例 DEMO,此外不多做解释,大家可私下瞅瞅,本文中心,用以上工具完整Android APK 局部模块更新,此处讲下实现原理,大家都知道,Android APK成功打包之后是不能再去动态的修改里面的数据的,更谈不上局部模块更新了,这样也就有了疑问,需求如果有APK局部模块更新的话是不是就不能做了,答案是否!这个地方我们可以这样,既然Sencha(使用Sencha的原因就是Sencha基本HTML5,而HTML5中又可以写JS,包括现在主流框架JQuery等,可以在JS中调用异步网络请求、调用JAVA代码,实现JQuery经典功能:动态异步刷新界面等)支持模块化更新的话,换个思路,可以把我们要更新的每个模块当成是一个基于Sencha 、HTML5、EXT的单独的工程,Android APK不能动态 添加模块,但APK里面的类,也就是我们的四大组件之一Activity中我们是可以通过网络访问去服务器下载我们所要使用的数据的,这样就好办了,继续……..

      举个最简单的例子:

             如果我们打包成的APK(XiaoMaSencha.apk) 中包含五、六个的子模块(模块一、、模块二模块三、模块四、模块五)甚至更多的模块的话,就可以把各个子模块当成一个完整的Sehcna实现的Project,在需要模块时通过Android APK中Activity中的网络请求来下载存储于服务器上的各个Sencha子模块,最终下载到本地SD卡上,供我们APK使用, 这样的话,就可以在即不违反Android APK 打包后不能动的前提下,又可以完成对其子模块的更新及操作,何乐不为?下面来看下具体的实现

    第一:完成局部模块更新的前提是在服务端先备好我们的子模块(子模块一、子模块二、子模块三……..)

    第二:完成本地可打包APK的Android工程XiaoMaSencha.apk(包含从服务端下载数据包功能)

    第三:在工程中嵌入PhoneGap来支持在安卓工程中

                  以:super.loadUrl(“file:///android_asset/sencha/init.html”);形式来加载基于HTML5、JS、JQuery等技术实现的子模块,此处嵌入PhoneGap的原因是PhoneGap支持以loadUrl来加载Sencha(HTML5、JQuery、EXT技术实现)存储于本地SD卡上的工程,只要文件完整并且路径正确就可正常使用Sencha实现的子模块。

   好了,原理就是这样,更新子模块,简单说白了就是:通过本地Android JAVA代码去下载存储于服务端子模块数据,借助PhoneGap等框架来实现APK局部模块的更新,举个例子:

    以以上XiaoMaSencha.apk(此apk包为以纯JAVA代码实现的Android工程,包含从服务器下载工具类,为下载子模块使用)为例,下载好基本Sencha框架实现的子模块数据包后,可借助PhoneGap优势(以loadUrl形式载入HTML5、JQuery、EXT技术实现模块)来加载子模块,如从服务器下载后的子模块包存储于SD卡根目录 下时,可使用PhoneGap以下形式来加载下载的数据包,如下:

 


 
 
  1. package com.xiaoma.sencha; 
  2.  
  3. import org.apache.cordova.DroidGap; 
  4.  
  5. import android.os.Bundle; 
  6. import android.view.Menu; 
  7. import android.view.View; 
  8. import android.view.View.OnClickListener; 
  9. import android.widget.Button; 
  10. import android.widget.CheckBox; 
  11. import android.widget.CompoundButton; 
  12. import android.widget.CompoundButton.OnCheckedChangeListener; 
  13. import android.widget.EditText; 
  14.  
  15. import com.foreveross.cube.R; 
  16.  
  17. public class MainActivity extends DroidGap 
  18.  
  19.     @Override 
  20.     public void onCreate(Bundle savedInstanceState) 
  21.     { 
  22.         super.onCreate(savedInstanceState); 
  23.         // setContentView(R.layout.login); 
  24.         super.loadUrl("sdcard/sencha/init.html"); 
  25.         // initView(); 
  26.     } 
  27.  

 

 

     加载的init.html的内容是基于HTML5、JS、JQuery、EXT等技术结合实现的一个网页来充当手机中使用的子模块,具体内容如下:此处只随便写点东西进去,如果大家有自己需求的话,可以用HTML5等技术实现,复杂功能也可以用这个实现,然后存储于服务器供Android工程下载到本地,借助PhoneGap来加载使用:


 
 
  1. <!DOCTYPE html> 
  2. <html> 
  3.     <head> 
  4.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
  5.         <meta name="viewport" content="width=device-width, initial-scale=1.0"/> 
  6.         <script src="assets/js/jquery-1.8.2.min.js"></script> 
  7.         <title>应用初始化......</title> 
  8.     </head> 
  9.     <body> 
  10.     <div style="display: none;"> 
  11.         <h1>应用初始化</h1> 
  12.         <!-- 等待对话框 --> 
  13.         <div id="progressModal" class="modal hide"> 
  14.           <div class="modal-header"> 
  15.             <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
  16.             <h3>加载中......</h3> 
  17.           </div> 
  18.         </div> 
  19.  
  20.         <!-- 出错对话框 --> 
  21.         <div id="errorModal" class="modal hide"> 
  22.           <div class="modal-header"> 
  23.             <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
  24.             <h3>出错</h3> 
  25.           </div> 
  26.           <div class="modal-body"> 
  27.             <p></p> 
  28.           </div> 
  29.         </div> 
  30.     </div> 
  31.     </body> 
  32. </html> 

 

        上面的HTML只是简单的举个例子, 如果大家有更复杂的功能,那得先过HTML5这一关了,不然免谈,呵呵,下面给大家贴几个用Sencha实现的运行效果吧,可照着官网的DEMO或API一步步实现 ,如下:

 

     

 

    好了,时间不早了,2点了,晕……写得有点乱,大家就先将就看看,小马今天只是写了下实现局部更新的大体思路,项目小DEMO太大啦,51规定大于2M的要上传到下载中心,小马网速太恶心了..晚上发的,有需要的留下邮箱,小马看到留言后定及时回复邮件,谢谢理解啦,有需要有朋友可以在此基础上加上功能扩展,用以上技术完全可以实现局部更新的功能了……   改天再总结几篇更加详细的文章来补充这篇的不足,不足之处还请批评、指出,一定及时改正,谢谢….O_O

 





     本文转自华华世界 51CTO博客,原文链接:http://blog.51cto.com/mzh3344258/1086202,如需转载请自行联系原作者





相关文章
|
Kubernetes Shell Linux
linux|shell脚本|有趣的知识---格式化输出日志和脚本调试方法以及kubernetes集群核心服务重启和集群证书备份脚本
linux|shell脚本|有趣的知识---格式化输出日志和脚本调试方法以及kubernetes集群核心服务重启和集群证书备份脚本
686 0
|
存储 人工智能 API
RAG:让AI不再胡说八道的秘密武器
想象一下,你的AI助手突然变成了一个什么都知道的专家,不再胡编乱造,而是有理有据地回答你的问题。这不是科幻小说,这就是RAG技术的魔力!让我们一起探索如何让AI变得更聪明、更可靠的奥秘。
612 0
|
存储 数据挖掘 数据处理
Pandas 数据筛选:条件过滤
Pandas 是 Python 最常用的数据分析库之一,提供了强大的数据结构和工具。本文从基础到高级,介绍如何使用 Pandas 进行条件过滤,包括单一条件、多个条件过滤、常见问题及解决方案,以及动态和复杂条件过滤的高级用法。希望本文能帮助你更好地利用 Pandas 处理数据。
1593 78
|
传感器 物联网 智能硬件
IoT设备与手机App之间实时消息通信解决方案
PLC 工控机和管理人员 App 的联动
2304 15
IoT设备与手机App之间实时消息通信解决方案
|
算法
PID算法原理分析及优化
这篇文章介绍了PID控制方法,一种广泛应用于机电、冶金等行业的经典控制算法。PID通过比例、积分、微分三个部分调整控制量,以适应系统偏差。文章讨论了比例调节对系统响应的直接影响,积分调节如何消除稳态误差,以及微分调节如何减少超调。还提到了数字PID的实现,包括位置式、增量式和步进式,并探讨了积分饱和和微分项的优化策略。最后,文章简述了串级PID在电机控制中的应用,并强调了PID控制的灵活性和实用性。
699 1
|
JSON JavaScript 前端开发
技术经验分享:ExtJS4MVC架构讲解
技术经验分享:ExtJS4MVC架构讲解
338 0
|
数据采集 存储 SQL
ETL基础知识,看完这一篇应该够了!
ETL基础知识,看完这一篇应该够了!
3098 1
|
数据采集 前端开发 Python
【项目】全国疫情实时追踪——python爬虫+flask+echarts实现(超详细)(二)
【项目】全国疫情实时追踪——python爬虫+flask+echarts实现(超详细)(二)
523 1
【项目】全国疫情实时追踪——python爬虫+flask+echarts实现(超详细)(二)
机械基础——连接与紧固(1)
一、键连接 1.平键连接 主要是实现轴上零件的周向固定,并能传递较大的扭矩,而且拆装方便,应用很广泛。以键的两侧面来传递扭矩,顶面与被联结件不接触,留有间隙。 ①普通平型键连接 端部有圆头(A型)、平头(B型)和单圆头(C型)三种形式。 ②薄型平键连接 薄型平键与普通平键相比,在键宽b相同时,键高h较小。 ③导向型平键连接 轴上零件与轴构成移动副时,可采用导向型平键连接。若轴上零件沿轴向移动距离较长,可用滑键连接。 【认标记 识参数】 普通平键的主要参数有宽度b、高度h、长度L,标记示例: ①宽度b=16mm、高度h=10mm、长度L=100mm普通A型平键:GB/T1096 键B16×1
2303 0

热门文章

最新文章