实现自定义apk安装包

需求:
突然收到老大的需求,要对产品进行一次推荐好友安装的活动,每个会员下载自己的专属安装包(里面记录会员的相关信息)。

思路:
经过了解,发现apk安装包原来只是zip的一个马甲,使用php的ZipArchive类可以对文件进行操作。

实现代码:

// 源文件
$apk    = "gb.apk";
// 生成临时文件
$file   = tempnam("tmp", "zip");
// 复制文件
if(false===file_put_contents($file, file_get_contents($apk))){
    exit(‘copy faild!‘);
}
// 打开临时文件
$zip    = new ZipArchive();
$zip->open($file);
// 添加文件
// 由于apk限定只能修改此目录内的文件,否则会报无效apk包
$zip->addFromString(‘META-INF/extends.json‘, json_encode(array(‘author‘=>‘deeka‘)));
// 关闭zip
$zip->close();
// 下载文件
header("Content-Type: application/zip");
header("Content-Length: " . filesize($file));
header("Content-Disposition: attachment; filename=\"{$apk}\"");
// 输出二进制流
readfile($file);
// 删除临时文件
unlink($file);

  转自:http://www.hdj.me/custom-apk-by-php-ziparchive 方便以后使用

时间: 2024-10-09 01:32:15

实现自定义apk安装包的相关文章

php自定义apk安装包实例

本文实例讲述了php自定义apk安装包的方法,分享给大家供大家参考.具体实现方法如下: <?php // 源文件 $apk = "gb.apk"; // 生成临时文件 $file = tempnam("tmp", "zip"); // 复制文件 if(false===file_put_contents($file, file_get_contents($apk))){ exit('copy faild!'); } // 打开临时文件 $zi

自定义msi安装包的执行过程

有时候我们需要在程序中执行另一个程序的安装,这就需要我们去自定义msi安装包的执行过程. 比如我要做一个安装管理程序,可以根据用户的选择安装不同的子产品.当用户选择了三个产品时,如果分别显示这三个产品的安装交互UI显然是不恰当的.我们期望用一个统一的自定义UI去取代每个产品各自的UI. 平时使用msiexec.exe习惯了,所以最直接的想法就是在一个子进程中执行: msiexec.exe /qn 这样固然是能够完成任务,但是不是太简陋了? 安装开始后我们想取消这次安装怎么办? 或者我们还想要拿到

[Android] Robotium手机自动化测试(仅需apk安装包版)——环境搭建 【转】

Robotium的手机自动化测试,很多都是利用app源代码里的Id定义来开发自动化脚本.而在我开始要为项目中的app写自动化测试脚本的时 候,开发的环境还很不稳定,app也还处于开发的状态中,而且,在需要自己搭建Android整个开发环境的时候,也遇到许多需要耗费很多时间去解决的开 发问题.因此,我觉得,在这种情况下,如果自己的自动化脚本环境能和开发完全独立,那么,应该可以更好地展开自动化脚本的开发.所以,在网上一番探索后, 选择了只需要apk安装包的方法. 当然,这样也会遇到问题,比如,在开发

使用zipalign.exe工具优化APK安装包

zipalign.exe是Android自带的一个档案整理工具,它可以用于优化APK安装包,从而提升Android应用与系统之间的交互效率,提升应用程序的运行速度. 操作步骤: 1.在命令行窗口输入如下命令: zipalign -f -v 4 HelloWorld_crazyit.apk HelloWorld_crazyit_zip.apk 上面的命令中各选项说明如下: -f:指定强制覆盖已有的文件 -v:指定生成详细输出 4:指定档案整理所基于的字节数,通常指定为4,也就是基于32位进行整理

android获取apk安装包信息

public class TestActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.main);  String archiveFilePath="sdcard/jb51.net.apk";//安装包路径  PackageManager p

试验笔记 - 使用7-ZIP压缩来减小APK安装包体积

7-ZIP版本:9.20 x86 And x64 Windows(2010-11-18) 1. 将APK包解压到文件夹2. 全选所有文件,右键“添加到压缩包”3.“压缩格式”必须“zip”4.“压缩等级”选择“极限压缩”5.“压缩方法”必须“Deflate”(试了Deflate64,BZip2,LZMA,PPMd都无法正常安装)6.“单词大小”选择“256”7. 将后缀改为APK即可 原APK大小:1,039,193 B不同“单词大小”压缩能力比对:128:963,793 B(极限压缩默认)19

apk安装包信息

String archiveFilePath="sdcard/DangDang.apk";//安装包路径          PackageManager pm = getPackageManager();            PackageInfo info = pm.getPackageArchiveInfo(archiveFilePath, PackageManager.GET_ACTIVITIES);            if(info != null){          

应用商城 下载apk 安装包解析错误 没有权限 Permission denied Android - failed to open zip archive

1.错误提示: 03-31 16:48:43.740: INFO/ActivityManager(59): Start proc com.android.packageinstaller for activity com.android.packageinstaller/.PackageInstallerActivity: pid=620 uid=10026 gids={} 03-31 16:48:44.749: WARN/zipro(620): Unable to open zip '/dat

Sencha学习笔记2:打包您的第一个Sencha安卓应用apk安装包

通过上一篇翻译的官方文章的介绍我们对sencha有了初步的印象,同时我们也通过该向导生成了第一个示例应用代码框架,那么下一步可能很多人都觉得应该根据该向导所提示的去看一下一个应用是如何建立起来的详细信息了,但我认为可以换一下学习的路径. 天地会珠海分舵是一个比较急功近利的人,所以有了第一个自动生成的代码示例后,他是比较急于想知道应该如何将该示例打包成一个安卓的apk安装包来安装到目标安卓机器上.刘备做得好,得陇就应该望蜀,做人还是有点追求的好. 下面我们就尝试通过一个HelloWorld的示例来