俞木发
对于使用Android手机的用户来讲,无论你是直接从市场里点击安装的APP,还是通过下载后安装的,实际上,都无法逃脱与一种APK格式的文件打交道的过程。因此如果要把Android手机玩通透,我们就要深入认识和掌握这种文件格式及其使用技巧,相信你的手机会用得更加得心应手。
APK是Android Package的缩写,直译过来即Android安装包(APK),它是安卓系统上的一种可执行文件,类似iOS平台上的.ipa文件、Windows平台上的.exe文件。它其实是ZIP格式的一个压缩包,可以在Windows平台下直接使用7ZIP将其打开,其中的Dex文件(即Dalvik VMexecutes)就是Android Dalvik(安卓虚拟机)执行主程序(见图1)。
一般一个APK文件主要由LIB目录等几个主要文件(夹)组成,我们日常接触到的主要是如下表所示的文件(夹)。
现在一些x86安卓设备在运行一些APK时会出现无法安装或者闪退的情况,原因大多就是由于LIB文件夹没有专为x86处理器适配的运行库文件所致,此时一般只要下载For x86专版即可。比如MoboPlayer x86播放器,打开APK文件后即可看到x86目录,这种版本就可以在英特尔芯平板上完美运行(见图2)。此外ARM处理器架构有ARMV7、ARMV8、ARM9等之分,一些特殊应用(主要是和显卡密切相关,如视频播放器、3D手游等)为了保证兼容性,在LIB目录还会有类似ARM-v7a之类的名称,因此这类应用最好下载和自己设备ARM类型一致的版本。
不走寻常路——玩转APP另类安装
平时对于应用的安装,大家一般都是通过直接点击链接和下载的方法进行。不过这种常规的安装方法有不少弊端,比如无法批量安装、无法安装到系统目录等。其实应用的安装还有更多简洁、高效的方法。
1. 批量安装应用
在新买手机或者手机进行系统恢复后,我们经常要安装很多应用。如果需要批量安装多个应用,大家可以借助第三方安装工具。以豌豆荚为例,首先在电脑上下载好需要安装的应用,接着将手机和豌豆荚成功连接后,在电脑上启动豌豆荚并切换到“应用和游戏管理”,然后点击“安装新应用”,将本地已经下载好的应用全部导入安装列表,点击“安装”即可(见图3)。
2. 安装应用到系统目录
平时用品牌机的用户都知道手机上会预装不少出厂的应用,这些应用无法卸载,而且可以在每次使用系统重置后自动恢复。其实对于自己需要经常使用的应用,也可以将其安装为系统应用。比如喜欢使用微信的用户就可以将微信安装为系统应用,这样每次系统重置后就不需要再次安装了。
首先确保你的设备已经ROOT,接着按照常规的方法安装微信,接着在手机上启动“Link2SD”,然后在应用的列表长按微信,在弹出的菜单选择“转为系统应用”,这样“Link2SD”会在后台自动将微信的文件复制到“/system/app”下(见图4)。
按提示重启设备后,打开豌豆荚后切换到“系统预装”,这里可以看到现在微信就变为手机预装的应用,使用普通的方法无法将其卸载,而且系统重置后我们就可以继续使用微信了(见图5)。
2013年第20期《管好你的应用 走进Android APK文件的世界》一文详细介绍如何手动将APK变为系统应用。手动复制方法的原理其实是和Link2SD一样的,只是Link2SD使用更为简单,更适合新手的使用。不过手动复制方法则可以让大家更清楚地了解系统预装APK的运行原理。
设备ROOT可能会带来一些不可测的后果,比如错误编辑系统文件可能导致系统崩溃,一些品牌机如三星手机,自己随意ROOT则可能造成保修失效。所以大家在进行ROOT之前,一定要注意是否会给自己的设备造成什么样的影响!
我们也可以使用手动复制应用到上述目录的方法将应用变为系统应用(如果应用还有LIB目录,则需要手动将LIB目录下的文件复制到/system/lib),并且为其配置合适的权限。如果想将已安装的应用在手机内存和SD卡中互转,比如要将安装在SD卡的应用移动到手机内存中,我们只要找到SD上的应用文件和.so文件,然后手动移动到“/data/app”和“data/data/下即可。
深入APK——定制符合自己使用的APK
在日常使用中,由于应用默认安装经常会给我们的使用带来不便,如很多英文软件安装后显示的是英文名称,这给英文不好的同学带来诸多不便。因此我们可以手动对APK进行编辑,定制符合自己使用的APK。这里以APK应用改名为例。
1. 更改应用快捷方式名称
大家知道,Android都是使用多个虚拟桌面,对于自己经常使用的应用,我们经常会将其拖动到第一桌面。这里的应用图标实际上和Windows桌面的快捷方式是一样的(不过Android的设备默认不支持修改快捷方式的名字)。对于原来是英文的应用,我们可以借助“GO桌面”轻松进行更改。
在手机上切换到GO桌面,进入应用列表后长按需要更改桌面的英文应用,点击上方的“发送到桌面”,接着在桌面长按选中需要改名的快捷方式,在弹出的菜单中选择“重命名”,这样可以将应用快捷方式改为自己需要的中文名称(见图6)。
2. 自行编译应用名称
上述方法由于需要用到第三方桌面,一些朋友可能并不喜欢使用GO桌面。如果要对应用改名,我们还可以通过对应用进行编译的方法来实现。因为应用的名称是由APK内部文件决定,因此需要对APK进行编译,并且需要重新签名才能正常安装。这里我们以“com.betterandroid.bettercut.apk”文件为例。应用默认安装后显示的是“bettercut”的名称,实际上它是一款创建快捷方式的应用。下面就将它改名为“创建快捷方式”。
首先在电脑上使用7-ZIP打开APK文件,然后将其中的“resources.arsc”解压到桌面备用,接着在电脑上启动“ArscEditor”,然后将上述解压的文件拖入程序窗口,接着切换到“string”,其中“App_name”对应的就是程序名称。现在按提示在“区域值”文本框输入自己想要的名称“创建快捷方式”,点击“保存当前值”(见图7)。
完成应用的改名后返回桌面,然后将修改过的“resources.arsc”文件重新拖到7-ZIP窗口,替换原来APK文件中的同名文件(见图8)。
继续在电脑上启动“AndroidResEdit”,启动程序后点击“签名→签名APK文件”,接着在打开的窗口选择上述修改过“resources.arsc”文件的APK文件,点击“立即签名”,然后将签名的文件另存,成功完成签名后就可以在手机上正常安装了(见图9)。
现在将修改过的APK文件安装在手机上,可以看到在安装界面,应用的名称已经显示为“创建快捷方式”,剩下的操作按常规的方式安装即可(见图10)。
因为这里对应用进行了重新签名,所以如果安装同一应用,需要将旧应用卸载后才能安装改名后的应用。改名后的应用成功安装后,在应用列表中可以看到应用的名称已经变为上述定义的“创建快捷方式”(见图11)。
取我所需——提取APK资源文件
除了对APK资源进行编译外,我们还可以自由提取其中的有用资源。现在很多Android电视盒都支持鼠标的操作,但是Android默认的鼠标指针非常小,这样在大屏幕电视上使用鼠标操作非常不便。这时,可提取其他APK文件中的大鼠标指针资源文件为我所用(操作的盒子同样需要ROOT)。
鼠标指针资源是“/system/famework/framework-res.apk”文件中的一张图片文件,因此我们首先要找到一个包含大鼠标指针的APK文件。比如英菲克系列盒子的鼠标指针就较大,首先在任意英菲克盒子中提取上述“framework-res.apk”文件,将其复制到桌面后,同上使用7-ZIP打开,然后将“res/drawable-mdpi/ pointer_arrow.png”文件解压到桌面备用(见图12)。
同上,在自己的盒子上安装RE文件管理器,将“/system/famework/framework-res.apk”文件也复制到桌面备用。使用7-ZIP打开后,按提示将上述解压后的“pointer_arrow.png”文件拖到其中替换原文件。接着将修改过的“framework-res.apk”拷贝到“/system”下,然后使用RE管理器将其权限修改为“rw-r-r”(见图13)。
完成权限的修改后将修改过的“framework-res.apk”复制到“/system/famework”替换同名文件,此时盒子会自动重启,重启后再插上无线鼠标,现在就可以看到修改过的指针变大了许多(见图14)。
跨越平台——在其他平台上运行APK
由于APK文件默认只能运行在ARM架构(包括ARM和专为ARM架构适配的英特尔CPU)的设备上,但在日常操作中,我们可能希望在其他平台上运行APK文件。对于有这些需求的朋友,可借助虚拟机来实现。
之前杂志已经多次介绍过通过安装Android虚拟机运行APK文件,这里再为大家推荐一款绿色版Android虚拟机(下载地址:http://www.qqtn.com/down/50016.html)。下载解压后直接运行其中的“Emulator.exe”即可启动虚拟机,选择“平板电脑模式”之后就可以开始使用虚拟机了(见图15)。
如果需要安装APK游戏,点击程序界面的“安装软件”,接着在打开的页面中下载需要安装的APK游戏运行即可(见图16)。