Autore Topic: Inizio da 0  (Letto 789 volte)

Offline sismouse

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Inizio da 0
« il: 10 Maggio 2014, 18:33:20 CEST »
0
Salve,
sto creando la mia prima applicazione per Android e vorrei integrare una mappa per mostrare i punti di interesse che ho memorizzato (con Lon e Lat) su database SQLite.
Ho letto il tutorial ufficiale di Google ma dice di "signare" la mia app. In che consiste esattamente?
Come IDE uso Android Developer Tools che è incluso con l'SDK... dunque quali passaggi devo effettuare?

Inoltre una domanda stupida: ma per integrare delle mappe devo per forza integrare Google Maps? Non posso usare delle alternative?

Offline Aaaaabbbb

  • Utente junior
  • **
  • Post: 55
  • Respect: +3
    • Google+
    • pietmau
    • Mostra profilo
  • Dispositivo Android:
    Nexus 7, Samsung GT-S5830i, LG Optimus, Galaxy Tab 3
  • Play Store ID:
    aaaaaaaaaaaa
  • Sistema operativo:
    Win, Ubuntu
Re:Inizio da 0
« Risposta #1 il: 10 Maggio 2014, 18:45:47 CEST »
0
Ciao,
La prima volta che esporti la tua app, Eclipse ti chiderà di generare la chiave per firmare le tue applicazioni.
Ricordati dove salvi il file (il keystore) così potrai estrarre il release certificate fingerprint seguendo la pagina delle istruzioni di Google Maps.

Sì ci sono della alernative, come OpenMap.

Ciao!

Offline sismouse

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Re:Inizio da 0
« Risposta #2 il: 10 Maggio 2014, 18:51:34 CEST »
0
Ma questa operazione di firma la devo fare per forza se voglio usare le mappe di Google?

Tu cosa mi consigli? Continuo per questa strada o provo OpenMap?

Offline Aaaaabbbb

  • Utente junior
  • **
  • Post: 55
  • Respect: +3
    • Google+
    • pietmau
    • Mostra profilo
  • Dispositivo Android:
    Nexus 7, Samsung GT-S5830i, LG Optimus, Galaxy Tab 3
  • Play Store ID:
    aaaaaaaaaaaa
  • Sistema operativo:
    Win, Ubuntu
Re:Inizio da 0
« Risposta #3 il: 10 Maggio 2014, 20:04:40 CEST »
0
Io ti consiglio molto caldamente Google Maps, non c'è paragone con le altre.

Se segui la documentazione vedrai che non avrai problemi!

Ciao!

Offline sismouse

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Re:Inizio da 0
« Risposta #4 il: 10 Maggio 2014, 20:30:01 CEST »
0
Ok, allora procedo con Google Maps.
Cosa puoi dirmi in merito alla firma? E' una cosa che devo fare per forza prima di poter usare le mappe?
Inoltre nella documentazione c'è scritto anche di richiedere una chiave per poter usare le API, anche essa è una procedura che devo eseguire per forza?

Offline Aaaaabbbb

  • Utente junior
  • **
  • Post: 55
  • Respect: +3
    • Google+
    • pietmau
    • Mostra profilo
  • Dispositivo Android:
    Nexus 7, Samsung GT-S5830i, LG Optimus, Galaxy Tab 3
  • Play Store ID:
    aaaaaaaaaaaa
  • Sistema operativo:
    Win, Ubuntu
Re:Inizio da 0
« Risposta #5 il: 10 Maggio 2014, 20:47:00 CEST »
0
Mamma mia, è da un po' che non uso le mappe...
francamente non mi ricordo e non so se nel frattempo è cambiato qualcosa,
ma dalla documentazione che ho rapidamente rivisto adesso sembra che tu debba mettere la tua firma su Google APIs Console.

Creati il tuo keysore exportando una appliazione Android da Eclipse (suppongo tu usi quello), ricordati dove hai salvato il keystore e poi segui le istruzioni
https://developers.google.com/maps/documentation/android/start#getting_the_google_maps_android_api_v2
per generare l'impronta della tua firma, come vedria nella pagina, devi musare questo comando:
keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

Ciao!

Offline sismouse

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Re:Inizio da 0
« Risposta #6 il: 10 Maggio 2014, 21:15:59 CEST »
0
Nella documentazione ad un certo punto c'è scritto questo:

Citazione
Obtain a Google Maps API key

If your application is registered with the Google Maps Android API v2 service, then you can request an API key. It's possible to register more than one key per project.

1. Navigate to your project in the Google APIs Console.
2. In the Services page, verify that the "Google Maps Android API v2" is enabled.
3. In the left navigation bar, click API Access.
4. In the resulting page, click Create New Android Key....
5. In the resulting dialog, enter the SHA-1 fingerprint, then a semicolon, then your application's package name. For example:
BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75;com.example.android.mapexample
6. The Google APIs Console responds by displaying Key for Android apps (with certificates) followed by a forty-character API key, for example:
AIzaSyBdVl-cTICSwYKrZ95SuvNw7dbMuDt1KG0

Ma non ho capito dove prendo lo SHA-1 fingerprint :(

Nel frattempo ho esportato il progetto in un file .apk e ho quindi creato anche un keystore (che non ho capito a che serve)

Offline Aaaaabbbb

  • Utente junior
  • **
  • Post: 55
  • Respect: +3
    • Google+
    • pietmau
    • Mostra profilo
  • Dispositivo Android:
    Nexus 7, Samsung GT-S5830i, LG Optimus, Galaxy Tab 3
  • Play Store ID:
    aaaaaaaaaaaa
  • Sistema operativo:
    Win, Ubuntu
Re:Inizio da 0
« Risposta #7 il: 10 Maggio 2014, 21:19:35 CEST »
0
Display your app's certificate information

The Maps API key is based on a short form of your application's digital certificate, known as its SHA-1 fingerprint. The fingerprint is a unique text string generated from the commonly-used SHA-1 hashing algorithm. Because the fingerprint is itself unique, Google Maps uses it as a way to identify your application.

To display the SHA-1 fingerprint for your certificate, first ensure that you are using the right certificate. You may have two certificates:

Debug certificate: The Android SDK tools generate this certificate automatically when you do a "debug" build from the command line, or when you build and run a project from Eclipse without exporting it as a released application. Only use this certificate with apps that you're testing; do not attempt to publish an app that's signed with a debug certificate. The debug certificate is described in more detail in the section Signing in Debug Mode in the Android Developer Documentation.
Release certificate: The Android SDK tools generate this certificate when you do a "release" build with either ant program or Eclipse. You can also generate this certificate using the keytool program. Use this certificate when you are ready to release your app to the world.
You can display a certificate's SHA-1 fingerprint using the keytool program with the -v parameter. For more information about Keytool, see the documentation at keytool-Key and Certificate Management Tool.

Expand the sections below for detailed instructions on how to display your debug or release certificates.


Displaying the debug certificate fingerprint

Locate your debug keystore file. The file name is debug.keystore, and is created the first time you build your project. By default, it is stored in the same directory as your Android Virtual Device (AVD) files:

OS X and Linux: ~/.android/
Windows Vista and Windows 7: C:\Users\your_user_name\.android\
If you are using Eclipse with ADT, and you're not sure where your debug keystore is located, you can select Windows > Prefs > Android > Build to check the full path, which you can then paste into a file explorer to locate the directory containing the keystore.

List the SHA-1 fingerprint.

For Linux or OS X, open a terminal window and enter the following:

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
For Windows Vista and Windows 7, run:

keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
You should see output similar to this:

 Alias name: androiddebugkey
 Creation date: Jan 01, 2013
 Entry type: PrivateKeyEntry
 Certificate chain length: 1
 Certificate[1]:
 Owner: CN=Android Debug, O=Android, C=US
 Issuer: CN=Android Debug, O=Android, C=US
 Serial number: 4aa9b300
 Valid from: Mon Jan 01 08:04:04 UTC 2013 until: Mon Jan 01 18:04:04 PST 2033
 Certificate fingerprints:
      MD5:  AE:9F:95:D0:A6:86:89:BC:A8:70:BA:34:FF:6A:AC:F9
      SHA1: BB:0D:AC:74:D3:21:E1:43:07:71:9B:62:90:AF:A1:66:6E:44:5D:75
      Signature algorithm name: SHA1withRSA
      Version: 3
The line that begins SHA1 contains the certificate's SHA-1 fingerprint. The fingerprint is the sequence of 20 two-digit hexadecimal numbers separated by colons.


Displaying the release certificate fingerprint

Locate your release certificate keystore file. There is no default location or name for the release keystore. If you don't specify one when you build your application for release, the build will leave your .apk unsigned, and you'll have to sign it before you can publish it. For the release certificate, you also need the certificate's alias and the passwords for the keystore and the certificate. You can list the aliases for all the keys in a keystore by entering:

keytool -list -keystore your_keystore_name
Replace your_keystore_name with the fully-qualified path and name of the keystore, including the .keystore extension. You'll be prompted for the keystore's password. Once you enter it, keytool displays all the aliases in the keystore.

Enter the following at a terminal or command prompt:

keytool -list -v -keystore your_keystore_name -alias your_alias_name
Replace your_keystore_name with the fully-qualified path and name of the keystore, including the .keystore extension. Replace your_alias_name with the alias that you assigned to the certificate when you created it.

Caution: To protect your keystore and key, don't enter the storepass or keypass arguments on the command line unless you're confident of your computer's security. For example, on a public computer, someone could look at your terminal window history or list of running processes, get the password, and then have write access to your signing certificate. This would allow that person to modify or replace your application with their own.

You should see a display that is similar to this:

 Alias name: <alias_name>
 Creation date: Feb 02, 2013
 Entry type: PrivateKeyEntry
 Certificate chain length: 1
 Certificate[1]:
 Owner: CN=Android Debug, O=Android, C=US
 Issuer: CN=Android Debug, O=Android, C=US
 Serial number: 4cc9b300
 Valid from: Mon Feb 02 08:01:04 UTC 2013 until: Mon Feb 02 18:05:04 PST 2033
 Certificate fingerprints:
      MD5:  AE:9F:95:D0:A6:86:89:BC:A8:70:BA:34:FF:6B:AC:F9
      SHA1: BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:90:AF:A1:66:6E:44:5D:75
      Signature algorithm name: SHA1withRSA
      Version: 3
The line that begins SHA1 contains the certificate's SHA-1 fingerprint. The fingerprint is the sequence of 20 two-digit hexadecimal numbers separated by colons.

Offline sismouse

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Re:Inizio da 0
« Risposta #8 il: 11 Maggio 2014, 11:26:00 CEST »
0
Ok, penso di aver capito.
Come faccio a capire però se l'esportazione che ho fatto era in modalità debug o release?
Quando ho fatto l'export non mi è stato chiesto nulla di simile...

Offline Aaaaabbbb

  • Utente junior
  • **
  • Post: 55
  • Respect: +3
    • Google+
    • pietmau
    • Mostra profilo
  • Dispositivo Android:
    Nexus 7, Samsung GT-S5830i, LG Optimus, Galaxy Tab 3
  • Play Store ID:
    aaaaaaaaaaaa
  • Sistema operativo:
    Win, Ubuntu
Re:Inizio da 0
« Risposta #9 il: 11 Maggio 2014, 11:27:51 CEST »
0
Ciao,
Quando esporti usi sempre la chiave di release, non quella di debug.
Ciao!

Offline sismouse

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Re:Inizio da 0
« Risposta #10 il: 14 Maggio 2014, 16:39:44 CEST »
0
Ho seguito alla lettera la documentazione di Google https://developers.google.com/maps/documentation/android/start#getting_the_google_maps_android_api_v2
ma il telefono non mi visualizza la mappa. Scrivendo il codice di esempio riesco ad ottenere solo il controller per lo zoom e la scritta Google in basso, ma nessuna mappa compare.

Eclipse non mi restituisce nessun errore...

Quale può essere il problema?

Post unito: [time]14 Maggio 2014, 22:05:10 CEST[/time]
Ho risolto (forse sbagliavo la chiave API) solo che ho un nuovo problema: a quanto pare la mappa che visualizzo è una sola porzione, infatti seppure io sia connesso ad internet non riesco a visualizzare altro nel momento in cui muovo la mappa verso un lato. Inoltre non riesco nemmeno a zoomare decentemente. Cosa sbaglio?

Questo è il codice che ho scritto:

Codice: [Seleziona]
public class MapViewer extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mapviewer);
       
        MapFragment mf = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
        mappa = mf.getMap();
        mappa.setMyLocationEnabled(true);
        LatLng pos = new LatLng(40.9153398, 14.7897205);
        mappa.addMarker(new MarkerOptions().title("Prova").snippet("Questo è un test").icon(null).position(pos));
    }
       
        private GoogleMap mappa;
}

Mi sfugge qualcosa?
« Ultima modifica: 14 Maggio 2014, 22:18:35 CEST da smartmouse »

Offline sismouse

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Re:Inizio da 0
« Risposta #11 il: 15 Maggio 2014, 16:45:10 CEST »
0
Ho risolto! Dovevo usare la chiave API generata con lo SHA-1 Debug che trovo in Eclipse sotto nel menu Windows -> Preferences -> Android -> Build -> SHA-1 Fingerprint.
Quindi non dovevo usare il comando keytool con la chiave Release.

Sapete dirmi perchè?
« Ultima modifica: 15 Maggio 2014, 17:07:11 CEST da smartmouse »