风暴数码论坛教程--apk和odex的介绍和合并
一、apk和odex的介绍和合并
(一)APK介绍
APK是Android Package的缩写,即Android安装包。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。
APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。
一个APK文件(压缩文件打开可以看到)结构为:
mete-INF
Jar文件中常可以看到
res 存放资源文件的目录
AndroidManifest.xml 程序全局配置文件
classes.dex Dalvik字节码
resources.arsc 编译后的二进制资源文件
总结下我们发现Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接,和Windows Mobile中的PE文件有区别,这样做对于程序的保密性和可靠性不是很高,通过dexdump命令可以反编译,但这样做符合发展规律,微软的 Windows Gadgets或者说WPF也采用了这种构架方式。
在Android平台中dalvik vm的执行文件被打包为apk格式,最终运行时加载器会解压然后获取编译后的androidmanifest.xml文件中的permission分支相关的安全访问,但仍然存在很多安全限制,如果你将apk文件传到/system/app文件夹下会发现执行是不受限制的。最终我们平时安装的文件可能不是这个文件夹,而在android rom中系统的apk文件默认会放入这个文件夹,它们拥有着root权限。
(二)、odex文件介绍
细心的网友可能发现Android的ROM中有很多odex文件,相对于 APK中的dex文件而言这个odex有什么作用呢?如果你仔细观察会发现文件名时一一对应的,同时那些对应的apk文件中没有dex文件。这样做可以使其厂商保证一定的反盗版,因为没有没有dex文件的apk是无法正常安装的,而厂商直接将odex和不完整的apk文件放到手机rom固化到/system/bin中可以让一般用户无法正常导出使用。(文/Android开发网)
很多网友可能想到的是合并odex和apk变成apk中包含dex文件的,这样合并后最终apk文件安装在/data/中,而rom存放时在 /system/bin中,所以最终导致了用户可装在Android手机中的软件会变少,占用系统空间。
APK生成 odex文件方法:
1.编译开源GIT上的build/tools /dexpreopt/dexopt-wrapper这个,使用dexopt-wrapper即可,操作步骤
2.将dexopt-wrapper放到/data/local目录中,使用adb shell执行linux命令行,使用cd命令进入/data/local目录,
cd /data/local./dexopt-wrapper android123.apk android123.odex
(二)合并odex和
少dex的apk 为完整的apk文件
需要用到的工具是smali,一个开源的java处理软件: http://code.google.com/p/smali/downloads/list
1.下载的baksmali和 smali的jar文件到工作目录
2.把ROM里面的core.odex, ext.odex, framework.odex, android.policy.odex, services.odex这5个文件也放在同一目录(也可以放在别的目录,通过设置BOOTCLASSPATH指定,默认就是当前目录)。
例:以teeter为例子 (HTC一些Android常常会内置),ROM里面拿出来的可能是2个文件,teeter.apk + teeter.odex。
1、分解odex文件:
java -jar baksmali-1.2.1.jar -x teeter.odex
如果没其他问题,会在工作目录生成一个out的目录,里面是分解出来的一些文件,我们在此不深究这些文件的作用。
2、把分解得到的文件变成classes.dex:java -Xmx512M -jar smali-1.2.1.jar out -o classes.dex,这样得到了一个有用的classes.dex文件
3、用WinZip或者WinRAR打开teeter.apk文件,把这个classes.dex 放进去
4、最后再用signapk把最新得到的这个包含classes.dex的apk重新签署一下 (Auto Sign签名工具往期的文章里有下载),就生成一个可以安装的单独APK程序了。
5、签名完成后即可安装使用了
(三)、利用厨房进行合并
首先打开厨房界面
选择0进行高级选项
选择11对工作目录中的deodex进行合并。出现如下界面
我们选择b,对所有文件进行合并。然后会出现合并过程界面如下:
以上就是厨房合并的全过程了。
此列表以2.36为基础,包含了大部分,仅供参考,(可删)表示可以进行选择性删除,当然还有些内容也可以删,根据自己情况而定
AccountSyncManager.apk 账户同步管理器
Adobereader.apk 阅读器(可删)
Amazonmap3.apk 音乐程序(可删)
ApplicationsProvider.apk 应用程序提供商
AppSharing.apk 应用程序分享(可删)
Blackboard.apk 黑板皮肤(可删)
Bluetooth.apk 蓝牙
BrcmBluetoothServices.apk 蓝牙服务
Browser.apk 自带浏览器(可删)
Calculator.apk 计算器
Calendar.apk 日历程序
CalendarProvider.apk 日历服务提供商
CertInstaller.apk 证书安装程序
CheckinProvider.apk 签入服务
com.htc.FMRadioWidget.apk 收音机桌面插件
com.htc.FriendStreamWidget.apk FriendStream社交软件插件(可删)
Com.htc.musicwidget.apk 音乐插件
Com.htc.stockwidget.apk 股票插件(可删)
Com.htc.trendswidget.apk trend插件(可删)
Com.htc. twitterwidget.apk Twitte插件 (可删)
Com.htc.weatherwidget.apk 天气插件
com.htc.htcmsgwidgets.apk 信息插件
ContactsProvider.apk 联系人提供商
CSPeopleSyncService.apk HTC的sense账户同步服务(可删)
CustomizationSettingsPro
CustomizationSetup.apk 个性化设置
DCSStock.apk 股票数据控制服务(可删)
DefaultContainerService.apk 程序包访问帮助服务
DFPI.apk--demoflopackageinstaller 安装演示
DownloadProvider.apk 下载程序管理包
DownloadProviderUi.apk 我的下载程序
DrmProvider.apk 数字版权保护存储
EReader.apk EReader阅读软件 就是翻页像翻书一样的读书软件(可删)
FilePicker.apk 文件选择器
Flashlight.apk 手电筒
FlashLitePlugin.apk flash简化插件(可删)
FriendStream.apk 同名社交软件(可删)
GoogleBackupTransport.apk 谷歌备份
GoogleCalendarSyncAdapte
GoogleContactsSyncAdapte
GooglePartnerSetup.apk 谷歌合作伙伴设置(可删)
Googlequicksearchbox 快速搜索箱(可删)
GoogleServicesFramework.apk 谷歌框架服务
GSD.apk (可删)
HTC_IME.apk 自带输入法 删除后联系人将无法用拼音检索
HtcAddProgramWidget.apk 插件添加
HTCAlbum.apk 相册
HtcAutoRotateWidget.apk 自动旋屏插件
HtcBackgroundDataWidget.apk 背景数据插件
htcbookmarkwidget.apk 书签插件(可删)
HtcCalculatorWidget.apk 计算器插件
htccalendarwidgets.apk 日历插件
HTCCamera.apk 相机
HtcClockWidget.apk 时钟插件
HtcCompressViewer.apk 存档查看器
HtcConnectedMedia.apk 多媒体连接
HtcContacts.apk 联系人程序
htccontactwidgets.apk 联系人插件
HtcDataRoamingWidget.apk 数据漫游插件
HtcDataStripWidget.apk 数据控制台插件
HtcDialer.apk 拨号器
HtcDirect.apk HTC的HUB(可删)
HtcDirectDownloadsProvid
HtcDLNAMiddleLayer.apk WIFI相关的DLNA协议
HtcDMC.apk
HtcFacebook.apk facebook(可删)
Htcfeedback.apk HTC反馈 (可删)
HtcFMRadio.apk 收音机
HtcGreader.apk 新闻(可删)
HtcGreaderWidget.apk 新闻插件(可删)
HtcHubSyncProvider.apk
HTC的HUB同步提供商(可删)
HtcImageWallpaper.apk
幻灯片壁纸
HtcLaputa.apk 自带定位导航(可删)
HtcLaputaInstaller.apk 自带导航的安装器(可删)
HtcLocationPicker.apk 位置标记定位(可删)
HtcLocationService.apk 位置服务程序(可删)
HtcLocationsWidget.apk 位置服务桌面插件(可删)
HtcLocationsWidgetSettin
HtcLockScreen.apk 锁屏程序
htcmailwidgets.apk 邮箱插件
HtcMessageCS.apk 短信程序
HtcMessageProvider.apk 短信服务提供商
HtcMessageUploader.apk 短信上传程序
HtcMusic.apk HTC 音乐
HtcMusicMarkedItems.apk 音乐标记(可删)
HtcPhotoWidget.apk 相册插件
HtcPowerStripWidget.apk 电源控制台插件
HtcProfileWidget.apk 情景模式切换插件
HtcRingtoneTrimmer.apk
铃声剪辑器(可删)
HtcRingtoneWidget.apk 铃声插件
HtcScreenBrightnessWidge
HtcScreenTimeoutWidget.apk 屏幕休眠时间插件
htcsettingwidgets.apk 设置的桌面插件
HTCSetupWizard.apk 设置向导
HtcSoundRecorder.apk 录音机
HtcSoundSetDownloadManag
HtcStreamPlayer.apk 流媒体播放器
Htcsyncwidget.apk 同步插件
HtcTwitter.apk Twitter(可删)
HtcWeatherWallpaper.apk 天气壁纸
HTMLViewer.apk HTML查看器(可删)
LiveWallpapers.apk 动态壁纸程序
LiveWallpapersPicker.apk 动态壁纸选择器
MagicSmokeWallpapers.apk 魔幻烟雾动态壁纸(可删)
Mail.apk 邮件程序
MarketUpdater.apk 市场升级管理器
MediaProvider.apk 多媒体服务提供商
MediaUploader.apk 多媒体上传程序
Mode10Wallpapers.apk HTC自带的sense标志性五彩动态壁纸
MyHTC.apk MYHTC(可删)
NetworkLocation.apk 网络位置
OnlineAssetDetails.apk HTC在线(可删)
PackageInstaller.apk 程序安装器
PCSCII.apk
连接到电脑同步用(USB、充电等)
Phone.apk
电话主程序
PicoTts.apk 文字语音转换引擎
PluginManager.apk 插件管理器
QuickLookup.apk 快速查阅程序
Quickoffice.apk OFFICE办公软件
restartapp.apk
Rosie.apk Sense相关
Settings.apk 设置
SettingsProvider.apk 设置存储服务
SetupWizard.apk 谷歌设置向导
SkinPicker.apk 皮肤选择器
Slate 金属皮肤
SoundRecorder.apk 录音
Soundhound_freemium.apk 声音相关(可删)
Stk.apk
SIM卡程序
Stock.apk
股票
Street 谷歌街景(可删)
SystemUI.apk 状态栏
Talk.apk 谷歌talk(可删)
teeter.apk 重力球游戏(可删)
TelephonyProvider.apk 拨号记录存储服务
transferdata.apk 传输数据
TtsService.apk TTS语音服务
Updater.apk 系统更新升级程序(可删)
UpgradeSetup.apk 升级设置
UploadProvider.apk 上传服务支持
UserDictionaryProvider.apk 用户词典提供商
Vending.apk 电子市场 (可删)
VisualizationWallpapers.apk 频谱动态壁纸
Voicesearch.apk 语音搜索
Vpnservices.apk VPN服务
Weather.apk 天气主程序
WeatherAgentService.apk 天气代理服务程序
WeatherProvider.apk 天气程序提供商
WeatherSyncProvider.apk 天气同步提供商
WifiRouter.apk wifi热点
Wood.apk 木质皮肤(可删)
WorldClock.apk 世界时钟程序
youtube.apk youtube软件(可删)