SlideShare ist ein Scribd-Unternehmen logo
1 von 11
Android 快速发布
&持续集成
Agenda
• 目标
• 实现方式
• 代码讲解
• 经验&感想
目标

• 刚发布,用户的需求又变了……怎么办?
• 项目组采用敏捷开发,需要快速迭代,持续集成……怎么办?
• App的不同功能由不用的小组负责开发,整合经常出问题……
  怎么办?




            肿么办?
实现方式

• PhoneGap(android)
  一个用基于HTML,CSS和JavaScript的,创建跨平台移动应用的快速
  开发平台
  • 原生+HTML结合
  • 重网页+轻原生app

  • 性能差
  • Webview释放不及时,会引起crash

  参考资料:
  http://www.aliued.cn/2012/04/11/%E5%88%9D%E8%AF%86pho
  negap.html
实现方式(原生)

• Android APK 结构
  • AndroidManifest.xml
          描述了APK包的固有属性,是不可变部分。
  • classes.dex
          包含了Java类(.class)被编译打包成了Dalvik虚拟机的中间
          代码。
  • res
          文件夹下的包含了所有可访问的资源文件。
实现方式(原生)


Android通过dalvik.system.DexClassLoader提供了
动态加载Java代码的能力,如果我们能够在Activity
启动之前,替换全局的ClassLoader (
Application.mBase.mPackageInfo.mClassLoade
r),
那么我们就可以改变载入的Activity类对应的实现
。
实现原理(原生)

• Java反射
  利用Java反射机制替换全局ClassLoader到我们自定义的
  dalvik.system.DexClassLoader,从而在程序运行过程中改变
  Activity的具体实现

• Activity上下文
  每一个Activity的上下文都包含了自身的ClassLoader和资源管
  理,通过重载以下四个函数就可以替换Activity所载入的资源
  和代码的路径指向:
  • ClassLoader getClassLoader()
  • AssetManager getAssets()
  • Resources getResources()
  • Theme getTheme()
代码讲解
注意点

• 在Hotfix中开发的Activity必须和主程序AndroidManifest.xml
  中指定的类名相同
• 无法动态的增加Activity
• 无法保证在Google升级Android系统后该方法仍然有效
经验和感想
参考资料
• https://github.com/mmin18/AndroidDynamicLoader
• https://github.com/probablycorey/wax(iOS)
•  http://www.aliued.cn/2012/04/11/%E5%88%9D%E8%AF%86pho
negap.html

Weitere ähnliche Inhalte

Was ist angesagt?

Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧
Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧
Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧升煌 黃
 
使用 .NET Standard 開發跨平台應用程式
使用 .NET Standard 開發跨平台應用程式使用 .NET Standard 開發跨平台應用程式
使用 .NET Standard 開發跨平台應用程式Gelis Wu
 
軟體開發之路甘苦談(Gelis)
軟體開發之路甘苦談(Gelis)軟體開發之路甘苦談(Gelis)
軟體開發之路甘苦談(Gelis)Gelis Wu
 
實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)Gelis Wu
 
HTML5 生态系统和应用架构模型
HTML5 生态系统和应用架构模型HTML5 生态系统和应用架构模型
HTML5 生态系统和应用架构模型Tom Fan
 
Crazy talk6 产品说明
Crazy talk6 产品说明Crazy talk6 产品说明
Crazy talk6 产品说明mobiku
 
Modern web 2020 - 使用 Nx 管理超大型前後端專案
Modern web 2020 - 使用 Nx 管理超大型前後端專案Modern web 2020 - 使用 Nx 管理超大型前後端專案
Modern web 2020 - 使用 Nx 管理超大型前後端專案升煌 黃
 
美团点评技术沙龙011 - 客户端用户体验数据量化
美团点评技术沙龙011 - 客户端用户体验数据量化美团点评技术沙龙011 - 客户端用户体验数据量化
美团点评技术沙龙011 - 客户端用户体验数据量化美团点评技术团队
 
美团点评技术沙龙05 - H5在线制作发布平台dpub
美团点评技术沙龙05 - H5在线制作发布平台dpub美团点评技术沙龙05 - H5在线制作发布平台dpub
美团点评技术沙龙05 - H5在线制作发布平台dpub美团点评技术团队
 
2020 11-27 Taiwan DDD Conference
2020 11-27 Taiwan DDD Conference2020 11-27 Taiwan DDD Conference
2020 11-27 Taiwan DDD ConferenceGuan-Rong Huang
 
Appcan移动应用开发平台介绍120409
Appcan移动应用开发平台介绍120409Appcan移动应用开发平台介绍120409
Appcan移动应用开发平台介绍120409zhengyiwuxian
 
ASP.NET Core 3.0 新功能
ASP.NET Core 3.0 新功能ASP.NET Core 3.0 新功能
ASP.NET Core 3.0 新功能Edward Kuo
 

Was ist angesagt? (12)

Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧
Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧
Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧
 
使用 .NET Standard 開發跨平台應用程式
使用 .NET Standard 開發跨平台應用程式使用 .NET Standard 開發跨平台應用程式
使用 .NET Standard 開發跨平台應用程式
 
軟體開發之路甘苦談(Gelis)
軟體開發之路甘苦談(Gelis)軟體開發之路甘苦談(Gelis)
軟體開發之路甘苦談(Gelis)
 
實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)
 
HTML5 生态系统和应用架构模型
HTML5 生态系统和应用架构模型HTML5 生态系统和应用架构模型
HTML5 生态系统和应用架构模型
 
Crazy talk6 产品说明
Crazy talk6 产品说明Crazy talk6 产品说明
Crazy talk6 产品说明
 
Modern web 2020 - 使用 Nx 管理超大型前後端專案
Modern web 2020 - 使用 Nx 管理超大型前後端專案Modern web 2020 - 使用 Nx 管理超大型前後端專案
Modern web 2020 - 使用 Nx 管理超大型前後端專案
 
美团点评技术沙龙011 - 客户端用户体验数据量化
美团点评技术沙龙011 - 客户端用户体验数据量化美团点评技术沙龙011 - 客户端用户体验数据量化
美团点评技术沙龙011 - 客户端用户体验数据量化
 
美团点评技术沙龙05 - H5在线制作发布平台dpub
美团点评技术沙龙05 - H5在线制作发布平台dpub美团点评技术沙龙05 - H5在线制作发布平台dpub
美团点评技术沙龙05 - H5在线制作发布平台dpub
 
2020 11-27 Taiwan DDD Conference
2020 11-27 Taiwan DDD Conference2020 11-27 Taiwan DDD Conference
2020 11-27 Taiwan DDD Conference
 
Appcan移动应用开发平台介绍120409
Appcan移动应用开发平台介绍120409Appcan移动应用开发平台介绍120409
Appcan移动应用开发平台介绍120409
 
ASP.NET Core 3.0 新功能
ASP.NET Core 3.0 新功能ASP.NET Core 3.0 新功能
ASP.NET Core 3.0 新功能
 

Andere mochten auch

Presentacio del disc dur
Presentacio del disc durPresentacio del disc dur
Presentacio del disc durAdria Vendrell
 
Historia informatica
Historia informaticaHistoria informatica
Historia informaticacarlosvt98
 
Ziakam - VCT 4670 - Final Client Project Presentation
Ziakam - VCT 4670 - Final Client Project PresentationZiakam - VCT 4670 - Final Client Project Presentation
Ziakam - VCT 4670 - Final Client Project Presentationnziakam
 
Miguel de Cervantes
Miguel de CervantesMiguel de Cervantes
Miguel de CervantesRosaGL
 
MACBET Journal Evaluation "The Book of Outcomes"
MACBET Journal Evaluation "The Book of Outcomes"MACBET Journal Evaluation "The Book of Outcomes"
MACBET Journal Evaluation "The Book of Outcomes"Onur Oguz Dellal
 
Powerpoint
PowerpointPowerpoint
Powerpointlucimb
 
Test presentation
Test presentationTest presentation
Test presentationAnnie Cheng
 
Camara,audio i video
Camara,audio i videoCamara,audio i video
Camara,audio i videolaiaolle
 
Nodejsによるapiサーバ構築事例
Nodejsによるapiサーバ構築事例Nodejsによるapiサーバ構築事例
Nodejsによるapiサーバ構築事例Hidetoshi Mori
 
Facebook android sdk research
Facebook android sdk researchFacebook android sdk research
Facebook android sdk researchwhykill
 
How the NJ Tech Meetup community rallied around HealHoboken.org after Hurrica...
How the NJ Tech Meetup community rallied around HealHoboken.org after Hurrica...How the NJ Tech Meetup community rallied around HealHoboken.org after Hurrica...
How the NJ Tech Meetup community rallied around HealHoboken.org after Hurrica...rocketfuel.cc
 

Andere mochten auch (20)

Tabela periódica
Tabela periódicaTabela periódica
Tabela periódica
 
Presentacio del disc dur
Presentacio del disc durPresentacio del disc dur
Presentacio del disc dur
 
Historia informatica
Historia informaticaHistoria informatica
Historia informatica
 
Ziakam - VCT 4670 - Final Client Project Presentation
Ziakam - VCT 4670 - Final Client Project PresentationZiakam - VCT 4670 - Final Client Project Presentation
Ziakam - VCT 4670 - Final Client Project Presentation
 
Presentation00
Presentation00Presentation00
Presentation00
 
Miguel de Cervantes
Miguel de CervantesMiguel de Cervantes
Miguel de Cervantes
 
NaNa
NaNaNaNa
NaNa
 
Trabalho Saf Itatiba 2012
Trabalho Saf Itatiba 2012Trabalho Saf Itatiba 2012
Trabalho Saf Itatiba 2012
 
MACBET Journal Evaluation "The Book of Outcomes"
MACBET Journal Evaluation "The Book of Outcomes"MACBET Journal Evaluation "The Book of Outcomes"
MACBET Journal Evaluation "The Book of Outcomes"
 
Powerpoint
PowerpointPowerpoint
Powerpoint
 
Test presentation
Test presentationTest presentation
Test presentation
 
Proxecto abalar
Proxecto abalarProxecto abalar
Proxecto abalar
 
Caligramas
CaligramasCaligramas
Caligramas
 
Para diabeticos
Para diabeticosPara diabeticos
Para diabeticos
 
Camara,audio i video
Camara,audio i videoCamara,audio i video
Camara,audio i video
 
Toxico dinamia y toxico cin utica
Toxico dinamia y toxico cin uticaToxico dinamia y toxico cin utica
Toxico dinamia y toxico cin utica
 
Nodejsによるapiサーバ構築事例
Nodejsによるapiサーバ構築事例Nodejsによるapiサーバ構築事例
Nodejsによるapiサーバ構築事例
 
Twins of Faith 2012 notes (arina)
Twins of Faith 2012 notes (arina)Twins of Faith 2012 notes (arina)
Twins of Faith 2012 notes (arina)
 
Facebook android sdk research
Facebook android sdk researchFacebook android sdk research
Facebook android sdk research
 
How the NJ Tech Meetup community rallied around HealHoboken.org after Hurrica...
How the NJ Tech Meetup community rallied around HealHoboken.org after Hurrica...How the NJ Tech Meetup community rallied around HealHoboken.org after Hurrica...
How the NJ Tech Meetup community rallied around HealHoboken.org after Hurrica...
 

Ähnlich wie Android快速发布&持续集成

開放原始碼 Ch3.1 mobile - oss - oss行動領域-1 (ver1.0)
開放原始碼 Ch3.1  mobile - oss - oss行動領域-1 (ver1.0) 開放原始碼 Ch3.1  mobile - oss - oss行動領域-1 (ver1.0)
開放原始碼 Ch3.1 mobile - oss - oss行動領域-1 (ver1.0) My own sweet home!
 
Appcan介绍自己的应用开发平台
Appcan介绍自己的应用开发平台Appcan介绍自己的应用开发平台
Appcan介绍自己的应用开发平台MOBINODE
 
移动端跨平台技术原理
移动端跨平台技术原理移动端跨平台技术原理
移动端跨平台技术原理gorillazf
 
一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps一步一步开发Html5 mobile apps
一步一步开发Html5 mobile appsAdam Lu
 
Appcan平台介绍
Appcan平台介绍Appcan平台介绍
Appcan平台介绍36Kr.com
 
Android 研发的昨天、今天 和 明天
Android 研发的昨天、今天 和 明天Android 研发的昨天、今天 和 明天
Android 研发的昨天、今天 和 明天oasisfeng
 
Universal windows apps 開發—運用 html 及 java script
Universal windows apps 開發—運用 html 及 java scriptUniversal windows apps 開發—運用 html 及 java script
Universal windows apps 開發—運用 html 及 java scriptIan Chen
 
Android裝置開發過程的軟硬整合關鍵及挑戰
Android裝置開發過程的軟硬整合關鍵及挑戰Android裝置開發過程的軟硬整合關鍵及挑戰
Android裝置開發過程的軟硬整合關鍵及挑戰tick
 
React Native & V2HOT
React Native & V2HOTReact Native & V2HOT
React Native & V2HOTXcat Liu
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 
Android 4-app
Android 4-appAndroid 4-app
Android 4-applydiafly
 
极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)Will Huang
 
使用GoogleAppEngine建立个人信息中心
使用GoogleAppEngine建立个人信息中心使用GoogleAppEngine建立个人信息中心
使用GoogleAppEngine建立个人信息中心Du Yamin
 
Web设计 2 工欲善其事(开发web项目工具的选择)
Web设计 2 工欲善其事(开发web项目工具的选择)Web设计 2 工欲善其事(开发web项目工具的选择)
Web设计 2 工欲善其事(开发web项目工具的选择)ziggear
 
6 rexsee:会html就会android
6 rexsee:会html就会android6 rexsee:会html就会android
6 rexsee:会html就会android36Kr.com
 
Html5移动网站开发实践
Html5移动网站开发实践Html5移动网站开发实践
Html5移动网站开发实践Web Zhao
 
I os与android多平台开发心得
I os与android多平台开发心得I os与android多平台开发心得
I os与android多平台开发心得drewz lin
 

Ähnlich wie Android快速发布&持续集成 (20)

開放原始碼 Ch3.1 mobile - oss - oss行動領域-1 (ver1.0)
開放原始碼 Ch3.1  mobile - oss - oss行動領域-1 (ver1.0) 開放原始碼 Ch3.1  mobile - oss - oss行動領域-1 (ver1.0)
開放原始碼 Ch3.1 mobile - oss - oss行動領域-1 (ver1.0)
 
App开发过程的演变之路
App开发过程的演变之路App开发过程的演变之路
App开发过程的演变之路
 
Appcan介绍自己的应用开发平台
Appcan介绍自己的应用开发平台Appcan介绍自己的应用开发平台
Appcan介绍自己的应用开发平台
 
移动端跨平台技术原理
移动端跨平台技术原理移动端跨平台技术原理
移动端跨平台技术原理
 
一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps
 
Appcan平台介绍
Appcan平台介绍Appcan平台介绍
Appcan平台介绍
 
Android 研发的昨天、今天 和 明天
Android 研发的昨天、今天 和 明天Android 研发的昨天、今天 和 明天
Android 研发的昨天、今天 和 明天
 
Android工作坊
Android工作坊Android工作坊
Android工作坊
 
Universal windows apps 開發—運用 html 及 java script
Universal windows apps 開發—運用 html 及 java scriptUniversal windows apps 開發—運用 html 及 java script
Universal windows apps 開發—運用 html 及 java script
 
Android裝置開發過程的軟硬整合關鍵及挑戰
Android裝置開發過程的軟硬整合關鍵及挑戰Android裝置開發過程的軟硬整合關鍵及挑戰
Android裝置開發過程的軟硬整合關鍵及挑戰
 
React Native & V2HOT
React Native & V2HOTReact Native & V2HOT
React Native & V2HOT
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
Android 4-app
Android 4-appAndroid 4-app
Android 4-app
 
极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)
 
使用GoogleAppEngine建立个人信息中心
使用GoogleAppEngine建立个人信息中心使用GoogleAppEngine建立个人信息中心
使用GoogleAppEngine建立个人信息中心
 
Web设计 2 工欲善其事(开发web项目工具的选择)
Web设计 2 工欲善其事(开发web项目工具的选择)Web设计 2 工欲善其事(开发web项目工具的选择)
Web设计 2 工欲善其事(开发web项目工具的选择)
 
6 rexsee:会html就会android
6 rexsee:会html就会android6 rexsee:会html就会android
6 rexsee:会html就会android
 
Html5移动网站开发实践
Html5移动网站开发实践Html5移动网站开发实践
Html5移动网站开发实践
 
I os与android多平台开发心得
I os与android多平台开发心得I os与android多平台开发心得
I os与android多平台开发心得
 
行動技術開發概論
行動技術開發概論行動技術開發概論
行動技術開發概論
 

Android快速发布&持续集成

Hinweis der Redaktion

  1. 一个Android应用在启动时,首先Dalvik加载的是Android自身的框架。之后会加载APK包中的classes.dex文件到全局的ClassLoader。最后根据AndroidManifest.xml中指定的类名,创建对应的Activity实例来展示UI。
  2. Android框架本身就是一个插件系统,FragmentLoader项目利用了这一特性,采用极少的代码就实现了较完善的动态加载特性,几乎所有的业务逻辑代码和界面所需的资源文件都可以实现动态加载。