免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 各类编程 > 详解如何制作APK安装器

详解如何制作APK安装器

时间:2012-04-14 19:31来源:未知 整理:寂涯网络 点击:

为了方便安装Android软件,APK安装器这类软件在网上出现了,大家用的最多的可能
就属 91 手机助手自带的安装器了。今天我们使用 C++动手来编写一个这样的工具,在开始
之前,我们有必要了解一下APK文件是怎样的方式安装到用户手机中的。细分起来, Android
程序的安装有下面四种方式:
1.系统程序安装:开机时安装,这类安装没有安装界面
2.通过 Market安装:直接通过Market进行网络安装,这类安装没有安装界面
3.ADB 工具安装:使用ADB工具进行安装,这类安装没有安装界面
4.手机自带安装:通过SD卡里的 APK 文件安装,这类安装有安装界面
这四种方法,仔细想想,我们能下手的就是通过 ADB 工具来安装了,ADB(Android 调
试桥)是 Android SDK中为开发人员提供的一款强大的程序调试测试工具,集成了安装,卸
载,调试,设备管理等多个功能,详细的adb命令参数自己可以运行adb 得到。现在我们只
关心需要用到的功能。当 Android 手机设备使用 USB 调试模式连上计算机后,可以运行
adb.exe devices来列出连接上的设备,如图1 所示为开启一个Android模拟器后的截图:
图1
在设备已连接的情况下,可以直接运行 adb install <APK file>安装一个 APK 程序或
运行 adb -s <serial number> install <APK file>来对指定的设备进行软件安装,后者是
在连接多个设备的情况下才用的,我们这里为了简单就不考虑了,安装效果如图2所示
图2
在经过一小段时间的等待后,提示Success说明安装成功,不过在实际安装的过程中,
有时候 adb返回后没有Success提示但程序也安装成功了,这让人很郁闷,因为这样就无法
捕获 APK 是否已经正确安装了,为了简化,我直接返回成功了。
APK 程序的卸载也很简单,输入adb uninstall <package>就可以了,这里的package
是软件的包名,每个APK程序安装后有个APK程序名,也有个包名,我们可以通过获取APK
文件里面的信息来获取这个包名。卸载效果如图3所示:
图3
如果输入的package在手机中不存在的话,会返回如图4所示的结果
图4
这样就可以通过查看返回的数据里面有无Failure来判断APK是否成功卸载。到这里,
我们可以完成手机是否已经正常连接、安装、卸载等功能了,我们继续看看如何获取 APK
文件本身的信息,我们通常见到的APK 安装器都可以显示APK文件的软件名、包名、文件大
小、最低系统版本、权限等数据。这些数据的获取可以通过运行AAPT.exe来获取,AAPT 是
Android SDK中提供的另外一个工具,它提供了对APK进行信息列举、文件添加、文件删除
及资源打包到APK 等功能。我们要用到的是它的 dump 命令,如图5 所示:
图5
我们只需运行aapt d badging <APK file>就可以获取一个APK的详细信息,如图6所示:
图6
这里的“package:name=”就是软件的包名,“versionName”就是软件的版本,
“application: label”就是软件对外显示的名称,“icon=”就是软件显示的图标,
“uses-permission:”就是软件用到的权限,这些权限有一部分是流氓及病毒软件需要用到
的,在安装 APK 之前,我们有必要查看它所需的权限来对它的危险度进行粗略的判断,
“sdkVersion:”就是软件运行允许的Android最低版本,这里的数字7表示是 Android2.1
系统,不同版本的 Android 都有相应数字版本号,截止到最新的 Android4.0版本它们的对
应关系如表1 所示:
表1
还有一种情况,当APK文件名无效或非法的APK文件的时候, aapt d badging <APK file>
会返回错误信息,如图7所示:
图9
这可能是 AAPT 处理上的一个 BUG, 我们将文件名改成普通英文名后即可正常返回 APK

本页地址 http://www.jybase.net/biancheng/20120414825.html

百度搜索更多

谷歌搜索更多

顶一下
(3)
100%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com