CN102455931B - 一种Android平台工程的开发方法及系统 - Google Patents
一种Android平台工程的开发方法及系统 Download PDFInfo
- Publication number
- CN102455931B CN102455931B CN201010525547.5A CN201010525547A CN102455931B CN 102455931 B CN102455931 B CN 102455931B CN 201010525547 A CN201010525547 A CN 201010525547A CN 102455931 B CN102455931 B CN 102455931B
- Authority
- CN
- China
- Prior art keywords
- resource
- file
- application
- engineering
- bag
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明属于计算机通讯领域,尤其涉及一种Android平台工程的开发方法及系统。该Android平台工程的开发方法包括:定义资源属性类,生成公用的资源属性ID(IDentity,识别码);根据资源属性ID组织资源文件,将资源文件单独生成资源应用包;将资源应用包设置成应用程序的资产文件,生成应用程序包;程序运行时:应用程序包中的应用程序解析资产文件中的资源应用包,导出资源内容;通过公用的资源属性ID,读取相应的资源文件,设置给应用程序包中应用程序使用。本发明的有益效果在于:在用户换肤或定制自己的界面时,只需要编译资源应用包,不用再关心代码,在没有源码的情况下,也可以修改资源文件,实现换肤。
Description
技术领域
本发明属于通信技术领域,尤其涉及一种Android平台工程的开发方法及系统。
背景技术
Android(一种手机操作系统)应用程序一般包含在一个单一的文件夹中,即每一个Android应用程序是一个独立的工程,其包括:AndroidManifest.xml,Java源代码、资源文件和资产文件。
AndroidManifest.xml为工程描述文件,位于每个应用程序的根目录下,它是Android的描述文件,提供应用程序的基本信息。
Java源代码是按照Java包的方式来组织目录结构,包括各个Java类的源代码。
资源文件包含XML文件、图片文件、原始数据文件等,独立于程序代码而存在,被放置在Android应用程序包的子目录res/中,在编译时编入应用程序,通过R类被使用或访问。
资产文件放置在子目录assets/中,不经常使用,因为它们的应用程序很少,仅在需要读取原始字节流时才需要保存数据为资产,必须使用AssetManager类来读取资产文件。
因此,一般应用程序只包含AndroidManifest.xml、Java源代码和资源文件。这种三位一体的思想体现了GUI(图形用户界面)的设计思想,描述文件负责宏观框架,Java负责逻辑,资源文件负责外观,通过控制资源文件可以达到不同的界面效果。
虽然这种通过R类来读取自带的资源是挺方便的,但如果应用做得比较复杂,使用起来就不方便了。 例如,应用想做几套皮肤,因为res/drawable/ 这个目录名称是固定的,不能在应用中自定义目录结构,不容易实现换肤功能。如果想换肤只能修改资源文件,重新编译生成应用程序包,如果没有源码也就无法实现换肤了。另外,对于切换界面的语言,虽然可以通过res/values-zh/定义描述资源,但必须通过系统的设置来选择语言,而不能通过用户在应用里的语言设置功能来改变语言。造成上述缺陷的原因在于:资源res中的目录名是固定的,而且只能根据系统的设置来控制选择,不能通过应用来选择目录名。
发明内容
本发明提供了一种Android工程的开发方法,旨在解决现有技术中换肤或定制自己的界面时需要重新编译生成应用程序包或修改应用程序包,且在没有源码或没有应用程序安装包的情况下,无法实现换肤的问题。
本发明是这样实现的,一种Android工程的开发方法,包括:
将资源文件单独生成资源应用包;
将资源应用包设置成应用程序的资产文件,生成应用程序包;
程序运行时:应用程序包中的应用程序解析资产文件中的资源应用包,导出资源内容;
读取相应的资源文件,设置给应用程序包中应用程序使用。
本发明的开发方法技术方案中,所述资源文件单独生成资源应用包之前,定义资源属性类,生成公用的资源属性ID(IDentity,识别码);根据所述资源属性ID组织资源文件,再将资源文件单独生成资源应用包;所述读取相应的资源文件是通过公用的资源属性ID进行读取。
本发明的开发方法技术方案还包括:所述步骤根据资源属性ID组织资源文件,将资源文件单独生成资源应用包,具体包括:
步骤b1:将源程序部分的工程描述文件和资源文件分别经过打包工具进行处理;
步骤b2:将处理后的工程描述文件放置到根目录;
步骤b3:将处理后的资源文件放置到res目录;
步骤b4:将资产文件放置到assets目录;
步骤b5: 生成资源应用包。
本发明的开发方法技术方案还包括:在所述步骤将资源应用包设置成应用程序的资产文件,生成应用程序包,包括:
步骤c1:将源程序部分的源码经过处理,生成Dex字节码,并将Dex字节码放置到根目录;
步骤c2:将源程序部分的工程描述文件经过打包工具进行处理,将处理后的工程描述文件放置到根目录;
步骤c3:将资源应用包设置成资产文件放置到assets目录;
步骤c4:生成应用程序包。
本发明的开发方法技术方案还包括:所述步骤c1具体包括:将源程序部分的源码通过编译器进行编译,生成Class字节码;将Class字节码经过处理,生成Dex字节码;将Dex字节码放置到根目录。
本发明的开发方法技术方案还包括:所述源码为Java源码,所述Java源码通过Java编译器进行编译。
本发明采取的另一技术方案为:一种Android工程的开发系统,包括资源应用包生成模块、应用程序包生成模块、解析模块和资源文件读取模块;所述资源应用包生成模块用于将资源文件单独生成一个资源应用包;所述应用程序包生成模块用于生成应用程序包,并将资源应用包设置成应用程序包的资产文件;所述解析模块用于解析资产文件中的资源应用包,导出资源内容;所述资源文件读取模块用于读取相应的资源文件,设置给应用程序包中应用程序使用。
本发明的开发系统技术方案还包括资源属性生成模块,用于定义资源属性类,生成公用的资源属性ID;所述资源应用包生成模块用于根据资源属性ID组织资源文件;所述资源文件读取模块用于通过公用的资源属性ID,读取相应的资源文件。
本发明的开发系统技术方案还包括:所述资源应用包生成模块具体工作方式为:将源程序部分的工程描述文件和资源文件分别经过打包工具进行处理;将处理后的工程描述文件放置到根目录;将处理后的资源文件放置到res目录;将资产文件放置到assets目录;生成资源应用包。
本发明的开发系统技术方案还包括:所述应用程序包生成模块具体工作方式为:将源程序部分的源码通过编译器进行编译,生成Class字节码;将Class字节码经过处理,生成Dex字节码;将源程序部分的工程描述文件经过打包工具进行处理;将Dex字节码放置到根目录;将处理后的工程描述文件放置到根目录;将资源应用包设置成资产文件放置到assets目录;生成应用程序包。
本发明的开发系统技术方案还包括:所述源码为Java源码,所述Java源码通过Java编译器进行编译。
本发明的技术方案具有如下优点或有益效果:本发明的方法及系统将资源文件与应用程序源码分离,在用户换肤或定制自己的界面时,只需要编译资源应用包,不用再关心程序源代码,在没有程序源代码的情况下,也可以通过修改资源文件,实现换肤;并且可以支持多个资源包,在不同资源应用包间进行切换,轻松实现换肤和多语言等功能;另外,资源包可随着需要安装或卸载,使用户可以很好的管理自己的系统资源。
附图说明
附图1是本发明Android平台工程的开发的方法的流程图;
附图2是本发明Android平台工程的开发的方法的交互框图;
附图3是本发明Android平台工程的开发方法生成资源应用包的流程图;
附图4是本发明Android平台工程的开发方法生成资源应用包的过程框图;
附图5是本发明Android平台工程的开发方法生成应用程序包的流程图;
附图6是本发明Android平台工程的开发方法生成应用程序包的过程框图;
附图7是本发明Android平台工程的开发系统的模块结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,Android平台工程的开发将资源文件与应用程序源码分离,在用户换肤或定制自己的界面时,只需要编译资源应用包,不用再关心程序源代码。
本发明的Android平台工程的开发是这样实现的,将资源文件单独生成资源应用包;将资源应用包设置成应用程序的资产文件,生成应用程序包;程序运行时:应用程序包中的应用程序解析资产文件中的资源应用包,导出资源内容;读取相应的资源文件,设置给应用程序包中应用程序使用。下面进行具体阐述:
请参阅图1和图2,图1是本发明Android平台工程的开发方法的流程图,图2是本发明Android平台工程的开发方法的交互框图。本发明Android平台工程的开发方法包括以下步骤:
步骤10:定义资源属性类,生成公用的资源属性ID(IDentity,识别码);
生成公用的资源属性ID,便于对资源文件进行分类管理和快速读取。资源属性ID是资源文件的唯一标识,应用程序可以通过这个ID快速找到资源文件。当然,还可以使用其它方式对资源文件进行管理,如开发者对资源文件进行的自定义等方式。
步骤20:根据资源属性ID组织资源文件,将资源文件单独生成一个资源应用包,命名为res.apk;
请参阅图3,是本发明Android平台工程的开发方法生成资源应用包的流程图。在步骤20中,生成资源应用包具体包括:
步骤21:将源程序部分的AndroidManifest.xml(工程描述文件)和资源文件分别经过aapt(Android打包工具)进行处理;
步骤22:将处理后的AndroidManifest.xml通过aapt放置到根目录;
步骤23:将处理后的资源文件通过aapt放置到res目录;
步骤24:将资产文件放置到assets目录;
步骤25:生成资源应用包。
其中,上述的步骤22到24并没有先后的逻辑关系限定,其可以同时进行,具体的实现可以参考图4中Android平台工程的开发方法生成资源应用包的过程框图。
步骤30:生成应用程序包,将其命名为app.apk,并将资源应用包res.apk设置成应用程序包的资产文件;
请参阅图5,是本发明Android平台工程的开发方法生成应用程序包的流程图。在步骤30中,生成应用程序包具体包括:
步骤31:将源程序部分的Java源码通过Java编译器进行编译,生成Class字节码;
步骤32:将Class字节码经过dx工具处理,生成Dex字节码;
步骤33:将源程序部分的AndroidManifest.xml经过aapt(Android打包工具)进行处理;
步骤34:将Dex字节码通过aapt放置到根目录;
步骤35:将处理后的AndroidManifest.xml通过aapt放置到根目录;
步骤36:将资源应用包设置成资产文件放置到assets目录;
步骤37:生成应用程序包。
其中,上述的步骤34到36并没有先后的逻辑关系限定,其可以同时进行,具体的实现可以参考图6中Android平台工程的开发方法生成应用程序包的过程框图。
在应用程序运行时:
步骤40:应用程序包中的应用程序解析资产文件中的资源应用包,导出res资源内容;
步骤50:通过公用的资源属性ID,读取相应的资源文件,设置给应用程序包中应用程序使用。
请参阅图7,是本发明Android平台工程的开发系统的结构图。本发明Android平台工程的开发系统包括资源属性生成模块、资源应用包生成模块、应用程序包生成模块、解析模块和资源文件读取模块。
资源属性生成模块用于定义资源属性类,生成公用的资源属性ID。
资源应用包生成模块用于根据资源属性ID组织资源文件,将资源文件单独生成一个资源应用包,其中,资源应用包生成模块具体工作原理为:将源程序部分的AndroidManifest.xml和资源文件分别经过aapt(Android打包工具)进行处理;将处理后的AndroidManifest.xml通过aapt放置到根目录;将处理后的资源文件通过aapt放置到res目录;将资产文件放置到assets目录;生成资源应用包。
应用程序包生成模块用于生成应用程序包,并将资源应用包res.apk设置成应用程序包的资产文件;其中,应用程序包生成模块具体工作原理为:将源程序部分的Java源码通过Java编译器进行编译,生成Class字节码;将Class字节码经过dx工具处理,生成Dex字节码;将源程序部分的AndroidManifest.xml经过aapt(Android打包工具)进行处理;将Dex字节码通过aapt放置到根目录;将处理后的AndroidManifest.xml通过aapt放置到根目录;将资源应用包设置成资产文件放置到assets目录;生成应用程序包。
解析模块用于解析资产文件中的资源应用包,导出res资源内容。
资源文件读取模块用于通过公用的资源属性ID,读取相应的资源文件,设置给应用程序包中应用程序使用。具体如上所述。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1. 一种Android平台工程的开发方法,包括:
将资源文件单独生成资源应用包;
将资源应用包设置成应用程序的资产文件,生成应用程序包;
程序运行时:应用程序包中的应用程序解析资产文件中的资源应用包,导出资源内容;
读取相应的资源文件,设置给应用程序包中应用程序使用;其中,
所述资源文件单独生成资源应用包之前,定义资源属性类,生成公用的资源属性ID;根据所述资源属性ID组织资源文件,再将资源文件单独生成资源应用包;所述读取相应的资源文件是通过公用的资源属性ID进行读取。
2.根据权利要求1所述的Android平台工程的开发方法,其特征在于,所述步骤根据资源属性ID组织资源文件,将资源文件单独生成资源应用包,包括:
步骤b1:将源程序部分的工程描述文件和资源文件分别经过打包工具进行处理;
步骤b2:将处理后的工程描述文件放置到根目录;
步骤b3:将处理后的资源文件放置到res目录;
步骤b4:将资产文件放置到assets目录;
步骤b5: 生成资源应用包。
3.根据权利要求1所述的Android平台工程的开发方法,其特征在于,在所述步骤将资源应用包设置成应用程序的资产文件,生成应用程序包,包括:
步骤c1:将源程序部分的源码经过处理,生成Dex字节码,并将Dex字节码放置到根目录;
步骤c2:将源程序部分的工程描述文件经过打包工具进行处理,将处理后的工程描述文件放置到根目录;
步骤c3:将资源应用包设置成资产文件放置到assets目录;
步骤c4:生成应用程序包。
4.根据权利要求3所述的Android平台工程的开发方法,其特征在于,所述步骤c1具体包括:将源程序部分的源码通过编译器进行编译,生成Class字节码;将Class字节码经过处理,生成Dex字节码;将Dex字节码放置到根目录。
5.根据权利要求4所述的Android平台工程的开发方法,其特征在于,所述源码为Java源码,所述Java源码通过Java编译器进行编译。
6.一种Android平台工程的开发系统,其特征在于,包括资源应用包生成模块、应用程序包生成模块、解析模块和资源文件读取模块;所述资源应用包生成模块用于将资源文件单独生成一个资源应用包;所述应用程序包生成模块用于生成应用程序包,并将资源应用包设置成应用程序包的资产文件;所述解析模块用于解析资产文件中的资源应用包,导出资源内容;所述资源文件读取模块用于读取相应的资源文件,设置给应用程序包中应用程序使用;
还包括资源属性生成模块,用于定义资源属性类,生成公用的资源属性ID;所述资源应用包生成模块用于根据资源属性ID组织资源文件;所述资源文件读取模块用于通过公用的资源属性ID,读取相应的资源文件。
7.根据权利要求6所述的Android平台工程的开发系统,其特征在于,所述资源应用包生成模块具体工作方式为:将源程序部分的工程描述文件和资源文件分别经过打包工具进行处理;将处理后的工程描述文件放置到根目录;将处理后的资源文件放置到res目录;将资产文件放置到assets目录;生成资源应用包。
8.根据权利要求6所述的Android平台工程的开发系统,其特征在于,所述应用程序包生成模块具体工作方式为:将源程序部分的源码通过编译器进行编译,生成Class字节码;将Class字节码经过处理,生成Dex字节码;将源程序部分的工程描述文件经过打包工具进行处理;将Dex字节码放置到根目录;将处理后的工程描述文件放置到根目录;将资源应用包设置成资产文件放置到assets目录;生成应用程序包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010525547.5A CN102455931B (zh) | 2010-10-28 | 2010-10-28 | 一种Android平台工程的开发方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010525547.5A CN102455931B (zh) | 2010-10-28 | 2010-10-28 | 一种Android平台工程的开发方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102455931A CN102455931A (zh) | 2012-05-16 |
CN102455931B true CN102455931B (zh) | 2014-03-19 |
Family
ID=46039144
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010525547.5A Active CN102455931B (zh) | 2010-10-28 | 2010-10-28 | 一种Android平台工程的开发方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102455931B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722370B (zh) * | 2012-05-24 | 2016-05-25 | 南京华设科技股份有限公司 | Android模块化开发方法 |
CN103034492B (zh) * | 2012-12-06 | 2016-01-20 | 广东欧珀移动通信有限公司 | 一种安卓设备资源id分段分配方法和系统 |
CN103605555A (zh) * | 2013-11-28 | 2014-02-26 | 中国科学院微电子研究所 | Vhdl信息获取方法和系统 |
CN103761107B (zh) * | 2014-02-13 | 2017-05-03 | 福建星网锐捷通讯股份有限公司 | 软件包定制的装置及方法 |
CN104834533B (zh) * | 2015-06-05 | 2018-12-14 | 东信和平科技股份有限公司 | 一种pc机安装程序的建立方法及装置 |
CN107273126B (zh) * | 2017-06-15 | 2021-02-09 | 中国银行股份有限公司 | 应用开发方法和装置 |
CN107463386A (zh) * | 2017-08-31 | 2017-12-12 | 四川长虹电器股份有限公司 | 一种管理android应用多国语言的方法 |
CN110489121B (zh) * | 2019-07-04 | 2024-04-19 | 北京雷石天地电子技术有限公司 | 一种皮肤包文件的生成方法及系统 |
CN112416418A (zh) * | 2020-08-13 | 2021-02-26 | 上海哔哩哔哩科技有限公司 | 应用组件的生成方法、装置、计算机设备和可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101553779A (zh) * | 2006-10-17 | 2009-10-07 | 三星Sds株式会社 | 将主机系统应用程序转换为开放系统应用程序的转换装置和方法 |
CN101751252A (zh) * | 2008-11-28 | 2010-06-23 | 方正国际软件(北京)有限公司 | 一种动态换肤的界面生成装置与方法 |
-
2010
- 2010-10-28 CN CN201010525547.5A patent/CN102455931B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101553779A (zh) * | 2006-10-17 | 2009-10-07 | 三星Sds株式会社 | 将主机系统应用程序转换为开放系统应用程序的转换装置和方法 |
CN101751252A (zh) * | 2008-11-28 | 2010-06-23 | 方正国际软件(北京)有限公司 | 一种动态换肤的界面生成装置与方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102455931A (zh) | 2012-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102455931B (zh) | 一种Android平台工程的开发方法及系统 | |
CN110825362B (zh) | 低代码应用软件开发系统及方法 | |
CN109597661B (zh) | 一种业务功能配置方法及装置 | |
CN109117119B (zh) | 一种多态组件融合方法 | |
KR101944570B1 (ko) | 변형 컨텍스트-인식 데이터 소스 관리 | |
CN105723341B (zh) | 用于布局引擎和脚本引擎的存储器模型的实现方法及系统 | |
CN102096588A (zh) | 一种包含控件的页面的建立方法 | |
CN110020307A (zh) | 一种客户端视图的绘制方法和装置 | |
KR20110023755A (ko) | 통합 환경 생성기 | |
CN110059456B (zh) | 代码保护方法、代码保护装置、存储介质与电子设备 | |
CN107273109B (zh) | 对源代码建模的方法和系统以及使用数据模型的方法 | |
US20120227028A1 (en) | Graphical programming object population user interface autogeneration | |
El-Kassas et al. | ICPMD: Integrated cross-platform mobile development solution | |
CN107678777A (zh) | 一种软件文档的管理方法、装置及终端 | |
JP2004503866A (ja) | モジュラーコンピュータシステムおよび関連方法 | |
CN102693238A (zh) | Widget应用方法、系统及多媒体终端 | |
CN105005497A (zh) | 一种Java卡虚拟机中本地函数的调用方法及装置 | |
CN107391099B (zh) | 一种资源预处理方法及装置 | |
Sur | Visual Studio 2012 and. NET 4.5 Expert Development Cookbook | |
CN113342399A (zh) | 应用项目的结构配置方法、装置及可读存储介质 | |
KR20190060561A (ko) | 이종 디바이스의 선택적 추상화를 통한 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법 및 시스템 | |
Nestor Ribeiro et al. | An automated model based approach to mobile UI specification and development | |
US8997035B2 (en) | Extensible template-based code generator builder | |
Bilgin | Hands-on Mobile Development with. NET Core: Build Cross-platform Mobile Applications with Xamarin, Visual Studio 2019, and. NET Core 3 | |
US20120330878A1 (en) | Conventions for inferring data models |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |