导航:首页 > 操作系统 > android包分类

android包分类

发布时间:2025-02-23 18:12:39

‘壹’ app和apk什么区别

所代表的意义上有所不同。

APP:应用程序,Application的缩写。

apk:android application package,Android应用程序包。

文件格式不同。

APP:没有固定的格式,取决于厂家的APP生产。

apk:APK 文件基于 ZIP 文件格式,它与JAR文件的构造方式相似,互联网媒体类型是:application/vnd.android.package-archive。

(1)android包分类扩展阅读:

APK是Android application package的缩写,即Android安装包(apk)。APK是类似SymbianSis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。

apk文件和sis一样,把androidsdk编译的工程打包成一个安装程序文件,格式为apk。 APK文件其实是zip格式,但后缀名被修改为apk。

通过UnZip解压后,可以看到Dex文件,Dex是DalvikVM executes的简称,即Android Dalvik执行程序,并非java ME的字节码而是Dalvik字节码。Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接但不同于Windowsmobile中的PE文件,程序的保密性和可靠性不是很高。

通过dexmp命令可以反编译它,但这种架构符合发展规律,微软的WindowsGadgets(WPF)也采用了这种架构方式。在Android平台中,dalvikvm的执行文件被打包为apk格式,最终运行时加载器会先解压,然后获取编译后的androidmanifest.xml文件中的permission声明对安全访问的限制。

要知道仍然存在很多安全限制,但将apk文件传到/system/app文件夹下会发现执行是不受限制的。也许我们平时安装都不会选用这个文件夹,但在androidrom中,系统的apk文件默认会放入这个文件夹,它们拥有root权限。

‘贰’ android 的apk包有什么组成

1.APK文件简介
APK是AndroidPackage的缩写,即即Androidapplicationpackage文件或Android安装包。每个要安装到Android平台的应用都要被编译打包为一个单独的文件,后缀名为.apk。APK文件是用专业软件eclipse编译生成的文件包,其中包含了应用的二进制代码、资源、配置文件等。通过将APK文件直接传到Android手机中执行即可安装。APK文件其实就是zip格式,但其扩展名被改为apk,用解压软件可以直接打开。通过WinRAR或UnZip解压后,你会看到有几个文件和文件夹。一个典型的APK文件通常有下列内容组成:AndroidManifest.xml程序全局配置文件classes.dexDalvik字节码
resources.arsc
编译后的二进制资源文件
META-INF\该目录下存放的是签名信息res\
该目录存放资源文件
assets\该目录可以存放一些配置文件
下面对这些文件和目录做些基本的注释和介绍。•AndroidManifest.xml
该文件是每个应用程序都必须定义和包含的文件,它描述了应用程序的名字、版本、权限、引用的库文件等等信息。需要解包后才能加以阅读。
•classes.dex文件
classes.dex是java源码编译后生成的java字节码文件。dex是DalvikVMexecutes的全称,即AndroidDalvik执行程序,并非JavaME的字节码而是Dalvik字节码。•resources.arsc
编译后的二进制资源文件。•META-INF目录
META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。在eclipse编译生成一个apk包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。这就保证了apk包里的文件不能被随意替换。比如拿到一个apk包后,如果想要替换里面的一幅图片,一段代码,或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染
和恶意修改增加了难度,有助于保护系统的安全。•res目录
res目录存放资源文件。包括图片,字符串等等。解包后,几乎所有可能的修改和编辑工作基本都在这里。•assets目录
assets目录可以存放一些配置文件,这些文件的内容在程序运行过程中可以通过相关的API获得。
2.APK文件的解包和打包
APK文件是用专业软件eclipse编译生成的文件包。在网上可以找到许多软件来对APK的内容进行反编译,例如:可以通过AXMLPrinter2工具和命令:java-jarAXMLPrinter2.jarAndroidManifest.xml解开在apk中的AndroidManifest.xml。最近,业界有一个功能强大的解包打包工具包apktool,可以在Windows下用来方便快速地对APK文件进行解包和打包,给修改和编辑工作带来许多方便。下面来介绍它的使用。
1)APKtool软件包
APKtool软件包有2个程序组成:apktool.jar和aapt.exe另外提供一个批处理文件:apktool.bat,其内容为:java-jar"%~dp0\apktool.jar"%1%2%3%4%5%6%7%8%9
运行apktools.jar需要java环境(1.6.0版本以上)。apktool.jar用于解包,apktool.jar和aapt.exe联合用于打包。2)APK文件的解包
下面以解开Contacts.apk为例。首先把Contacts.apk复制到当前工作目录下(例:Test)。在DOS下打入命令apktooldContacts.apkABC
这里“d”表示要解码。Contacts.apk是要解包的APK文件。ABC是子目录名。所有解包的文件都会放在这个子目录内。3)APK文件的打包在DOS下打入命令
apktoolbABCNew-Contacts.apk这里“b”表示要打包
ABC是子目录名,是解包时产生的子目录,用来存放所有解包后的和修改后的文件。
New-Contacts.apk是打包后产生的新的APK文件。4)Framework框架文件
在解开APK文件时,apktool需要框架文件(framework-res.apk)来解码和打包。Apktool已经包含了标准的框架,所以在大多数APK文件的解包时,不需要另外提供框架文件。但是,某些制造商使用了他们自己的框架文件,为了解包,就不得不从手机中把框架文件(framework-res.apk)提取出来,然后安装到计算机。安装命令是:
apktoolifframework-res.apk
安装后就会得到:~\apktool\framework\1.apk5)解包、解包和签名批处理
在实际使用时,可能对多个APK文件进行处理。方便的做法是写成批处理文件。打包和签名可以一次完成。

解包批处理命令:
for%%iin(*.apk)dojava-jarapktool.jard%%i_%%i&&move_%%iModifying_Files&©%%iBackuped_Raw_Files&&@echoFile[%%i]unpackingprocessiscompleted!
打包和签名批处理命令:
for/d%%iin(*)docd..&&java-jarapktool.jarbModifying_Files\%%i&&
java
-jar
signapk.jar
testkey.x509.pem
testkey.pk8
Modifying_Files\%%i\dist\*.apk%%i&&ren%%iNew%%i&&moveNew%%iModified_Signed_Files&&@echo%%iCompleterepackingandSigning

‘叁’ 镓嬫満瀹夎呭寘镙煎纺

AndroidAPK銆乮OSIPA銆
1銆丄ndroidAPK锛欰ndroidAPK鏄疉ndroid绯荤粺浣跨敤镄勫畨瑁呭寘镙煎纺銆侫PK鏄疉ndroidPackage镄勭缉鍐欙纴鍗矨ndroid瀹夎呭寘銆侫PK鏄涓绉嶅帇缂╂枃浠讹纴鍐呴儴鍖呭惈浜咥ndroid搴旂敤绋嫔簭镄勪唬镰併佽祫婧愭枃浠跺拰娓呭崟鏂囦欢绛夈傜敤鎴峰彲浠ラ氲繃鐩存帴鍦ˋndroid璁惧囦笂镓ц孉PK鏂囦欢鎴栭氲繃搴旂敤鍟嗗簵杩涜屽畨瑁呫傞氲繃钖勭嶆笭阆撹幏鍙栫殑APK鏂囦欢鍙浠ュ畨瑁呭湪Android镓嬫満鎴栧钩𨱒跨数鑴戜笂銆
2銆乮OSIPA锛歩OSIPA鏄鑻规灉搴旂敤鏂囦欢镄勬牸寮忋侷PA鏄痠PhoneApplication镄勭缉鍐欙纴鏄涓绉嶅帇缂╂枃浠讹纴鍖呭惈浜唅OS搴旂敤绋嫔簭镄勪簩杩涘埗浠g爜銆佽祫婧愭枃浠跺拰绛惧悕绛夈傜敤鎴峰彲浠ラ氲繃iTunes鎴栧埆镄刬OS璁惧囩$悊宸ュ叿瀹夎匢PA鏂囦欢鍒癷Phone銆乮Pad鎴杋PodTouch涓娿傜敤鎴烽氲繃AppStore涓嬭浇鍜屽畨瑁卛OS搴旂敤绋嫔簭锛岃屼笉鐢ㄧ洿鎺ュ勭悊IPA鏂囦欢銆

‘肆’ Android活动命名是怎样的规则

一.标识符命名方法
1 .小驼峰命名法,除首单词外,其余所有单词的第一个字母大写。如:allPrice,getAllNames
2.大驼峰命名法,所有单词的第一个字母大写。如:GuideActivity,StudentInfoBean
3.下划线命名法:单词与单词间用下划线做间隔。如:activity_main,select_backGround_color
二.命名规范
(一)包(packages)的命名规范:
采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名lwz(为个人或公司名称,可以简写),三级包名guidecity(根据应用进行命名),四级包名ui或utils等(模块名或层级名),根据实际情况也是可以用五级包名,六级包名。
这里的四级包名是要重点理解和分类的,例如:com.lwz.应用.utils ,此包中包含:公共工具方法类
1.utils
此包中包含:公共工具方法类,比如:SPHelperUtil、TimeUitl、FileUtil等
2.adapter
此包中包含:一些适配器的类,比如:ArticleAdapter、FansAdapter,HistorAdaper等
3.base
此包中包含:一些共同类的基类,比如:BaseActivity(所有的Activity类都继承这个类)、BaseFragment(所有的Fragment都继承这个类),ListItemAdapter(封装了Base Adapter的基类)等
4.bean
此包中包含:一些属性对象类,比如:StudentBean、LonginBean、ArticleBean等
5.config
此包中包含:最顶级的配置类,比如:MyApp(继承了Application)
6.httpservice
此包中包含:Http数据的请求接口类,好像Retrofit网络框架请求网络数据才要使用。如:ILogin接口,IAddTopic接口,IUpdate等
7.interface
此包中包含:某个页面或对象的所用操作接口类,这个接口主要是定义这个对象的所有方法。如:IUser接口,IArticle接口,ITopic接口等
8.model
这是MVC或MVP框架设计中的M。此包中包含:某个页面或对象的所用操作类,这个类继承了上面定义的interface接口,重写并实现厘米那的方法。如:UserModel,ArticleMode类,TopicMode类等
9.ui
这个ui表示的页面的意思,也是MVC或MVP中的V,很多人把这个包名写成activity,其实是不准确的,因为ui包含了activity和fragment,所以ui是四级包名,而activity和fragment是ui包下的五级包名。
activity此包中包含:Activity对象类。如:MainActivity类,HomeActivity类,FansListActivity类等。如果是使用了MVP框架模式,activity包名下还可以有六级包名,比如:loginMVP(包含ILoginView接口类,LoginPresenter类)、seleteTopicMVP
fragment此包中包含:Fragment对象类。但是Fragment一般都是多个存在的,所以fragment包下一般还有六级包名,表示里面是哪个页面的Fragment对象。
10.weight
此包中包含:自定义View或自定义对话框等视图类。如:CursroDialog类,SpringScrollView类,ScrollListView类等
11.db
此包中包含:数据库操作类
12.service
此包中包含:Service服务类
13.broadcast
此包中包含:Broadcast广播接收者类
14.provider
此包中包含:Provider内容提供者类(用得很少)
包名规划我感觉对程序后期阅读或修改有很大的帮助,特别是很大的程序,文件太多,不规划的话自己都不知道这个类是干什么的!
当然如果程序中没有这一类的文件,这个包名是可以不写,但是一些基本的包名,基本每个程序都是需要的比如:ui、utils、adapter、weight、bean等
(二)类(classes)的命名规范:
一般用名词,采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的,比如HTML,URL,如果类名称中包含单词缩写,则单词缩写的每个字母均应大写。
以下是部分示例说明:
1.activity 类,如欢迎页面类WelcomeActivity.
2.adapter类,如商品详情适配器ProctDetailAdapter
3.util公共方法类,如:线程池管理类:ThreadPoolManager,日志工具类:LogUtil
4.db数据库类,以DBHelper后缀标识。如城市数据库:CityDBHelper
5.Service类,以Service为后缀标识
6.BroadcastReceive,以Broadcast为后缀标识
7.ContentProvider,以Provider为后缀标识
(三)接口(interface):
命名规则与类一样采用大驼峰命名法,多以able或ible结尾或以I开头,如Runnable、Accessible、IUser。
(四)方法(methods)的命名规则:
一般使用动词或动名词,采用小驼峰命名法 例如:onCreate(),run()
>1.initXXX()初始化相关方法,使用init为前缀标识
2.isXXX()、checkXXX() 方法返回值为boolean型的请使用is或check为前缀标识
3.getXXX()返回某个值的方法,使用get为前缀标识
4.processXXX() 对数据进行处理的方法,尽量使用process为前缀标识
5.displayXXX() 弹出提示框和提示信息,使用display为前缀标识
6.saveXXX() 与保存数据相关的,使用sav为e前缀标识
7.resetXXX() 对数据重组的,使用reset前缀标识
8.clearXXX()removeXXX() 清除数据相关的,使用clear或remove为前缀标识
9.drawXXX() 绘制数据或效果相关的,使用draw前缀标识

(五)变量(variables)采用小驼峰命名法。类中控件名称一般与xml布局id保持一致
(六)常量(constants)全部大写,采用下划线命名法.例如:MIN_WIDTH
(七)XML文件(布局文件):全部小写,采用下划线命名法,
例如:main_activity.xml, item_activity.xml、homeposter_item_poster.xml
(八)资源文件(图片): 全部小写,采用下划线命名法,加前缀区分

命名
说明

btn_login_normal 按钮图片使用btn_功能_说明
bg_head 背景图片使用bg_功能_说明
def_search_cell 默认图片使用def_功能_说明
icon_more_help 图标图片使用icon_功能_说明
seg_list_line 具有分隔特征的图片使用seg_功能_说明
sel_ok 选择图标使用sel_功能_说明
(九)动画文件(anim包):全部小写,采用下划线命名法,加前缀区分。
动画命名例子:

规范写法
备注

click_head_left 点击背景切换动画使用click前缀标识
bg_shape_rectangle 背景自定义图形使用bg前缀标识
show_shopcar_add 小动画效果使用show前缀标识
(十)资源ID(resources id):大小写规范与方法名一致,采用小驼峰命名法。
命名规范为“资源控件的缩写名”+“变量名”。例如TextView的id=“tv_userName”。注意:页面控件名称应该和控件id名一般是一致,例如:TextView tv_userName=(TextView)findViewById(R.id.tv_userName);
三.图解包名规范示例
本文主要是想对程序包名的命名规划,这里展示我之前开发的程序的包名图片,供大家参考:
(一)总显示

上面example这个包名一般是不用的!
(二)ui包下
fragment展示

activity 展示:

(三)utils和weight包下

(四)res文件夹下的部分文件展示:

drawable包下:

layout包下:

上面就是一个完成程序的主要文件展示,这个程序大概有三百多个文件(包括java文件和资源文件),这里就不一一展示了!
大家可以想象一下,如果这个程序包名和文件名都没有很好规划,那么你要找你想要的几个文件是一个多么麻烦的事情!
一般地,我在创建每个java程序文件都会在上面做几句话的注解,说明一下这个文件的作用,有些布局文件也是有简单说明。这样更加有利于后期的程序代码迭代或版本更新!
命名规范是必须的吗?有些是!有些不是。比如包名、类的定义,系统没有硬性规定,但是资源文件res文件夹下的命名,系统要求资源文件名必须小写,否则,你的程序一直运行不了,你都不知道为啥。
最后说一句:程序开发中命名规范是一个很好的开发习惯!

阅读全文

与android包分类相关的资料

热点内容
扬州江苏大容量服务器公司云主机 浏览:472
网吧游戏安装在云服务器 浏览:652
我的世界梦工业服务器地址 浏览:727
安卓手机桌面图标如何更换 浏览:483
编程语言翻译软件 浏览:733
退休金计算法 浏览:706
dns服务器地址如何查看 浏览:463
服务器有什么操作技能 浏览:609
带加密的二维码怎么扫 浏览:901
网站运维技术与实践pdf 浏览:930
苹果7怎么加密 浏览:252
程序员开发用ubuntu怎么样 浏览:70
解压泡茶茶具视频 浏览:49
php设置pdo 浏览:682
iphone文件夹移除了怎么找回 浏览:462
公司服务器如何登录 浏览:68
整商判断素数python 浏览:721
python求阶层的函数 浏览:207
怎么部署网页到服务器 浏览:169
cmd下重启的命令 浏览:66