无法安装托管在自己的Apache服务器上的APK

11

我已经从Eclipse中导出了一个apk文件。如果我将其复制到手机的SD卡中,则可以轻松安装。

但是,当我试图通过手机的(Galaxy S)浏览器下载时,会出现“下载失败”的错误。

我已在mime.types中设置了应用程序/vnd.android.package-archive MIME类型,并重新启动了Apache,但仍然得到相同的结果。还尝试过:

<a href="downloads/my_apk.apk" type="application/vnd.android.package-archive">Download App</a>

仍然没有运气。

我能够从Android市场下载和安装应用程序。我怀疑Apache没有发送MIME类型,但这只是一个无稽之谈。 我该如何解决问题并能够从我的Web服务器安装APK?(或者至少检查Apache是否发送了正确的带有MIME类型的标头)

任何帮助将不胜感激。


1
你能从其他网站下载并安装APK吗? - fredley
只有我的网站出了问题。 - Ognyan
4个回答

19

如果将 .apk 扩展名添加到 Apache 的 MIME 配置中会更好。可以查看以下示例: https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types

您只需找到 "apk" 记录并复制该行到服务器上的文件 /etc/mime.types 中即可。

application/vnd.android.package-archive     apk

还要将此内容添加到 /etc/apache2/mods-available/mime.conf 文件中:

AddType application/vnd.android.package-archive .apk

(如果有其他AddType,请将其放在它们后面以确保顺序)。 从这里开始,在标签中不需要为apk的mime-type添加任何内容,服务器会处理它。 ;)

更新:修复了AddType行中的一个错误


对于 Windows Apache 安装,mime.types 文件位于 {APACHE_INSTALL_PATH}/conf/,并在 httpd.conf 中其他 AddType 行附近添加 AddType 行。 - Raptor
我的服务器上没有 /etc/apache2/mods-available/mime.conf 文件 - 编辑 /etc/mime.types 文件已经足够了;但是我认为需要重新启动 apache。 - Danny Schoemann

10

在CommonsWare的建议下,我最终找到了问题所在。

我将apk放置供下载的目录进行了简单身份验证。手机浏览器浏览该目录时会正确地(一次性)要求输入用户名/密码,但尝试下载文件时显然会忘记发送身份验证信息,导致出现401未经授权的错误。

解决方案:从该目录中删除基本身份验证信息,或使用另一个不受保护的目录来存储apk。


这对我有用。在Apache 2.2中,要从子目录中删除auth,而不是使用“AuthType None”(在2.2中不可用),您可以将两行“Satisfy Any” / “Allow from all”添加到Directory指令(或.htaccess文件)。 - jimhark
它是在哪个版本中修复的? - Greg Martin
在2.3版本中它运行良好。在2.1版本中,您可以使用不同的浏览器,如Opera,以规避该错误。 - Ognyan
嗨,我是一个 Android 开发的新手。我正在使用 HttpConnection 获取 .apk 文件。当我尝试从 SDCard 安装 .apk 文件时,它会抛出解析错误(PARSE ERROR)。但是如果将 .apk 加载到 SDCard 上,则可以安装。我不是通过浏览器访问链接。 - varunrao321
1
我在Android 4.1.2上仍然遇到了这个问题,删除基本身份验证解决了我的问题。 - Patrick Rudolph
显示剩余2条评论

3
使用curl测试Web服务器,确保它响应HTTP请求并返回正确的MIME类型。此外,检查您的服务器日志以查看记录的错误信息。

1
有时候你无法访问像/etc/mime.types这样的Apache配置文件,特别是在共享服务器上。你可以在根目录中创建文件.htaccess(或者如果已经存在则打开),并添加以下字符串: AddType application/vnd.android.package-archive .apk 希望能帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接