Autore Topic: differenza app-debug ed app-release con google maps api  (Letto 889 volte)

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 319
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
differenza app-debug ed app-release con google maps api
« il: 09 Gennaio 2015, 18:32:05 CET »
0
Salve a tutti!

La mia domanda è semplicissima....
Per la mia app uso le api di google maps e quando creo l'apk (app-debug) e lo installo sul mio device le mappe funzionano perfettamente.
Allora creo la versione "signed" di tale apk da mettere sullo store (app-release),ma quando la installo sul mio device le mappe non vanno più....
quale potrebbe essere il motivo?

p.s. l'app è già presente sullo store

Grazie mille in anticipo!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:differenza app-debug ed app-release con google maps api
« Risposta #1 il: 11 Gennaio 2015, 10:41:54 CET »
0
Perchè devi utilizzare l'API key generata a partire dalla firma del keystore che usi per la release.

Offline Rino63

  • Utente normale
  • ***
  • Post: 163
  • Respect: +3
    • Mostra profilo
Re:differenza app-debug ed app-release con google maps api
« Risposta #2 il: 11 Gennaio 2015, 10:44:16 CET »
0

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 319
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:differenza app-debug ed app-release con google maps api
« Risposta #3 il: 12 Gennaio 2015, 10:06:28 CET »
0
ok ho seguito il link, ho cambiato l'API KEY col la versione nuova della release..... ma ancora non funziona.... mi carica la pagina con la scritta "google" in basso a sinistra e il tasto per centrare la mappa sulla mia posizione, ma la mappa rimane comunque vuota....

una domanda.... il package della mia app è quello che trovo nel build.gradle o quello che trovo nell'android manifest?

Se può essere utile vi posso postare l'android manifest

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:differenza app-debug ed app-release con google maps api
« Risposta #4 il: 12 Gennaio 2015, 11:06:15 CET »
0
ok ho seguito il link, ho cambiato l'API KEY col la versione nuova della release..... ma ancora non funziona.... mi carica la pagina con la scritta "google" in basso a sinistra e il tasto per centrare la mappa sulla mia posizione, ma la mappa rimane comunque vuota....

una domanda.... il package della mia app è quello che trovo nel build.gradle o quello che trovo nell'android manifest?

Se può essere utile vi posso postare l'android manifest

non dovresti avere due package diversi definiti in due posti diversi... se hai il package nel build file, non serve nel manifest...

Comunque nella tua console delle API key dovresti avere:
Citazione
SHA1DELLATUACHIAVEDIDEBUG;mio.package.app
SHA1DELLATUACHIAVEDIRELEASE;mio.package.app

se metti tutte e due le combinazioni separate da un "a capo", facendo cosi, se hai un build file semplice, senza flavor definiti ne altro, ti viene generata UNA SOLA API KEY che non devi poi sostituire (o gestire con più file di sources).

Occhio che se sovrascrivi l'app debug con quella di release (stesso package name), devi cancellare i dati (non ricordo se basta la cache o anche i dati) perchè se non sbaglio si cacha la chiave in qualche file (a me era successo tempo fa)
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 319
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:differenza app-debug ed app-release con google maps api
« Risposta #5 il: 12 Gennaio 2015, 11:22:36 CET »
0
non dovresti avere due package diversi definiti in due posti diversi... se hai il package nel build file, non serve nel manifest...

mi spiego meglio ^^ nel build.gradle ho una riga del genere:  applicationId "com.xxxx.adorni.turisticapp"
nell'android manifest ho questa riga :     package="com.example.adorni.NevianoApp"

mi chiedevo quale dovevo usare per ottenre le mappe per la release key



se metti tutte e due le combinazioni separate da un "a capo", facendo cosi, se hai un build file semplice, senza flavor definiti ne altro, ti viene generata UNA SOLA API KEY che non devi poi sostituire (o gestire con più file di sources).


io nella mia console google ho le mie 2 righe delle key ognuna col la sua api key e la sua SH1, dici che le devo unire sotto un'unica riga?

Occhio che se sovrascrivi l'app debug con quella di release (stesso package name), devi cancellare i dati (non ricordo se basta la cache o anche i dati) perchè se non sbaglio si cacha la chiave in qualche file (a me era successo tempo fa)

per quello non c'è problema, Android Studio crea due file diversi (app-debug e app-release), poi quando la provo sul device disinstallo la versione release e provo la versione nuova


comunque ho riprovato a rimette la api key della versione debug e funziona benissimo...
poi ho ricreato la key per la versione releas (col l'SH1 delle versione release) con lo stesso package name della versione debug, ho copiato la key al posto della key debug nel mio android manifest ma sfortunatamente mi da la pagina bianca di google

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:differenza app-debug ed app-release con google maps api
« Risposta #6 il: 12 Gennaio 2015, 12:08:22 CET »
0
senza la struttura del progetto e il contenuto dei file di build non ti so dire molto, nel mio caso ho:

Build.gradle dell'app:
Citazione
defaultConfig {
        applicationId "it.______.android.southtyrolwalkandhike"
        ....
    }

signingConfigs {
        debug {
            storeFile file("../debug.keystore")
        }
        release {
            storeFile file(RELEASE_KEYSTORE_LOCATION);
            storePassword project.RELEASE_KEYSTORE_PASSWORD
            keyAlias project.RELEASE_KEYSTORE_KEYALIAS
            keyPassword project.RELEASE_KEYSTORE_KEYPASSWORD
        }
    }

buildTypes {
        debug {
            debuggable true
            signingConfig signingConfigs.debug
        }
        release {
            signingConfig signingConfigs.release
        }
    }

manifest:
Citazione
...
<!-- METADATA FOR MAPS API -->
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="@string/config_com.google.android.maps.v2.api_key"/>
..

file di stringhe con la chiave che è uguale tra release e debug:
Citazione
<resources>
    <string name="config_com.google.android.maps.v2.api_key" translatable="false">XXXXX-_______</string>
</resources>

sulla mia console api ho compilato cosi:
Citazione
SHA1DEBUG;it.______.android.southtyrolwalkandhike
SHA1RELEASE;it.______.android.southtyrolwalkandhike

dipende tutto da come configuri il progetto
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 319
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:differenza app-debug ed app-release con google maps api
« Risposta #7 il: 12 Gennaio 2015, 12:19:57 CET »
0
guarda il mio build.gradle è completamente diverso da tuo:
Codice: [Seleziona]
apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "com.xxxx.adorni.turisticapp"
        minSdkVersion 16
        targetSdkVersion 21
        versionCode 4
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile 'com.google.android.gms:play-services:6.5.+'
    compile "com.android.support:appcompat-v7:18.0.+"
}

ti posto anche il mio manifest:

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.adorni.NevianoApp"
   android:versionCode="1"
   android:versionName="1.0">
    <supports-screens
       android:largeScreens="true"
       android:normalScreens="true"
       android:smallScreens="true"
       android:anyDensity="true"
       />

    <uses-feature
       android:glEsVersion="0x00020000"
       android:required="true" />

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.CALL_PHONE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <!--
    The following two permissions are not required to use
    Google Maps Android API v2, but are recommended.
   -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <permission
       android:name="com.example.adorni.NevianoApp.MAPS_RECEIVE"
       android:protectionLevel="signature" />

    <uses-permission android:name="com.example.adorni.NevianoApp.permission.MAPS_RECEIVE" />

    <application
       android:largeHeap="true"
       android:allowBackup="true"
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name"
       android:theme="@android:style/Theme.Light.NoTitleBar"
   >
        <activity
           android:name="com.example.adorni.NevianoApp.Loader"
           android:label="@string/app_name"
           android:screenOrientation="portrait"
           android:windowSoftInputMode="adjustResize"
          >
            <intent-filter>
                <action android:name="android.intent.action.MAIN"
                   />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.example.adorni.NevianoApp.Alberghi"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.Cultura"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.Divertimento"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.Eventi"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.Itinerari"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.Itinerario"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.Mostra"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.Prodotti"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.Ristoranti"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.Numeri"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.Ristorante"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.Albergo"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.SingleCultura"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.SingleDivertimento"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.Evento"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.Prodotto"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.SingleMostra"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.Numero"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.SingleItinerario"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.Home"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.Meteo"
           android:screenOrientation="portrait"/>
        <activity android:name="com.example.adorni.NevianoApp.ItinerarioPersonalizzato"
           android:screenOrientation="portrait"/>

        <meta-data
           android:name="com.google.android.gms.version"

           android:value="@integer/google_play_services_version" />

        <meta-data android:name="com.google.android.maps.v2.API_KEY"
           android:value="API KEY RELEASE" />

    </application>

</manifest>


però ora mi è venuto un piccolo dubbio (molto probabilmente molto stupido e sbagliato): non è che l'api key della versione release per funzionare esige che l'app sia sullo store?



Comunque per quanto riguarda le api key.... ho provato a farlo come lo hai fatto tu, cioè tutto con una sola key, ma la console mi da "your input is invalid" e non mi crea la key....ma per quello fa lo stesso.... non penso sia quello il problema.... giusto?

« Ultima modifica: 12 Gennaio 2015, 12:57:16 CET da ValerioAdo, Reason: Merged DoublePost »

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:differenza app-debug ed app-release con google maps api
« Risposta #8 il: 12 Gennaio 2015, 13:45:10 CET »
0
però ora mi è venuto un piccolo dubbio (molto probabilmente molto stupido e sbagliato): non è che l'api key della versione release per funzionare esige che l'app sia sullo store?
No, di sicuro no.

Comunque per quanto riguarda le api key.... ho provato a farlo come lo hai fatto tu, cioè tutto con una sola key, ma la console mi da "your input is invalid" e non mi crea la key....ma per quello fa lo stesso.... non penso sia quello il problema.... giusto?
non è obbligatorio avere la stessa chiave tra debug e release (in realtà sarebbe meglio averla diversa, soprattuto per app grosse o di team grossi), ma non è quello il problema.
Modifica l'applicationID e mettilo uguale a quello che hai usato per creare la key
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 319
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:differenza app-debug ed app-release con google maps api
« Risposta #9 il: 12 Gennaio 2015, 14:35:34 CET »
0
allora.... io ho "splittato" le key e ora ho una cosa del genere (vedi immagine in allegato)

La prima è la key (che finische con BB) è la key che uso per la release, la seconda è quella che uso per il debug.... se uso la key per il debug (con la versione debug dell'apk) dopo qualche secondo di schermata bianca mi carica la mappa con le informazioni.
Se sostituisco la key con quella della versione release non funziona più.... mi rimane fermo alla schermata bianca senza caricare la mappa....

Possibile che ci metta così tanto a caricarla?

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:differenza app-debug ed app-release con google maps api
« Risposta #10 il: 12 Gennaio 2015, 14:43:53 CET »
0
ma il buildconfig che hai postato è completo? quando compili in release, la release key la specifichi?
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 319
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:differenza app-debug ed app-release con google maps api
« Risposta #11 il: 12 Gennaio 2015, 14:54:50 CET »
0
ooook
Ho fatto la cosa più scontata che potessi fare xD

Ho cancellato il file jks e la versione release e rifatto tutto da capo con una nuova SH1 e api key e ora funzione ^^
una pecca è che ci mette un po tanto a caricarsi la mappa.... ci mette più tempo della versione debug... è normale?

Comunque grazie tantissimo a tutti per l'enorme mano :D

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:differenza app-debug ed app-release con google maps api
« Risposta #12 il: 12 Gennaio 2015, 16:05:08 CET »
0
ooook
Ho fatto la cosa più scontata che potessi fare xD

Ho cancellato il file jks e la versione release e rifatto tutto da capo con una nuova SH1 e api key e ora funzione ^^
una pecca è che ci mette un po tanto a caricarsi la mappa.... ci mette più tempo della versione debug... è normale?

Comunque grazie tantissimo a tutti per l'enorme mano :D

che io sappia no, dovrebbe essere identico
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia