2010-08-25 96 views
10

我從eclipse導出了一個apk。如果將其複製到手機的SD卡上,我可以毫無問題地安裝它。無法安裝APK託管我自己的Apache服務器

當試圖通過手機的(Galaxy S)瀏覽器下載時,我得到: 「下載失敗」。

我已經在mime.types中設置了mime類型application/vnd.android.package-archive,重啓了apache,結果仍然一樣。 也試過:

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

仍然沒有運氣。

我可以從android市場下載和安裝應用程序。我懷疑apache沒有發送MIME類型,但這只是在黑暗中拍攝的。 我該如何解決這個問題,並能夠從我的Web服務器安裝APK? (或至少檢查Apache是​​否發送MIME類型的正確頭)

任何幫助將不勝感激。

+1

你可以從其他網站下載並安裝apks嗎? – fredley 2010-08-25 19:19:29

+0

是的。只有我自己的網站給我帶來麻煩。 – Ognyan 2010-08-25 19:32:07

回答

8

畢竟我發現這個問題部分歸功於CommonsWare的建議。

下載apks的目錄受simpe auth保護。電話的瀏覽器在瀏覽時正確詢問(一次)用戶名/密碼,但在嘗試下載文件時顯然忘記發送認證信息,並導致401未經授權。

解決方案:從該目錄中刪除基本身份驗證或使用另一個不受保護的目錄爲apks。

+0

這對我有用。在Apache 2.2中從子目錄中刪除auth,而不是「AuthType None」(這在2中不可用)。2),您可以添加兩行「滿足任何」/「全部允許」到Directory指令(或.htaccess文件)。 – jimhark 2011-08-26 20:38:11

+0

這似乎並不安全,如果你仍然想保護你的APK,該怎麼辦? – 2012-04-24 02:20:47

+0

@greg AFAIK瀏覽器中的錯誤是固定的,所以不需要刪除基本的驗證碼 – Ognyan 2012-04-25 12:48:21

2

使用curl來測試Web服務器以確定它正在響應HTTP請求並返回正確的MIME類型。另外,請舉例說明您的服務器日誌,以查看正在記錄的錯誤。

14

如果將.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-S,把它在他們之後肯定)。 從這裏開始,你不必爲標籤中的apk`s mime-type放置任何東西,服務器就會處理它。 ;)

UPDATE:在將AddType行

+0

對於Windows的Apache安裝,文件mime.types位於{APACHE_INSTALL_PATH}/conf /,並在httpd.conf中添加AddType行,並在其他AddType行附近 – Raptor 2011-06-03 01:45:34

+0

我的服務器沒有/ etc/apache2/mods-available/mime.conf - 編輯/etc/mime.types就足夠了;儘管我認爲重新啓動Apache是​​需要的。 – 2014-09-08 10:30:57

1

修正了有時你沒有訪問Apache配置文件,如/etc/mime.types,尤其是共享的服務器上。您可以在根目錄中創建文件.htaccess(如果它已經存在,則打開)並添加以下字符串: AddType application/vnd.android.package-archive .apk 希望它有幫助。