2010-08-25 20 views
10

Ho esportato un apk da eclipse. Sono in grado di installarlo senza problemi se lo copio sulla scheda sd del telefono.Impossibile installare APK ospitato sul mio server Apache

Quando si tenta di scaricare tramite il browser (Galaxy S) del telefono, si ottiene: "Download non riuscito".

Ho impostato l'applicazione tipo mime/vnd.android.package-archive nel file mime.types, riavviato apache, sempre lo stesso risultato. Prova anche:

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

Ancora senza fortuna.

Sono in grado di scaricare e installare applicazioni dal mercato Android. Sospetto che l'apache non stia inviando il mimo ma questo è solo uno sparo nell'oscurità. Come posso risolvere il problema ed essere in grado di installare APK dal mio server web? (o almeno per verificare se apache invia l'intestazione corretta con il tipo mime)

Qualsiasi aiuto sarà apprezzato.

+1

È possibile scaricare e installare apk da altri siti? – fredley

+0

si. Solo il mio sito mi dà problemi. – Ognyan

risposta

8

Dopo tutto ho trovato il problema grazie in parte a CommonsWare advise.

La directory in cui ho inserito apks per i download è protetta da auth di simpe. Il browser del telefono chiede correttamente (una volta) per nome utente/password durante la navigazione, ma ovviamente dimentica di inviare informazioni di autenticazione quando si tenta di scaricare il file e ciò causa 401 Non autorizzato.

Soluzione: rimuovere l'autorizzazione di base da quella directory o utilizzare un'altra dir non protetta per gli apk.

+0

Questo ha funzionato per me. In Apache 2.2 per rimuovere auth da subdir, invece di "AuthType None" (che non è disponibile in 2.2), è possibile aggiungere due righe "Soddisfare qualsiasi"/"Consenti da tutti" a una direttiva Directory (o file .htaccess). – jimhark

+0

Questo sembra insicuro, cosa succede se vuoi ancora proteggere i tuoi APK? –

+0

@greg AFAIK il bug nel browser è stato risolto, quindi non è necessario rimuovere l'autenticazione di base – Ognyan

2

Utilizzare curl per verificare il server Web per assicurarsi che stia rispondendo alla richiesta HTTP e restituendo il tipo MIME corretto. Inoltre, ad esempio, il server registra per vedere quale errore viene registrato.

14

È meglio se si aggiunge l'estensione .apk alla configurazione di mime di apache. Date un'occhiata a questo esempio: https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types

Si può solo trovare il record "apk" e copiare la fila per i /etc/mime.types di file al vostro server:

application/vnd.android.package-archive  apk 

aggiungere anche questo /etc/apache2/mods-available/mime.conf:

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

(ci sono alcuni altri AddType-s, metterlo dopo di loro di sicuro). Da qui in poi non devi mettere nulla per il tipo mime di apk nel tag, il server lo gestirà. ;)

UPDATE: corretto un bug in linea AddType

+0

Per l'installazione di Windows Apache, il file mime.types si trova in {APACHE_INSTALL_PATH}/conf/e aggiunge la riga AddType in httpd.conf vicino ad altre linee AddType – Raptor

+0

Il mio server non ha un/etc/apache2/mods-available/mime.conf - e la modifica di /etc/mime.types era sufficiente; anche se penso che sia necessario riavviare l'apache. –

1

A volte non si ha accesso ai file di configurazione di Apache come /etc/mime.types, in particolare sui server condivisi. Puoi creare il file .htaccess (o aprirlo se esiste già) nella tua root directory e aggiungere la seguente stringa: AddType application/vnd.android.package-archive .apk Spero che sia d'aiuto.

Problemi correlati