2010-08-25 39 views
10

Tôi đã xuất một apk từ nhật thực. Tôi có thể cài đặt nó mà không có bất kỳ vấn đề gì nếu tôi sao chép nó vào thẻ sd của điện thoại.Không thể cài đặt APK được lưu trữ trên máy chủ apache của riêng tôi

Khi cố tải xuống qua trình duyệt (Galaxy S) của điện thoại, tôi nhận được: "Tải xuống không thành công".

Tôi đã đặt ứng dụng loại mime/vnd.android.package-archive trong mime.types, khởi động lại apache, vẫn là kết quả tương tự. Cũng đã thử:

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

Vẫn không may mắn.

Tôi có thể tải xuống và cài đặt ứng dụng từ thị trường Android. Tôi nghi ngờ rằng apache không gửi loại mime nhưng đây chỉ là một shot trong bóng tối. Làm cách nào để khắc phục sự cố và có thể cài đặt APK từ máy chủ web của tôi? (hoặc ít nhất là để kiểm tra nếu apache gửi tiêu đề chính xác với loại mime)

Bất kỳ trợ giúp sẽ được đánh giá cao.

+1

Bạn có thể tải xuống và cài đặt các ứng dụng từ các trang web khác không? – fredley

+0

có. Chỉ trang web của riêng tôi mới gây rắc rối cho tôi. – Ognyan

Trả lời

8

Sau khi tất cả, tôi đã tìm thấy sự cố một phần nhờ lời khuyên của CommonsWare.

Danh bạ nơi tôi đặt các tệp tải xuống được bảo vệ bằng xác thực simpe. Trình duyệt của điện thoại yêu cầu chính xác (một lần) cho tên người dùng/mật khẩu khi duyệt nó nhưng rõ ràng là quên gửi thông tin auth khi cố tải xuống tệp và nguyên nhân gây ra 401 trái phép.

Giải pháp: xóa auth cơ bản khỏi thư mục đó hoặc sử dụng một thư mục không được bảo vệ khác cho các apks.

+0

Điều này làm việc cho tôi. Trong Apache 2.2 để xóa auth khỏi subdir, thay vì "AuthType None" (không có sẵn trong 2.2), bạn có thể thêm hai dòng "Đáp ứng bất kỳ"/"Cho phép từ tất cả" vào chỉ thị Thư mục (hoặc tệp .htaccess). – jimhark

+0

Điều này có vẻ không an toàn, nếu bạn muốn vẫn bảo vệ APK của mình thì sao? –

+0

@greg AFAIK lỗi trong trình duyệt được khắc phục, do đó không cần phải xóa auth cơ bản – Ognyan

2

Sử dụng curl để kiểm tra máy chủ Web để đảm bảo máy chủ đang phản hồi yêu cầu HTTP và trả về loại MIME thích hợp. Ngoài ra, ví dụ nhật ký máy chủ của bạn để xem lỗi nào đang được ghi lại.

14

Sẽ tốt hơn nếu bạn thêm phần mở rộng .apk vào cấu hình apache`s mime. Hãy xem ví dụ sau: https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types

Bạn chỉ có thể tìm thấy những "apk" kỷ lục và sao chép hàng đến /etc/mime.types tập tin ở máy chủ của bạn:

application/vnd.android.package-archive  apk 

Cũng thêm video này vào /etc/apache2/mods-available/mime.conf:

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

(Có một số AddType khác, đặt sau khi chắc chắn). Từ đây bạn không phải đặt bất kỳ thứ gì cho loại mime của apk trong thẻ, máy chủ sẽ xử lý việc này. ;)

UPDATE: cố định một lỗi trong dòng AddType

+0

Để cài đặt Windows Apache, tệp mime.types được đặt tại {APACHE_INSTALL_PATH}/conf/và thêm dòng AddType trong httpd.conf gần các dòng AddType khác – Raptor

+0

Máy chủ của tôi không có/etc/apache2/mods-available/mime.conf - và chỉnh sửa /etc/mime.types là đủ; mặc dù tôi nghĩ rằng khởi động lại apache là cần thiết. –

1

Đôi khi bạn không có quyền truy cập vào các file cấu hình apache như /etc/mime.types, đặc biệt là trên các máy chủ chia sẻ. Bạn có thể tạo tệp .htaccess (hoặc mở nếu nó đã tồn tại) trong thư mục gốc của bạn và thêm chuỗi sau: AddType application/vnd.android.package-archive .apk Hy vọng nó sẽ giúp ích.

Các vấn đề liên quan