Usare command-line-upload-script TestFairy Android

Problema: Dopo la creazione dell’apk con Android Studio e l’upload su TestFairy per testare l’app su altri dispositivi accadeva che non visualizzavo la mappa di google (schermata completamente grigia).

Soluzione: Effettuare l’upload dell’apk tramite lo script: testfairy-upload-android.sh

Spiegazione:

TestFairy è una applicazione per il beta testing delle applicazioni e piattaforme di distribuzione. Leggi le caratteristiche della piattaforma TestFairy e una descrizione dettagliata cliccando qui ().

Quando si carica una qualsiasi “build” su TestFairy accade che TF elabora la “build” e inserisce un pò di codice dinamico. Durante il processo, non si tiene conto che la costruzione è “stato firmata”. Prima che la build è resa disponibile per i beta tester, la piattaforma TestFairy firma la build con una chiave keystore PERSONALE. Questo è il motivo per il quale la nostra applicazione non funzionerà correttamente per tutti quei servizi di terzi come: Facebook, Google Map, Google Cloud Messaging (GCM) etc.

Ecco la soluzione !! Invece di caricare l’apk tramite interfaccia web dal sito di TestFairy, è possibile utilizzare lo script da riga di comando.

In questo post vedremo le configurazioni e come eseguire lo script testfairy uploader.

1. Scaricare TestFairy Command Line Upload Script

Lo script da riga di comando lo troverete qui.

Una volta che avete scaricato tutto il file zip aprite il file  testfairy-upload-android.sh dove andremo a cambiare le varie configurazioni.

Questo è il file:

#!/bin/sh

UPLOADER_VERSION=1.09

# Inserite il vostro TestFairy API_KEY qui. Potrete trovarlo nel vostro account in impostazioni
TESTFAIRY_API_KEY=

# Inserire Keystore, Storepass and Alias, per trovare questi dati dovete aprire il prompt e inserire keytool -v -list -alias ALIASCHEAVETESCELTO -keystore PERCORSOVOSTROJKS

KEYSTORE=/Users/Desktop/CartellaLavoro/cartellaapplicazione/nomescelto.jks
STOREPASS=passwordscelta
ALIAS=aliasscelto

# Tester Groups that will be notified when the app is ready. Setup groups in your TestFairy account testers page.
# This parameter is optional, leave empty if not required
TESTER_GROUPS=

# Should email testers about new version. Set to "off" to disable email notifications.
NOTIFY="on"

# If AUTO_UPDATE is "on" all users will be prompt to update to this build next time they run the app
AUTO_UPDATE="off"

# The maximum recording duration for every test.
MAX_DURATION="10m"

# Is video recording enabled for this build
VIDEO="on"

# Add a TestFairy watermark to the application icon?
ICON_WATERMARK="on"

# Comment text will be included in the email sent to testers
COMMENT="This is upload test to verify the map"

# locations of various tools
CURL=/usr/bin/curl
ZIP=/usr/bin/zip
KEYTOOL=/usr/bin/keytool
ZIPALIGN=/Applications/eclipse/adt-bundle-mac-x86_64-20130522/sdk/build-tools/23.0.2/zipalign
JARSIGNER=/usr/bin/jarsigner

SERVER_ENDPOINT=http://app.testfairy.com

2. Come eseguire il Command Line Upload Script

Aprite il terminale, andate nella cartella dove si trova il file testfairy-upload-android.sh e digitate

$ chmod a+x testfairy-upload-android.sh

$ ~/tutto_il_percorso_per_arrivare_alla_cartella_command-line-uploader-master/testfairy-upload-android.sh ~/tutto_il_percorso_per_arrivare_alla_cartella_del_nostro_apk/MyApp.apk

Se tutto procede bene dovreste avere questo:

Uploading ~/tutto_il_percorso_per_arrivare_alla_cartella_del_nostro_apk/MyApp.apk to TestFairy.. OK!
Downloading instrumented APK.. OK!
Re-signing APK file.. jar signed.

Warning: 
No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (2040-12-23) or after any future revocation date.
OK!
Uploading signed APK to TestFairy.. OK!

Build was successfully uploaded to TestFairy and is available at:
https://app.testfairy.com/projects....


Ora potrete aprire il link sopra e inviare il file.apk ai vostri tester
 con la mappa di google funzionante.

P.S. Tutto questo perchè se fate l’upload dal sito web TF firmerà il vostro apk con le loro chiavi che il vostro “console.developers.google.com/apis/credentials?project=progetto” non avrà e quindi conseguentemente le APIKEY saranno differenti.

Per far riconoscere le API di google map inserite nel vostro Manifest:

<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="ApiGenerataDa:console.developers.google.com/apis/credentials" />

Questo sito mi è stato utile per capire:
http://javatechig.com/android/testfairy-command-line-upload-script

P:S: Ricordatevi che una volta effettuato l’upload della apk tramite terminale dovete inviare l’apk solo attraverso “invito tester” in quanto se provate a scaricare l’apk dalla pagina creata dinamicamente dopo l’upload attraverso il qrcode riavrete lo stesso errore

Come sapere il nostro SHA1 fingerprint con eclipse

In questo piccolo e veloce articolo vi mostro come risulta essere facile ottenere il vostro fingerprint da Eclipse per la vostra app.

Metodo molto semplice è quello di aprire Eclipse->Preferenze di Sistema->Android->Build e nella pagina vi compare:

  1. Default Debug Keystore;
  2. MD5 fingerprint;
  3. SHA1 fingerprint

Oppure potete direttamente inserire nella console dei comandi questo comando:

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

Vi appariranno direttamente tutte le caratteristiche che ricercate per il vostro Google Maps o per il Nearby Messages API.

Grazie

Alessio