android应用开发框架是 Application Framework 其系统架构由5部分组成,分别是:Linux Kernel、Android Runtime、Libraries、Application Framework、。第二部分将详细介绍这5个部分。下面自底向上分析各层。
Android架构
1、Linux Kernel
Android基于Linux 26提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。 如果你学过计算机网络知道OSI/RM,就会知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各层各尽其职,各层提供固定的SAP(Service Aess Point),专业点可以说是高内聚、低耦合。 如果你只是做应用开发,就不需要深入了解Linux Kernel层。
2、Android Runtime
Android包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己的进程中。Dalvik虚拟机设计成,在一个设备可以高效地运行多个虚拟机。Dalvik虚拟机可执行文件格式是dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。 大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。两种架构各有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。dx 是一套工具,可以将 Java class 转换成 dex 格式。一个dex文件通常会有多个class。由于dex有时必须进行最佳化,会使文件大小增加1-4倍,以ODEX结尾。 Dalvik虚拟机依赖于Linux 内核提供基本功能,如线程和底层内存管理。
3、Libraries
Android包含一个C/C库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(application framework)暴露给开发者。下面列出一些核心库: 系统C库--标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备 媒体库--基于PacketVideo的OpenCORE。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、 H264、 MP3、 AAC、 AMR、JPG、 PNG 界面管理--管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层 LibWebCore--新式的Web浏览器引擎,驱动Android 浏览器和内嵌的web视图 SGL--基本的2D图形引擎 3D库--基于OpenGL ES 10 APIs的实现。库使用硬件3D加速或包含高度优化的3D软件光栅 FreeType --位图和矢量字体渲染 SQLite --所有应用程序都可以使用的强大而轻量级的关系数据库引擎
4、Application Framework
通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。 开发者可以完全使用核心应用程序所使用的框架APIs。应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(需要服从框架执行的安全限制)。这一机制允许用户替换组件。 所有的应用程序其实是一组服务和系统,包括: 视图(View)--丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器 内容提供者(Content Providers)--使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据 资源管理器(Resource Manager)--提供访问非代码资源,如本地化字符串、图形和布局文件 通知管理器( Manager)--使所有的应用程序能够在状态栏显示自定义警告 活动管理器(Activity Manager)--管理应用程序生命周期,提供通用的导航回退功能
5、
Android装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置。所有应用程序都是用Java编程语言写的。更加丰富的应用程序有待我们去开发! 从上面我们知道Android的架构是分层的,非常清晰,分工很明确。Android本身是一套软件堆迭(Software Stack),或称为「软件迭层架构」,迭层主要分成三层:操作系统、中间件、应用程序。从上面我们也看到了开源的力量,一个个熟悉的开源软件在这里贡献了自己的一份力量。
可以采用该rom对应手机厂商的刷机工具或360刷机助手等进行刷机,rom包是无需解压的,至于提取软件,我知道的是,刷完root后由RE文件管理器进入其指定文件夹进行提取,当然,最傻瓜也最简单的方法是用备份软件对软件进行备份,到备份文件夹下你想要的apk都在那
也可采用网上的方法:
(1)、安装 apk 文件反编译及回编译工具 v180 测试版
1、直接运行安装
安装路径可以丌修改,直接默认,然后确定即可 2、这一步直接回车
3、顺利安装过程
4、接下来直接输入 2 然后回车
5、两个选项随便选一个即可
6、最后顺利安装成功
7、安装完成,接着直接迚入系统盘根目录(我癿是 K 盘)即安装目录,就可以看到安装癿文件。
8、丌过我们丌用迚入这个文件夹运行,它癿功能已经集成到右键菜单了,这个很方便!
9、呵呵,现在我们可以看到 apk 程序自身癿图标了
(2)首先将下载下来癿官方原版癿刷机包 ROM 解压出来(如下图)
(3)接下来在 system\app 路径下找到自己想要癿 Calculatorapk 和 Calculatorodex 这两个文件直 接复制到 system\framework 目录下
(4)右键 odex 文件合并到 apk
(5)直接按回车键确定即可,等它执行结束自动关闭窗口后,在 framework 文件夹下就可以看到刚 刚合并成功癿 Calculatorapk 文件
到这里可能会有童鞋问,是丌是可以将合并癿 apk 程序直接复制到手机上安装了! 呵呵,这个想法丌错。如果直接复制安装癿话,会提示说:应用程序未安装。 因此,还有很重要癿一步——签名! (6)签名 apk 程序 直接选中 Calculatorapk 然后右键 选择“签名 apk 文件”
等等其结束后,你就会发现文件夹下生成了 Calculator-signedapk 这个文件
至此, apk 文件提取合并并签名成功, 这下子可以直接把这个apk进行安装了
问题一:手机android服务框架是什么意思 应该是谷歌服务框架(Google Services Framework)。
拥有这个框架,加上谷歌服务,配合谷歌应用商店(Google Play),就可以下载不那么流氓的安卓应用了。
有些发布在谷歌应用商店的应用会需要谷歌服务或框架才能正常运行。
问题二:Android 手机应用开发一般采用什么框架 android应用开发框架是 Application Framework 其系统架构由5部分组成,分别是:Linux
Kernel、Android Runtime、Libraries、Application
Framework、Applications。第二部分将详细介绍这5个部分。下面自底向上分析各层。
Android架构
1、Linux Kernel
Android
基于Linux 26提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux
Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。
如果你学过计算机网络知道OSI/RM,就会知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生
了变化不会影响到上层。也就是说各层各尽其职,各层提供固定的SAP(Service Access Point),专业点可以说是高内聚、低耦合。
如果你只是做应用开发,就不需要深入了解Linux Kernel层。
2、Android Runtime
Android
包含一个核心库的 ,提供大部分在Java编程语言核心类库中可用的功能。每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己
的进程中。Dalvik虚拟机设计成,在一个设备可以高效地运行多个虚拟机。Dalvik虚拟机可执行文件格式是dex,dex格式是专为Dalvik
设计的一种压缩格式,适合内存和处理器速度有限的系统。
大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。两种架构各有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机
器指令更大。dx 是一套工具,可以将 Java class 转换成 dex
格式。一个dex文件通常会有多个class。由于dex有时必须进行最佳化,会使文件大小增加1-4倍,以ODEX结尾。
Dalvik虚拟机依赖于Linux 内核提供基本功能,如线程和底层内存管理。
3、Libraries
Android
包含一个C/C++库的 ,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(application
framework)暴露给开发者。下面列出一些核心库: 系统C库--标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备
媒体库--基于PacketVideo的OpenCORE。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、
H264、 MP3、 AAC、 AMR、JPG、 PNG 界面管理--管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层
LibWebCore--新式的Web浏览器引擎,驱动Android 浏览器和内嵌的web视图 SGL--基本的2D图形引擎
3D库--基于OpenGL ES 10 APIs的实现。库使用硬件3D加速或包含高度优化的3D软件光栅 FreeType
--位图和矢量字体渲染 SQLite --所有应用程序都可以使用的强大而轻量级的关系数据库引擎
4、Application Framework
通
过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置
闹钟、向状态栏添加通知等等,很多很多。 开发者可以完全>>
问题三:手机xposed框架到底有啥用了? xposed框架是在安卓系统下对手机进行美化的软件框架,对于不想刷机或者不会的小白来说有用,如果你是高手或者对自己系统的美化程度满意的话,xposed框架能提供的不多。
问题四:什么是手机的服务框架 霸王条款
问题五:android 五大应用开发框架是什么 android应用开发框架是 Application Framework 其系统架构由5部分组成,分别是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。第二部分将详细介绍这5个部分。下面自底向上分析各层。
Android架构
1、Linux Kernel
Android基于Linux 26提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。 如果你学过计算机网络知道OSI/RM,就会知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各层各尽其职,各层提供固定的SAP(Service Access Point),专业点可以说是高内聚、低耦合。 如果你只是做应用开发,就不需要深入了解Linux Kernel层。
2、Android Runtime
Android包含一个核心库的 ,提供大部分在Java编程语言核心类库中可用的功能。每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己的进程中。Dalvik虚拟机设计成,在一个设备可以高效地运行多个虚拟机。Dalvik虚拟机可执行文件格式是dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。 大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。两种架构各有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。dx 是一套工具,可以将 Java class 转换成 dex 格式。一个dex文件通常会有多个class。由于dex有时必须进行最佳化,会使文件大小增加1-4倍,以ODEX结尾。 Dalvik虚拟机依赖于Linux 内核提供基本功能,如线程和底层内存管理。
3、Libraries
Android包含一个C/C++库的 ,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(application framework)暴露给开发者。下面列出一些核心库: 系统C库--标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备 媒体库--基于PacketVideo的OpenCORE。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、 H264、 MP3、 AAC、 AMR、JPG、 PNG 界面管理--管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层 LibWebCore--新式的Web浏览器引擎,驱动Android 浏览器和内嵌的web视图 SGL--基本的2D图形引擎 3D库--基于OpenGL ES 10 APIs的实现。库使用硬件3D加速或包含高度优化的3D软件光栅 FreeType --位图和矢量字体渲染 SQLite --所有应用程序都可以使用的强大而轻量级的关系数据库引擎
4、Application Framework
通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。 开发者可以完全使用核心应用程序所使用的框架APIs。应用程序的体系结构旨>>
问题六:手机构架是什么意思? 手机的架构就是手机的结构组成。
目前英国ARM架构占据手机处理器90%的市场份额。
1、德州仪器优点:低频高能且耗电量较少,高端智能机必备CPU缺点:价格不菲,对应的手机价户也很高。
2、INTEL优点:CPU主频高,速度快缺点:耗电、每频率性能较低。
3、高通优点:主频高,性能表现出色,功能定位明确缺点:对功能切换处理能力一般。
4、三星优点:耗电量低、价格便宜缺点:性能低。
5、Marvell优点:很好继承和发挥了PXA的性能缺点:功耗大。
问题七:手机html5前端开发用什么框架 jquery mobile和bootstrap都是较好的框架。为了使用便利,下文列举了目前最强大应用最广泛的几款前端开发框架。
1 Bootstrap
Boostrap绝对是目前最流行用得最广泛的一款框架。它是一套优美,直观并且给力的web设计工具包,可以用来开发跨浏览器兼容并且美观大气的页面。它提供了很多流行的样式简洁的UI组件,栅格系统以及一些常用的JavaScript插件。
2 Fbootstrapp
Fbootstrapp基于Bootstrap并且提供了跟Facebook iframe apps和设计相同的功能。包含用于所有标准组件的基本的CSS和HTML,包括排版、表单、按钮、表格、栅格、导航等等,风格与Facebook类似。
3 BootMetro
BootMetro框架的灵感来自于Metro UI CSS,基于Bootstrap 框架构建,用于创建Windows 8 的Metro风格的网站。它包括所有Bootstrap的功能,并添加了几个额外的功能,比如页面平铺,应用程序栏等等。
4 Kickstrap
Kickstrap是Bootstrap的一个变体。它基于Bootstrap,并在它的基础上添加了许多app,主题以及附加功能。这使得这个框架可以单独地用于构建网站,而不需要额外安装什么。你需要做的仅仅是把它放到你的网站上,然后用就可以了。
5 Foundation
Foundation 是一款强大的,功能丰富的并且支持响应式布局的前端开发框架,你可以通过Foundation快速创建原型,利用它所包含的大量布局框架,元素以及最优范例快速创建在各种设备上可以正常运行的网站以及app。Foundation在构建的时候秉承移动优先的策略,它拥有大量实用的语义化功能,并且使用Zepto类库来取代jQuery,这样可以带来更好的用户体验,并且提高运行的速度。
6 GroundworkCSS
GroundworkCSS 是前端框架家族里面新添的一款小清新框架。它是基于Sass和pass的一个高级响应式的HTML5,CSS以及JavaScript工具包,可以用于快速创建原型并且建立在各种浏览设备上可以正常工作的网站和app。
7 Gumby
Gumby 是一款基于Sass和pass的简单灵活并且稳定的前端开发框架。
它的流式-固定布局(fluid-fixed layout)可以根据桌面端以及移动设备的分辨率自动优化要呈现的网页内容。它支持多种网格布局,包括多列混杂的嵌套模式。Gumby提供两套PSD的模板,方便你在12列和16列的网格系统上进行设计。
8 HTML KickStart
HTML Kickstart 是一款可以用来方便创建任何布局的 HTML5,CSS和jQuery的工具包。它提供了干净,符合标准以及跨浏览器兼容的代码。
9 IVORY
IVORY 是一款轻量,简单但是强大的前端框架,可以用于320到1200像素宽度的响应式布局。它基于12列的响应式网格布局,包含表格,按钮,表格,分页,拨动开关,工具提示,手风琴,选项卡等网站中常用的组件和样式。
10Kube
最后,如果你的新项目需要一款实在的,不需要复杂的额外功能组件的,足够简单的框架,那么 Kube 将会是你正确的选择。Kube是一款最小化的,支持响应式的前端框架,它没有强加的样式设计,因此给了你充分的自由来开发自己的样式表。它提供了一些web元素的基本样式,比如网格,表单,排版,表格,按钮,导航,链接>>
问题八:手机XP框架是干什么用的?求教 如果你现在已经在用xp框架,并用重力工具箱修改和美化状态栏,等等的修改美化,恰巧手机出现问题了,你不用怀疑是xp框架的问题,比如手机反应慢和卡,电池充不进去电,华为桌面和系统用户界面停止运行,或者其他软件出现停止运行的频率越来越频繁,我想应该是xp框架的问题,我用xp问题一大堆,我用过不是适配华为的xp框架,也用过适配华为的xp框架,其结果都有问题,而卸载之后,手机正常运行,没有问题了。
下面是需要的模块
求采纳
问题九:2015 用什么框架开发手机网站 随着使用智能手机的人越来越多,手机网站开发项目也成为一种潮流。可是您知道机网站开发框架有几种吗
1 LungoJS
这个是被认为开发移动网站最好的HTML5开发框架,使用 HTML5/CSS3 和 JavaScript 技术。可帮助创建基于 iOS、 Android、 Blackberry 和 WebOS 平台的应用程序。该框架可利用当前移动设备的高级特性,可捕捉事件包括滑动、触屏、长按等。无需使用,全部采用向量声称。
LungoJS 无需服务器端支持,可帮助实现 HTML5 特性,包括 WebSQL、Geolocation、 History、 Device orientation 等等。这是一个完全可定制的框架,可用来创建应用、游戏等程序。
2Kendo UI
Kendo UI是一个HTML5平台,开发者利用它可以开发新颖的、交互的移动应用程序和网站。该框架提供了大量的动画和丰富的拖拽功能、模板功能以及提供了将近10款客户端常用的数据绑定小部件,如图表、组合框以及常用表格。
3Jo
该框架可以创建像本地一样的应用,并且兼容任何操作系统,无论是Blackberry、iOS还是Android。并且提供许多HTML5小部件。使用它可以解决任何动画设计方面的问题。
4Sencha Touch
Sencha Touch是第一个基于HTML5的移动应用框架,利用JavaScript、HTML5和CSS3来构建移动应用程序,该框架利用本地代理存储离线数据,具体使用HTML5来渲染视频和音频组件。
可以让你的Web App看起来就像本地应用程序一样。美丽的用户界面组件和丰富的数据管理,全部基于最新的HTML5和CSS3的Web标准,全面兼容Android和Apple iOS设备。
552 Framework
52 Framework拥有16列的网格模板。该框架来自于CSS3样式里的新“Selection”、阴影、圆角以及有效的HTML5标记。该框架还提供了一些特殊的脚本和样式用于IE6。
6LimeJS
LimeJS 是一个 JavaScript 游戏开发框架,用于快速构建运行于触屏设备和桌面浏览器的游戏。允许开发者创建基于 HTML5 的游戏,支持主流浏览器包括iOS。
7 G5 Framework
如果你想要快速实现Web开发,并且想要重用ant主题或应用程序或网站项目,那么G5 框架是您最好的选择,因为该框架旨在提升开发效率、减少代码。该框架采用特色的PHP激活类、SEO优化技术。除了G5自身所带的这些功能特性外,它还集成其他许多功能,例如Orbit Slider、CSS3 PIE、Reveal Modals、CSS3 Buttons和Tipsy Tooltips等。
8jQuery Mobile
jQuery Mobile(jQueryMobile)是 jQuery在手机上和平板设备上的版本。jQuery Mobile 不仅会给主流移动平台带来jQuery核心库,而且会发布一个完整统一的jQuery移动UI框架。支持全球主流的移动平台。jQuery Mobile开发团队说:能开发这个项目,我们非常兴奋。移动Web太需要一个跨浏览器的框架,让开发人员开发出真正的移动Web网站。我们将尽全力去满足这样的需求。
9Phone Gap
PhoneGap是>>
android应用开发框架是 Application Framework 其系统架构由5部分组成,分别是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。第二部分将详细介绍这5个部分。下面自底向上分析各层。 Android架构1、Linux KernelAndroid基于Linux 26提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。 如果你学过计算机网络知道OSI/RM,就会知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各层各尽其职,各层提供固定的SAP(Service Access Point),专业点可以说是高内聚、低耦合。 如果你只是做应用开发,就不需要深入了解Linux Kernel层。2、Android RuntimeAndroid包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己的进程中。Dalvik虚拟机设计成,在一个设备可以高效地运行多个虚拟机。Dalvik虚拟机可执行文件格式是dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。 大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。两种架构各有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。dx 是一套工具,可以将 Java class 转换成 dex 格式。一个dex文件通常会有多个class。由于dex有时必须进行最佳化,会使文件大小增加1-4倍,以ODEX结尾。 Dalvik虚拟机依赖于Linux 内核提供基本功能,如线程和底层内存管理。3、LibrariesAndroid包含一个C/C++库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(application framework)暴露给开发者。下面列出一些核心库: 系统C库--标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备 媒体库--基于PacketVideo的OpenCORE。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、 H264、 MP3、 AAC、 AMR、JPG、 PNG 界面管理--管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层 LibWebCore--新式的Web浏览器引擎,驱动Android 浏览器和内嵌的web视图 SGL--基本的2D图形引擎 3D库--基于OpenGL ES 10 APIs的实现。库使用硬件3D加速或包含高度优化的3D软件光栅 FreeType --位图和矢量字体渲染 SQLite --所有应用程序都可以使用的强大而轻量级的关系数据库引擎4、Application Framework通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。 开发者可以完全使用核心应用程序所使用的框架APIs。应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(需要服从框架执行的安全限制)。这一机制允许用户替换组件。 所有的应用程序其实是一组服务和系统,包括: 视图(View)--丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器 内容提供者(Content Providers)--使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据 资源管理器(Resource Manager)--提供访问非代码资源,如本地化字符串、图形和布局文件 通知管理器(Notification Manager)--使所有的应用程序能够在状态栏显示自定义警告 活动管理器(Activity Manager)--管理应用程序生命周期,提供通用的导航回退功能5、ApplicationsAndroid装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置。所有应用程序都是用Java编程语言写的。更加丰富的应用程序有待我们去开发! 从上面我们知道Android的架构是分层的,非常清晰,分工很明确。Android本身是一套软件堆迭(Software Stack),或称为「软件迭层架构」,迭层主要分成三层:操作系统、中间件、应用程序。从上面我们也看到了开源的力量,一个个熟悉的开源软件在这里贡献了自己的一份力量。
精简ROM里面APK对应的lib文件--搬运自m小妹
1、system/app
这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件。在这个文件夹下的程序为系统默认的组件,自己安装的软件将不会出现在这里,而是\data\app中。请机友熟悉了解其中的软件用途可以做删减与增加看这里是否有你所需的程序,不需要的删除。你还可以添加你需要的默认安装软件,直接放进去就行了,注意不要用中文名。
app文件夹内软件详解:
(注意后缀为odex,有的软件把它集成apk里面去了,所以有的没有。如果app里面的软件有相应的odex,做精简时也要一并删除掉。)
本帖隐藏的内容\system\app\AlarmClockapk 闹钟
\system\app\AlarmClockodex
\system\app\Browserapk 浏览器
\system\app\Browserodex
\system\app\Bugreportapk Bug报告
\system\app\Bugreportodex
\system\app\Calculatorapk 计算器
\system\app\Calculatorodex
\system\app\Calendarapk 日历
\system\app\Calendarodex
\system\app\CalendarProviderapk 日历提供
\system\app\CalendarProviderodex
\system\app\Cameraapk 照相机
\system\app\Cameraodex
\system\app\comamazonmp3apk 亚马逊音乐
\system\app\Contactsapk 联系人
\system\app\Contactsodex
\system\app\DownloadProviderapk 下载提供
\system\app\DownloadProviderodex
\system\app\DrmProviderapk DRM数字版权提供
\system\app\DrmProviderodex
\system\app\Emailapk 电子邮件客户端
\system\app\Emailodex
\system\app\FieldTestapk 测试程序
\system\app\FieldTestodex
\system\app\GDataFeedsProviderapk GoogleData提供
\system\app\GDataFeedsProviderodex
\system\app\Gmailapk Gmail电子邮件
\system\app\Gmailodex
\system\app\GmailProviderapk Gmail提供
\system\app\GmailProviderodex
\system\app\GoogleAppsapk 谷歌程序包
\system\app\GoogleAppsodex
\system\app\GoogleSearchapk 搜索工具
\system\app\GoogleSearchodex
\system\app\gtalkserviceapk GTalk服务
\system\app\gtalkserviceodex
\system\app\HTMLViewerapk HTML 查看器
\system\app\HTMLViewerodex
\system\app\IMapk 即使通讯组件包含MSN、yahoo 通
\system\app\ImCredentialProviderapk
\system\app\ImProviderapk
\system\app\ImProviderodex
\system\app\Launcherapk 启动加载器
\system\app\Launcherodex
\system\app\Mapsapk 电子地图
\system\app\Mapsodex
\system\app\MediaProviderapk 多媒体播放提供
\system\app\MediaProviderodex
\system\app\Mmsapk 短信、彩信
\system\app\Mmsodex
\system\app\Musicapk 音乐播放器
\system\app\Musicodex
\system\app\MyFavesapk T-Mobile MyFaves 程序
\system\app\MyFavesodex
\system\app\PackageInstallerapk apk安装程序
\system\app\PackageInstallerodex
\system\app\Phoneapk 电话拨号器
\system\app\Phoneodex
\system\app\Settingsapk 系统设置
\system\app\Settingsodex
\system\app\SettingsProviderapk 设置提供
\system\app\SettingsProviderodex
\system\app\SetupWizardapk 设置向导
\system\app\SetupWizardodex
\system\app\SoundRecorderapk 录音工具
\system\app\SoundRecorderodex
\system\app\Streetapk 街景地图
\system\app\Streetodex
\system\app\Syncapk 同步程序
\system\app\Syncodex
\system\app\Talkapk 语音程序
\system\app\Talkodex
\system\app\TelephonyProviderapk 电话提供
\system\app\TelephonyProviderodex
\system\app\Updaterapk 更新程序
\system\app\Updaterodex
\system\app\Vendingapk 制造商信息
\system\app\Vendingodex
\system\app\VoiceDialerapk 语音拨号器
\system\app\VoiceDialerodex
\system\app\TtsServiceapk好友动态通
\system\app\TtsServiceapk语音合成
\system\app\Twitterapk微博
\system\app\SuquashiInputMethodapk自带输入法
2、framework文件夹下存放的是可以重复使用的框架类,这个文件夹下的framework-resapk就是平常美化的重点。
system\framework文件列表详解
本帖隐藏的内容
\system\framework\amjar
\system\framework\androidawtjar AWT库
\system\framework\androidpolicyjar
\system\framework\androidtestrunnerjar
\system\framework\comgoogleandroidgtalkservicejar GTalk服务
\system\framework\comgoogleandroidmapsjar 电子地图库
\system\framework\corejar 核心库,启动桌面时首先加载这个
\system\framework\extjar
\system\framework\framework-resapk
\system\framework\framework-testsjar
\system\framework\frameworkjar
\system\framework\inputjar 输入库
\system\framework\itrjar
\system\framework\monkeyjar
\system\framework\pmjar 包管理库
\system\framework\servicesjar
\system\framework\ssltestjar
\system\framework\svcjar 系统服务
3、bin文件夹下存放的是一些shell和二进制程序,里面主要是Linux系统自带的组件(命令),不要做修改。
system\bin目录文件列表详解
本帖隐藏的内容
\system\bin\akmd
\system\bin\am
\system\bin\app_process 系统进程
\system\bin\dalvikvm Dalvik虚拟机宿主
\system\bin\dbus-daemon 系统BUS总线监控
\system\bin\debuggerd 调试器
\system\bin\debug_tool 调试工具
\system\bin\dexopt DEX选项
\system\bin\dhcpcd DHCP服务器
\system\bin\dumpstate 状态抓取器
\system\bin\dumpsys 系统抓取器
\system\bin\dvz
\system\bin\fillup
\system\bin\flash_image 闪存映像
\system\bin\hciattach
\system\bin\hcid HCID内核
\system\bin\hostapd
\system\bin\hostapd_cli
\system\bin\htclogkernel
\system\bin\input
\system\bin\installd
\system\bin\itr
\system\bin\linker
\system\bin\logcat Logcat日志打印
\system\bin\logwrapper
\system\bin\mediaserver
\system\bin\monkey
\system\bin\mountd 存储挂载器
\system\bin\netcfg 网络设置
\system\bin\ping Ping程序
\system\bin\playmp3 MP3播放器
\system\bin\pm 包管理器
\system\bin\qemud QEMU虚拟机
\system\bin\radiooptions 无线选项
\system\bin\rild RIL组件
\system\bin\sdptool
\system\bin\sdutil
\system\bin\service
\system\bin\servicemanager 服务管理器
\system\bin\sh
\system\bin\ssltest SSL测试
\system\bin\suceflinger 触摸感应驱动
\system\bin\svc 服务
\system\bin\system_server
\system\bin\telnetd Telnet组件
\system\bin\toolbox
\system\bin\wlan_loader
\system\bin\wpa_cli
\system\bin\wpa_supplicant
4、etc文件夹下保存的都是系统的配置文件,比如APN接入点设置等核心配置,一般我们需要改动的就是hosts文件。
system\etc文件列表详解
本帖隐藏的内容
\system\etc\apns-confxml APN接入点配置文件
\system\etc\AudioFiltercsv 音频过滤器配置文件
\system\etc\AudioPara4csv
\system\etc\bookmarksxml 书签数据库
\system\etc\dbusconf 总线监视配置文件
\system\etc\dhcpcd
\system\etc\event-log-tags
\system\etc\favoritesxml 收藏夹
\system\etc\firmware 固件信息
\system\etc\gpsconf GPS设置文件
\system\etc\hcidconf 内核HCID配置文件
\system\etc\hosts 网络DNS缓存
\system\etc\initgoldfishsh
\system\etc\location 定位相关
\system\etc\mountdconf 存储挂载配置文件
\system\etc\NOTICEhtml 提示网页
\system\etc\permissionsxml 权限许可
\system\etc\pvplayerconf
\system\etc\security
\system\etc\wifi WLAN相关组件
\system\etc\dhcpcd\dhcpcd-hooks
\system\etc\dhcpcd\dhcpcd-run-hooks
\system\etc\dhcpcd\dhcpcdconf
\system\etc\dhcpcd\dhcpcd-hooks\01-test
\system\etc\dhcpcd\dhcpcd-hooks\20-dnsconf
\system\etc\dhcpcd\dhcpcd-hooks\95-configured
\system\etc\firmware\brf6300bin
\system\etc\location\gps
\system\etc\location\gps\location 定位相关
\system\etc\location\gps\nmea GPS数据解析
\system\etc\location\gps\properties
\system\etc\security\cacertsbks
\system\etc\security\otacertszip OTA下载验证
\system\etc\wifi\Fw1251r1cbin
\system\etc\wifi\tiwlanini
\system\etc\wifi\wpa_supplicantconf WPA验证组件
5、fonts顾名思义,就是字体文件,那个体积最大的就是中文字体文件,你可以替换自己喜欢的字体,DroidSansFallbackttf是中文字体,DroidSansttf、DroidSans-Boldttf是英文。
6、lib文件夹下,存放了很多驱动文件,例如如何使得联系人按拼音排序的修改文件,那个也在lib下。
\system\lib目录文件列表详解:
本帖隐藏的内容
\system\lib\libaesso
\system\lib\libaglso
\system\lib\libandroid_runtimeso Android运行时库
\system\lib\libandroid_serversso 系统服务组件
\system\lib\libaudioso 音频处理
\system\lib\libaudioeqso EQ均衡器
\system\lib\libaudioflingerso 音频过滤器
\system\lib\libbluetoothso 蓝牙组件
\system\lib\libcso
\system\lib\libcameraso 相机释放组件
\system\lib\libcameraserviceso 相机释放服务
\system\lib\libcorecgso
\system\lib\libcryptoso 加密组件
\system\lib\libctestso
\system\lib\libcutilsso
\system\lib\libdbusso
\system\lib\libdlso
\system\lib\libdrm1so DRM解析库
\system\lib\libdrm1_jniso
\system\lib\libdvmso
\system\lib\libexifso
\system\lib\libexpatso
\system\lib\libFFTEmso
\system\lib\libGLES_CMso
\system\lib\libgpsso
\system\lib\libhardwareso
\system\lib\libhglso
\system\lib\libhtc_rilso
\system\lib\libicudataso
\system\lib\libicui18nso
\system\lib\libicuucso
\system\lib\liblogso
\system\lib\libmso
\system\lib\libmediaso
\system\lib\libmediaplayerserviceso
\system\lib\libmedia_jniso
\system\lib\libnativehelperso
\system\lib\libnetutilsso
\system\lib\libOmxCoreso
\system\lib\libOmxH264Decso
\system\lib\libpixelflingerso
\system\lib\libpvasfso
\system\lib\libpvasfregso
\system\lib\libpvauthorso
\system\lib\libpvcommonso
\system\lib\libpvdownloadso
\system\lib\libpvdownloadregso
\system\lib\libpvmp4so
\system\lib\libpvmp4regso
\system\lib\libpvnet_supportso
\system\lib\libpvplayerso
\system\lib\libpvrtspso
\system\lib\libpvrtspregso
\system\lib\libqcameraso
\system\lib\libreference-rilso
\system\lib\librilso
\system\lib\librpcso
\system\lib\libsglso
\system\lib\libsonivoxso
\system\lib\libsoundpoolso
\system\lib\libsqliteso
\system\lib\libsslso
\system\lib\libstdc++so
\system\lib\libsuceflingerso
\system\lib\libsystem_serverso
\system\lib\libthread_dbso
\system\lib\libUAPI_jniso
\system\lib\libuiso
\system\lib\libuti
7、media里面有一个压缩包是开机动画,audio文件夹下是系统铃声,这里你可以做增加、替换与删减。
\system\media\audio目录详解:
\system\media\audio\alarms 闹铃音
\system\media\audio\notifications 提示音
\system\media\audio\ringtones 铃声
\system\media\audio\ui 界面操作事件音
8、sd这个是指手机系统中的app2sd的文件夹,也就是安装软件到SD卡上的文件夹
9、usr用户文件夹,包含共享、键盘布局、时间区域文件等。
system\usr目录文件列表详解:
本帖隐藏的内容
\system\usr\keychars
\system\usr\keylayout
\system\usr\share
\system\usr\srec
\system\usr\keychars\qwertykcmbin
\system\usr\keychars\qwerty2kcmbin
\system\usr\keychars\trout-keypad-qwertzkcmbin
\system\usr\keychars\trout-keypad-v2kcmbin
\system\usr\keychars\trout-keypad-v3kcmbin
\system\usr\keychars\trout-keypadkcmbin
\system\usr\keylayout\h2w_headsetkl
\system\usr\keylayout\qwertykl
\system\usr\keylayout\trout-keypad-qwertzkl
\system\usr\keylayout\trout-keypad-v2kl
\system\usr\keylayout\trout-keypad-v3kl
\system\usr\keylayout\trout-keypadkl
\system\usr\share\bsk
\system\usr\share\zoneinfo
\system\usr\share\bsk\V_FD_speed_101bsk
\system\usr\share\bsk\V_FD_std_101bsk
\system\usr\share\zoneinfo\zoneinfodat
\system\usr\share\zoneinfo\zoneinfoidx
\system\usr\srec\config
\system\usr\srec\config\enus
\system\usr\srec\config\enus\baselinepar
\system\usr\srec\config\enus\baseline11kpar
\system\usr\srec\config\enus\baseline8kpar
\system\usr\srec\config\enus\dictionary
\system\usr\srec\config\enus\g2p
\system\usr\srec\config\enus\grammars
\system\usr\srec\config\enus\models
\system\usr\srec\config\enus\dictionary\basicok
\system\usr\srec\config\enus\dictionary\cmu6plusokzip
\system\usr\srec\config\enus\dictionary\enrollok
\system\usr\srec\config\enus\g2p\en-US-ttpdata
\system\usr\srec\config\enus\grammars\VoiceDialerg2g
\system\usr\srec\config\enus\models\genericswiarb
10、xbin这个更加不要去修改了。
11、buildprop这个文件是可以安全修改的(但是不要乱改),一般咱们只要改个版本号、与默认语言、与时区就可以啦。(修改尊重作者!)
在Android的官方文档中提到:
To preserve security, Hierarchy Viewer can only connect to devices running a developer version of the Android system
即:出于安全考虑,Hierarchy Viewer只能连接Android开发版手机或是模拟器(准确地说,只有rosecure参数等于0且rodebuggable等于1的android系统)。Hierarchy Viewer在连接手机时,手机上必须启动一个叫View Server的客户端与其进行socket通信。而在商业手机上,是无法开启View Server的,故Hierarchy Viewer是无法连接到普通的商业手机。
Android源码实现这一限制的地方在:
ANDROID源码根目录\frameworks\base\services\java\com\android\server\wm\WindowManageServicejava
中的一段:
=====================================================================================
public boolean startViewServer(int port) {
if (isSystemSecure()) {
return false;
}
if (!checkCallingPermission(ManifestpermissionDUMP, ”startViewServer”)) {
return false;
}
…
=====================================================================================
检验一台手机是否开启了View Server的办法为:
adb shell service call window 3
若返回值是:Result: Parcel(00000000 00000000 ‘……’)” 说明View Server处于关闭状态
若返回值是:Result: Parcel(00000000 00000001 ‘……’)” 说明View Server处于开启状态
若是一台可以打开View Server的手机(Android开发版手机 、模拟器or 按照本帖步骤给系统打补丁的手机),我们可以使用以下命令打开View Server:
adb shell service call window 1 i32 4939
使用以下命令关闭View Server:
adb shell service call window 2 i32 4939
实现步骤:
经过一番调查和实践,我发现其实只要是root,并且装有busybox的手机,通过修改手机上/system/framework中的某些文件,就可以开启。本文参考了http://blogapkudocom/tag/viewserver/,以下是具体步骤(本人基于Windows,若你是Linux的操作系统,直接看原帖吧):
前提是:你的手机已经获得ROOT权限,且有BUSYBOX
另外:请仔细阅读本帖的评论,或许你会有新的收获。
1将商业手机通过USB连接PC,确保adb服务运行正常
2备份手机上/system/framework/中的文件至PC。备份的时候请确保PC上保存备份文件的文件夹结构与手机中的/system/framework相同
例如:新建 ANDROID_SDK_ROOT\system\framework文件夹 (本文出现的ANDROID_SDK_ROOT指你安装Android SDK的根目录)
接着在cmd中跳转至ANDROID_SDK_ROOT\platform-tools文件夹下,输入以下代码进行备份:
adb pull /system/framework ANDROID_SDK_ROOT\system\framework
3进入adb shell,输出BOOTCLASSPATH:
推荐的做法:
1 在adb shell中echo $BOOTCLASSPATH > /sdcard/bootclasspathtxt
2 退回到windows cmd中,输入adb pull /sdcard/bootclasspathtxt
3 bootclasspathtxt将会保存在C:\Users\你的用户名 文件夹下
在第十五步中将会用到这个txt中的内容。
4下载baksmali 和smali工具。这两个工具是用来反编译和编译odex文件的。
下载地址:
https://dldropboxusercontentcom/u/5055823/baksmali-142jar
https://dldropboxusercontentcom/u/5055823/smali-142jar
假设我将这两个jar都下载到了ANDROID SDK根目录下。
5运行baksmali反编译\system\framework下的servicesodex文件:
java -jar ANDROID_SDK_ROOT\baksmali-142jar -a 17 -x ANDROID_SDK_ROOT\system\framework\servicesodex -d ANDROID_SDK_ROOT\system\framework
参数解释:https://codegooglecom/p/smali/wiki/DeodexInstructions
想特别说明的是“-a”后跟的数字,表示你系统的API Level(与你的系统版本有关)。系统版本和API Level的对照关系如下:
\
(另外,你不会连java -jar都不能运行吧快去装jdk!)
此步成功的话,在同文件夹下(对于我,就是ANDROID_SDK_ROOT),会有个out文件夹生成
这里顺便解释一下odex文件和dex文件。
dex文件:Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java的字节码而是Dalvik字节码,16进制机器指令。
odex文件:将dex文件依据具体机型而优化,形成的optimized dex文件,提高软件运行速度,减少软件运行时对RAM的占用。
smali文件:将dex文件变为可读易懂的代码形式,反编译出文件的一般格式。
6用Eclipse打开out\com\android\server\wm\WindowManagerServicesmali文件
查找method private isSystemSecure()Z这个函数
================================================================
method private isSystemSecure()Z
registers 4
prologue
line 5965
const-string v0, “1″
const-string v1, “rosecure”
const-string v2, “1″
invoke-static {v1, v2}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_22
const-string v0, “0″
const-string v1, “rodebuggable”
const-string v2, “0″
invoke-static {v1, v2}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_22
const/4 v0, 0×1
:goto_21
return v0
:cond_22
const/4 v0, 0×0
goto :goto_21
end method
================================================================
在这段代码的倒数7,8行“:goto_21”和“return v0”之间加入“const/4 v0, 0×0″一行这样,就使得v0返回的值永远为0×0,即false,这样就跳过了WindowManagerServicejava里对isSystemSecure的判断。
method private isSystemSecure()Z函数最后变为:
================================================================
method private isSystemSecure()Z
registers 4
prologue
line 6276
const-string v0, “1″
const-string v1, “rosecure”
const-string v2, “1″
invoke-static {v1, v2}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_22
const-string v0, “0″
const-string v1, “rodebuggable”
const-string v2, “0″
invoke-static {v1, v2}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_22
const/4 v0, 0×1
:goto_21
const/4 v0, 0×0
return v0
:cond_22
const/4 v0, 0×0
goto :goto_21
end method
=====================================================================================
7 现在运行smali,重新编译:
java -jar smali-142jar -o classesdex
这时候,应该在ANDROID_SDK_ROOT文件夹中出现了classesdex文件
8 下载windows下的zip工具:
https://dldropboxusercontentcom/u/5055823/zipexe
假设,我也把zipexe放进了ANDROID_SDK_ROOT文件夹
9确认当前cmd命令行运行目录为ANDROID_SDK_ROOT,运行:
zipexe services_hackedjar /classesdex
这时候在ANDROID_SDK_ROOT文件夹下,出现了打包好的services_hackedjar
10进入adb shell,输入su获得ROOT权限
11接着输入mount,查看哪个分区挂载了/system,例如我的是:
\
接着,输入以下命令重新挂载/system,并更改/system权限(请将“/dev/block/mmcblk0p25”替换成你的/system挂载分区):
mount -o rw,remount -t yaffs2 /dev/block/mmcblk0p25
chmod -R 777 /system 使得/system 可以被我们任意修改
这一步的作用,主要是为了第17步能够将/system/framework里的servicesodex替换掉。这一步若不成功,在第17步的时候可能出现权限不够,无法替换的错误(Read-Only File System)
12下载dexopt-wrapper文件
https://dldropboxusercontentcom/u/5055823/dexopt-wrapper
我们也将dexopt-wrapper文件放在ANDROID_SDK_ROOT文件夹中
13将services_hackedjar和dexopt-wrapper复制到手机的/data/local/tmp文件夹中
adb push ANDROID_SDK_ROOT/services_hackedjar /data/local/tmp
adb push ANDROID_SDK_ROOT/dexopt-wrapper /data/local/tmp
14进入adb shell,输入su后,将dexopt-wrapper的权限改为777
chmod 777 /data/local/tmp/dexopt-wrapper
15在adb shell中cd到/data/local/tmp文件夹下,运行:
/dexopt-wrapper /services_hackedjar /services_hackedodex <本帖第三步存的地址,但是要删除其中的”:/system/framework/servicesjar”>
这一步就是将第七部生成dex文件最终优化成了odex文件。
===================================================================================================
例如我的命令是:/dexopt-wrapper /services_hackedjar /services_hackedodex /system/framework/corejar:/system/framework/core-junitjar:/system/framework/bouncycastlejar:/system/framework/extjar:/system/framework/
frameworkjar:/system/framework/framework2jar:/system/framework/androidpolicyjar:/system/
framework/apache-xmljar:/system/framework/HTCDevjar:/system/framework/HTCExtensionjar:/system/
framework/filterfwjar:/system/framework/comhtcandroidbluetoothjar:/system/framework/wimaxjar:
/system/framework/usbnetjar:/system/framework/comorangeauthenticationsimcardjar
===================================================================================================
这样,便在/data/local/tmp文件夹中生成了我们自己的odex:services_hackedodex
\
16给我们自己生成的services_hackedodex签名:
busybox dd if=/system/framework/servicesodex of=/data/local/tmp/services_hackedodex bs=1 count=20 skip=52 seek=52 conv=notrunc
参数解释:
if = input file
of = output file
bs = block size (1 byte)
count = number of blocks
skip = input file offset
seek = output file offset
conv=notrunc – don’t truncate the output file
17将/system/framework里的servicesodex替换成我们自己制作的services_hackedodex吧!
dd if=/data/local/tmp/services_hackedodex of=/system/framework/servicesodex
这一步运行后,过一小会儿(1分钟以内)手机就自动重启了!稍等片刻吧!
18成功重启后,用以下命令打开View Server:
adb shell service call window 1 i32 4939
用以下命令查看View Server是否打开:
adb shell service call window 3
返回的值若是Result: Parcel(00000000 00000001 ‘……’),那么你就起了!
细心的网友可能发现Android的ROM中有很多odex文件,相对于 APK中的dex文件而言这个odex有什么作用呢 Android123提示大家,如果你仔细观察会发现文件名时一一对应的,同时那些对应的apk文件中没有dex文件。这样做可以使其厂商保证一定的反盗版,因为没有没有dex文件的apk是无法正常安装的,而厂商直接将odex和不完整的apk文件放到手机rom固化到/system/bin中可以让一般用户无法正常导出使用。(文/Android开发网)
很多网友可能想到的是合并odex和apk变成apk中包含dex文件的,这样合并后最终apk文件安装在/data/中,而rom存放时在 /system/bin中,所以最终导致了用户可装在Android手机中的软件会变少,占用系统空间。
一、APK生成 odex文件方法:
编译开源GIT上的build/tools /dexpreopt/dexopt-wrapper这个,使用dexopt-wrapper即可,操作步骤
将dexopt-wrapper放到/data/local目录中,使用adb shell执行linux命令行,使用cd命令进入/data/local目录,
cd /data/local
/dexopt-wrapper android123apk android123odex
二、合并odex和 少dex的apk 为完整的apk文件
需要用到的工具是smali,一个开源的java处理软件:
http://codegooglecom/p/smali/downloads/list
一下载的baksmali和 smali的jar文件到工作目录
二把ROM里面的coreodex, extodex, frameworkodex, androidpolicyodex, servicesodex这5个文件也放在同一目录(也可以放在别的目录,通过设置BOOTCLASSPATH指定,默认就是当前目录)。
例:
以teeter为例子 (HTC一些Android常常会内置),ROM里面拿出来的可能是2个文件,teeterapk + teeterodex。
1、分解odex文件:
java -jar baksmali-121jar -x teeterodex
如果没其他问题,会在工作目录生成一个out的目录,里面是分解出来的一些文件,我们在此不深究这些文件的作用。
2、把分解得到的文件变成classesdex:java -Xmx512M -jar smali-121jar out -o classesdex,这样得到了一个有用的classesdex文件
3、用WinZip或者WinRAR打开teeterapk文件,把这个classesdex 放进去
4、最后再用signapk把最新得到的这个包含classesdex的apk重新签署一下 (Auto Sign签名工具往期的文章里有下载),就生成一个可以安装的单独APK程序了。
5、签名完成后即可安装使用了
欢迎分享,转载请注明来源:品搜搜测评网