我开发了一个应用程序,但是当我的客户尝试使用三星GT19003从提供的网址下载应用程序时,它会以.zip文件形式下载,并在单击后显示无法打开文件错误。而在我们的设备上,它会以.apk形式下载并正常工作。请帮助我解决这个问题。
我开发了一个应用程序,但是当我的客户尝试使用三星GT19003从提供的网址下载应用程序时,它会以.zip文件形式下载,并在单击后显示无法打开文件错误。而在我们的设备上,它会以.apk形式下载并正常工作。请帮助我解决这个问题。
请确保您已将http Content-Type
设置为application/vnd.android.package-archive
这样可以让Chrome知道它是一个应用程序而不是zip文件。
application/vnd.android.package-archive apk
重新启动您的apache。
这将强制浏览器将文件下载为“apk”,而不是附加“zip”后缀。
在我的情况下,问题与@alireza-fattahi提到的标题相同。
在这里分享一下,因为在我们的情况下,文件位于Azure存储中,并由CDN访问,以防有人遇到相同的问题。
默认情况下,上传的APK blob的内容类型为application/zip
,响应头中也反映了相同的内容类型,导致下载完成后Android OS上的文件获得了.zip
扩展名。
我不得不在存储CDN中设置自定义规则,将响应中的content-type
标头覆盖为application/vnd.android.package-archive
记得在设置新规则后清除CDN缓存
了解更多关于Azure CDN rules engine的信息。
如果它被下载为.zip文件
您或您的客户可以使用File Expert应用程序
来解压缩这个.zip文件,它必须在解压缩文件夹中显示.apk文件
直接给您的用户一个apk链接,无论他/她使用默认浏览器下载还是使用其他浏览器,如果是.apk文件链接,则必须按原样下载。
编辑1:
//Set header here like this
$headers = [
'Content-Type'=>'application/vnd.android.package-archive',
'Content-Disposition'=> 'attachment; filename="ninja-release.apk"',
];