2010-08-25 5 views
10

J'ai exporté un apk d'eclipse. Je suis capable de l'installer sans aucun problème si je le copie sur la carte SD du téléphone.Impossible d'installer APK hébergé mon propre serveur apache

En essayant de télécharger via le navigateur (Galaxy S) du téléphone, je reçois: "Téléchargement infructueux".

J'ai mis mime type application/vnd.android.package-archive dans le mime.types, redémarré apache, toujours le même résultat. Également essayé:

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

Toujours pas de chance.

Je suis capable de télécharger et d'installer des applications à partir du marché android. Je soupçonne que apache n'envoie pas le type mime mais c'est juste un coup dans le noir. Comment puis-je résoudre le problème et pouvoir installer des APK depuis mon serveur web? (ou au moins pour vérifier si apache envoie l'en-tête correct avec le type mime)

Toute aide sera appréciée.

+1

Pouvez-vous télécharger et installer des apks d'autres sites? – fredley

+0

oui. Seul mon propre site me pose des problèmes. – Ognyan

Répondre

8

Après tout, j'ai trouvé le problème, en partie grâce aux conseils de CommonsWare.

Le répertoire dans lequel je place les apks pour les téléchargements est protégé par auth auth. Le navigateur du téléphone demande correctement (une fois) le nom d'utilisateur/mot de passe lors de la navigation, mais oublie évidemment d'envoyer des informations d'authentification en essayant de télécharger le fichier et cela provoque 401 Non autorisé.

Solution: supprimez base auth de ce répertoire ou utilisez un autre répertoire non protégé pour les apks.

+0

Cela a fonctionné pour moi. Dans Apache 2.2 pour supprimer auth de subdir, au lieu de "AuthType None" (qui n'est pas disponible en 2.2), vous pouvez ajouter deux lignes "Satisfait Any"/"Allow from all" à une directive Directory (ou fichier .htaccess). – jimhark

+0

Cela semble peu sûr, que se passe-t-il si vous voulez protéger vos fichiers APK? –

+0

@greg AFAIK le bug dans le navigateur est corrigé, donc il n'y a pas besoin de supprimer l'auth basic – Ognyan

2

Utilisez curl pour tester le serveur Web pour vous assurer qu'il répond à la requête HTTP et renvoyer le type MIME approprié. En outre, l'exemple de vos journaux de serveur pour voir quelle erreur est en cours de journalisation.

14

Il est préférable d'ajouter l'extension .apk à la configuration mime d'apache. Jetez un oeil à cet exemple: https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types

Vous pouvez juste trouver le « APK » enregistrer et copier la ligne au fichier /etc/mime.types à votre serveur:

application/vnd.android.package-archive  apk 

ajouter également à ce /etc/apache2/mods-available/mime.conf:

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

(il y a quelques autres AddType-s, le mettre après les sûr). A partir de là, vous n'avez rien à ajouter pour le type mime de l'apk dans le tag, le serveur va gérer cela. ;)

MISE À JOUR: Correction d'un bug dans la ligne AddType

+0

Pour l'installation de Windows Apache, le fichier mime.types se trouve dans {APACHE_INSTALL_PATH}/conf /, et ajoute la ligne AddType dans httpd.conf près d'autres lignes AddType – Raptor

+0

Mon serveur n'a pas de/etc/apache2/mods-available/mime.conf - et éditer /etc/mime.types était suffisant; bien que je pense que le redémarrage de l'apache était nécessaire. –

1

Parfois, vous n'avez pas accès aux fichiers de configuration apache comme /etc/mime.types, en particulier sur les serveurs partagés. Vous pouvez créer le fichier .htaccess (ou l'ouvrir s'il existe déjà) dans votre répertoire racine et ajouter la chaîne suivante: Application AddType/vnd.android.package-archive .apk Espérons que cela aide.

Questions connexes