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

MAC:Installare NetBeans+Tomcat e avviare progetto HelloWorld

Pre: tutti i link che inserirò saranno meramente i link alle pagine da cui potrete scaricare file open-source, inoltre non inserirò alcun titolo così da mostrarvi direttamente la path da seguire.

L’installazione dell’ambiente richiede anzitutto l’aggiornamento Software del proprio Macintosh per ovviare ad eventuali problemi durante l’installazione di componenti aggiuntivi. Quindi:

Barra dei Menù superiore ->Mela (in alto a sinistra)->Aggiornamento Software->Download e Installazione Java Runtime Environment (JRE)

Ora siamo pronti per scaricare la versione NetBeans che più desideriamo per creare i nostri progetti direttamente dal sito ufficiale: https://netbeans.org/downloads/7.1.2/ 

Scaricato il pacco .dmg decomprimetelo e seguite tutta la procedura per l’installazione, ci vorrà un pochino sopratutto nella fase finale si prenderà un bel pò di tempo, quindi chillout e fate altro…

Installato NetBeans, dobbiamo procedere prima con l’installazione di relativi plugins..

Aprite NetBeans (impiegherà del tempo…)->Tools->Plugins->Directly Update (al termine decidete di riavviare l’IDE (Integrated Development Environment) A me questo passaggio è servito perché dovevo integrare il plugin “Java Web Application”

Ora possiamo passare al download di Apache-Tomcat che potrete scaricarlo da qui: http://tomcat.apache.org/download-70.cgi

Scaricato apache, rinominatelo come meglio credete e spostate la cartella in /Library (in questo modo avrete per esempio nel mio caso: /Library/Tomcat-7.0.53) questo ci servirà successivamente perché dovremo dichiarare in quale cartella si troverà il “contenitore” Catalina.

Pronti per creare il vostro progetto “HelloWorld? Bene riapriamo NetBeans…

NetBeans aperto: File-> NewProject->JavaWeb->WebApplication->ProjectName inserite HelloWorld (avendolo già create mi dà l’errore)Immagine

Flaggate il box (Use Dedicated Forlder for Storing Libraries).

Arrivati a questo punto vi dirà che non potrà procedere in quanto ancora non abbiamo aggiunto un WebServer, ossia il nostro Tomcat.

Bene procediamo: Add Server->ApacheTomcat->ServerLocation(Catalina Home) sarebbe la cartella creata prima, quindi inserirete “/Library/Tomcat” e inserite anche le credenziali per accedere la WebServer direttamente da localhost (username:user; pass:user)->Server: scegliete ApacheTomcat.

Fatto questo avrete il vostro server e se andate in: NetBeans->Window(barra menu)->Services. Si aprirà la finestra Services dove potrete vedere i servizi offerti per il vostro progetto, andate su Server->Tomcat->tasto dx->Edit server.xml qui potrete modificare le porte di vostro interesse per la connessione al localhost, solitamente vengono settate su Connector: 8080 (quindi nel caso in cui avete altre applicazioni che si servono di questa porta potrete cambiarla in 8085, 8084..etc etc a vostro piacimento).

Tornate su Server->Tomcat->tasto dx->Start( impiegherà del tempo) successivamente, una volta avviato, vedrete un triangolo verde il quale significa l’avvenuto avvio del vostro server. Come conferma aprite il browser e inserite come indirizzo: http://localhost:8080/ (oppure la porta che avete scelto 8085, 8084….) e avrete la pagina di Tomcat:  Immagine

NB: Nel caso in cui visualizzate questa schermata però il collegamento con NetBeans non avviene allora dovrete fare tutto da riga di comando, quindi:

$ /Library/Tomcat-7.0.53/bin/shutdown.sh (così chiudete la connessione aperta)

$ /Library/Tomcat-7.0.53/bin/startup.sh (così riaprite la connessione)

Se anche così non dovesse andare allora chiudetela con riga di comando e riapritela direttamente da NetBeans.

Aggiunto il vostro server, avrete anche il vostro progetto HelloWorld, quindi potrete runnarlo dopo il BUILD SUCCESSFUL, vi aprirà il browser con HelloWolrd.

Vi ringrazio per avermi seguito e spero di ricevere vostre domande o spiegazioni, sarò lieto di rispondere in runtime 😉 

MAMP – mysqlcheck: Got error: 1045 Access denied

A causa della curiosità il più delle volte si imparano tante cose, ma ci sono casi in cui impari proprio dagli errori…..(eccomi presente)

Tutto funzionava benissimo con Apache, MySQL e PhpMyAdmin finché la mia curiosità non mi ha portato a fare modifiche qui:

 

Schermata 2013-07-09 alle 16.39.12

 

in questo modo ho cancellato l’account e ovviamente anche tramite MAMP non potevo più accedere al mio database.

Ho provato a modificare il server, l’user e la password sia del file config.inc.php, sia il file situato in MAMP/bin/phpMyAdmin/config.inc 11.29.24.php ma nulla (ovviamente le modifiche o da Terminale o tramite Text editor, se aprite con Text non riuscirete a salvarlo e vi trovere a dovervi loggare come superuser (“su”) cambiare mille permessi senza ottenere risultati perchè rimarrà “bloccato”)

Dopo vari tentativi ricevevo sempre lo stesso errore:

#1045 – Access denied for user ‘root’@’localhost’ (using password: YES) Unknown language: en-iso-8859-1. phpMyAdmin tried to connect to the MySQL server, and the server rejected the connection. You should check the host, username and password in your configuration and make sure that they correspond to the information given by the administrator of the MySQL server.

 

Ma la tenacia ripaga sempre, quindi ho prima di tutto ripristinato alcuni file riguardanti il phpMyAdmin dal cestino, poi da MAMP ho ripristinato i file da File->Reset to Factory Settings->Development e successivamente chiuso MAMP.

Alla sua riapertura si è presentato un “quasi” nuovo errore..questo è un aspetto fondamentale quando si cerca di risolvere un problema…significa che qualcosa qualcosa ha smosso l’errore, quindi ci manca pochissimo…

Il “quasi” nuovo errore (sempre stesso codice e stesso errore, ma ora direttamente su MAMP) che si presentava era:

Got error: 1045: Access denied for user ‘root’@’localhost’ (using password: YES) when trying to connect.

Schermata 2013-07-09 alle 16.58.51

 

Cosi ho scoperto che la password di default è presente in diversi script sotto la cartella ‘/ Applications / MAMP / bin’.

Ora i passi da seguire sono questi:

1)Scollegate MAMP con STOP e chiudetelo

2)Aprite il nostro amato Terminale (io lo chiamo, WEPS= Work Environment for Problem Solving) e prendiamo i file con estensione “.sh” (appunto shell) e li trasciniamo sul nostro Terminale

3)Per prima cosa stoppiamo tutto, quindi Drag and Drop di:

  • stopApache.sh e date Invio;
  • stopMysql.sh e date Invio

Prendete il file ‘quickCheckMysqlUpgrade.sh’ e lo modificate aprendolo con un Text editor e inserite: -u root -p root  (-u serve per indicare nome utente (root) -p serve per indicare la password) salvate.

  • Drag and Drop su Terminale del file repairMysql.sh
  • Drag and Drop su Terminale del file quickCheckMysqlUpgrade.shvi devono uscire tutti ok, in caso contrario potrete capire cosa non va’)

Successivamente riaprite MAMP startate Apache e MySQL, avviate phpMyAdmin, autenticatevi (root;root).

 

Thanks a lot

Alessio Scannicchio