2010-11-24 4 views
3

J'ai créé un fichier de clés de version à l'aide de l'IDE Eclipse. Je l'ai signé en utilisant keytool et enregistré sur Google Maps. J'ai branché la clé mais ma carte n'apparaît pas.Google Map n'apparaît pas dans ma MapActivity

Maps show up properly when I use the key associated with my debug keystore. 

Comment puis-je diagnostiquer cela? J'ai suivi les mêmes étapes que je l'ai fait avec le débogage, pour la libération.

MISE À JOUR:

Voici mon fichier manifeste:

 <?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.android.cancertrials" android:versionCode="1" 
    android:versionName="1.0"> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.CALL_PHONE"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true"> 
     <activity android:label="@string/app_name" android:name="splash"> 

      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name=".HomeActivity" android:label="@string/app_name" android:windowSoftInputMode="stateHidden"> 
     </activity> 
     <activity android:name=".moreactivity" android:label="@string/app_name"> 
     </activity> 
     <activity android:name=".aboutmedtrust" android:label="@string/app_name"> 
     </activity> 
     <activity android:name=".aboutclinical" android:label="@string/app_name"> 
     </activity> 
     <activity android:name=".aboutglaxosmith" android:label="@string/app_name"> 
     </activity> 
     <activity android:name=".termsofuse" android:label="@string/app_name"> 
     </activity> 
     <activity android:name=".privacy" android:label="@string/app_name"> 
     </activity> 
     <activity android:name=".feedback" android:label="@string/app_name"> 
     </activity> 
     <activity android:name=".informationcancer" android:label="@string/app_name"> 
     </activity> 
     <activity android:name="AdvanceSearchActivity" android:label="@string/app_name"> 
     </activity> 
     <activity android:name="SearchingActivity"></activity> 
     <activity android:name="AdvanceSearchTab1"></activity> 
     <activity android:name="AdvanceSearchTab2"></activity> 
     <activity android:name="DetailedActivity"></activity> 
     <activity android:name="summary"></activity> 
     <activity android:name="conditions"></activity> 
     <activity android:name="description"></activity> 
     <activity android:name="inclusion"></activity> 
     <activity android:name="exclusion"></activity> 
     <activity android:name="BookmarkActivity"></activity> 
     <activity android:name="RecentActivity"></activity> 
     <activity android:name="information"></activity> 
    <uses-library android:name="com.google.android.maps"></uses-library> 
    <activity android:name="Mapsactivity"> 
    </activity> 
    <activity android:name="mapView"></activity> 

</application> 
    <uses-sdk android:minSdkVersion="3" /> 

</manifest> 
+0

Vous avez une quantité ridicule d'activités.Vous avez également deux fois la bibliothèque uses-uses, l'une d'elles dans une activité. Je suis surpris que même compile – Falmarri

+0

Vous avez 'ACCESS_FINE_LOCATION' deux fois, cela pourrait valoir la peine d'en tirer un – Jimmy

+0

Également essayer de l'exécuter sur un émulateur qui est sur la cible API Google (Utilisez le gestionnaire AVD pour télécharger des cibles supplémentaires) – Jimmy

Répondre

0

Vous devez obtenir une clé API distincte lors de la signature avec le magasin de clés de version lorsque vos empreintes digitales changent. Assurez-vous également d'installer le .apk signé avec la touche droite.

Mise à jour: Je voulais dire que vous êtes sûr de signer votre APK avec la bonne clé? Cela signifie-t-il que vous êtes sûr de le signer avec le fichier de clés de version lors de la génération du fichier APK? Lorsque vous l'exportez, sélectionnez-vous réellement le magasin de clés avec lequel vous souhaitez le signer?

+0

J'ai obtenu une clé API séparée associée au keystore de version. C'est la clé qui ne fonctionne pas. Quand je l'échange avec mon keystore de débogage, tout redevient doré. –

+0

@Sheehan Alam: Mise à jour ma réponse. –

+0

Oui, j'ai exporté mon fichier APK avec le fichier de clés correct. J'ai envoyé l'APK à mon testeur bêta, qui était incapable d'obtenir la carte. Comment puis-je exécuter la version APK via Eclipse? J'ai le sentiment qu'Eclipse exécute mon APK de débogage, mais en utilisant la touche de release ... –

2

Avez-vous ajouté l'autorisation d'Internet? Cette question est posée littéralement tous les jours.

+1

Oui, c'est ajouté. Voir mon fichier manifeste. Ce qui est intéressant est que lorsque j'utilise la clé pour mon keystore de débogage, la carte apparaît. Ce n'est que lorsque j'utilise mes cartes de keystore de version que je ne vois pas ... –

0

ce problème donc j'ai rencontré moi-même hier, et je résolus en signant manuellement le .apk

Je suppose que vous utilisez votre keystore privé et que vous avez saisi la clé de carte de libération dans votre MapView (et d'autres ressources, au besoin). Pour ce faire, vous choisissez votre projet dans l'explorateur de projet d'Eclipse (clic droit) -> Outils Android -> Exporter un paquet non signé. Enregistrez-le où vous voulez. Ouvrez votre terminal (je suis sur une machine Windows 7), cd dans votre dossier jdk (PAS jre), cd plus loin dans bin \.

Utilisez la commande suivante: (Notez que le "sont nécessaires si vous tapez un chemin)

 jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore "path-to-your-keystore" "path-to-your-apk" <apk alias> -certs 

Pour vérifier le processus de signature ne

jarsigner -verify "path-to-recently-signed-apk" -verbose 

(Vous pouvez laisser l'option verbose si vous voulez). Il verra (espérons-le) montrer jar vérifié (éventuellement il vous avertira des entrées sans une chaîne de certificat validée, cela n'a pas d'importance dans mon cas)

Ensuite lancez zipalign:

zipalign -v 4 "path-to-signed-apk" "path-to-signed-and-aligned.apk" 

Notez qu'il va créer une nouvelle apk, qui est alignée sur les normes de Google.

Installez cette apk et vos cartes devraient apparaître très bien!

De: http://developer.android.com/tools/publishing/app-signing.html#ExportWizard