Cerca con Google

Translate

10 novembre 2015

MIT App Inventor Extensions - ottime novità in arrivo


Il team MIT App Inventor (tool online, gratuito e web-based per la realizzazione di app Android) ha in cantiere una bellissima novità.

Sto parlando delle estensioni per App Inventor, o meglio della funzionalità App Inventor Extensions.

Il team si è reso conto che gli utenti richiedono molto spesso (tramite forum ufficiale raggiungibile a questo indirizzo) componenti nuovi e funzionalità aggiuntive.

Spesso però tali componenti avrebbero un bacino d'utenza molto limitato e porterebbero presto ad un enorme ed inutile complicazione di tutta l'interfaccia di App Inventor.


Ecco perchè il team ha pensato di creare invece le "estensioni" ovvero dei moduli da caricare in base alle proprie necessità nel proprio progetto.

Facciamo subito un esempio pratico: abbiamo bisogno di un componente per l'analisi dei suoni provenienti dal microfono del nostro smartphone. Lo sviluppatore xyz crea questa estensione, noi la carichiamo insieme al nostro nuovo progetto App Inventor ed ecco che il nuovo componente sarà disponibile solo in questo specifico progetto.
Un domani esce un'altra estensione (ad esempio la tanto agognata estensione per gli ads nelle nostre app), scarichiamo l'estensione, la aggiungiamo al nostro progetto e la utilizziamo come un normale componente di App Inventor.

Capite che in questo modo in effetti MIT AI diventerà molto più flessibile e si potrà adattare alle esigenze di ognuno di noi. Avremo infatti una serie di blocchi "base" ed una serie di blocchi "extension" da caricare solo quando necessari al nostro lavoro.

Passiamo quindi ad una descrizione più dettagliata sul suo funzionamento.
Per prima cosa c'è da notare che ad oggi (10 Novembre 2015) questa funzionalità è disponibile solo sul server di test, raggiungibile all'indirizzo:

http://extension-test.appinventor.mit.edu

Ricordatevi che per funzionare dovete scaricare anche la versione corrispondente del companion, la potete scaricare cliccando dalla schermata dei progetti su "Help" e poi su "Companion Information", ad oggi il link diretto per scaricare l'apk lo trovate cliccando qua.

Le prime estensioni disponibili e che possono essere testate si trovano invece a questa pagina (in continuo aggiornamento) http://appinventor.mit.edu/extensions/ per ora non c'è molto ma c'è da sperare che ne vengano aggiunte altre (anche più interessanti) a breve.

Ricordo ancora una volta che il tutto è ancora in fase di test e di sviluppo, il team ci aggiornerà quando questa feature sarà integrata nella versione ufficiale di MIT App Inventor.

Ovviamente il team invita tutti gli sviluppatori a provare a creare le proprie estensioni, istruzioni dettagliate (e molto tecniche) so come farlo sono disponibili a questa pagina: http://ai2.appinventor.mit.edu/reference/other/extensions.html
Bisogna programmare l'estensione in linguaggio java e bisogna avere familiarità con il codice sorgente di AI (e sapere usare GitHub).

Ogni estensione creata ha un suffisso .aix , questi file .aix contengono tutto quello che serve all'estensione per funzionare. Quindi per aggiungere un estensione al nostro progetto ci basta scaricare il file .aix relativo ed aggiungerlo nel nostro progetto.

Attualmente le limitazioni delle estensioni sono che funzionano sono da Android 2.2 in su (qualcuno ancora usa versioni più vecchie???) e che possono essere creati solo componenti non visibili.

Vediamo ora nel dettaglio 
come usare la versione beta del server MIT App Inventor extensions:

1) Andiamo alla pagina http://extension-test.appinventor.mit.edu
2) Scarichiamo ed installiamo il companion compatibile da qua (attenzione che questa versione sovrascrive quella attuale, quindi per tornare a lavorare sui progetti MIT AI 2 bisogna poi reinstallare il companion "ufficiale")
3) Riportate ogni vostro test, bug, dubbio nel forum ufficiale (MIT App Inventor Forum) in lingua inglese
4) Creiamo un app di test ed importiamo un estensione "di prova", per farlo clicchiamo su "Import Extension" e poi ancora su "import" scegliamo poi il nostro file .apx relativo all'estensione che vogliamo utilizzare (oppure indichiamo un URL da dove scaricare l'estensione)


5) Possiamo rinominare se vogliamo l'estensione appena caricata
6) A questo punto l'estensione è caricata e pronta per essere utilizzata nel nostro progetto

7) Per usare l'estensione, trasciniamo come al solito il componente nel nostro design editor, il componente relativo all'estensione appena caricata andrà nel campo dei componenti non visibili
8) A questo punto l'estensione è pronta per essere utilizzata da Blocks Editor, ogni estensione avrà una sua documentazione (nel caso del nostro esempio la documentazione può essere letta cliccando qua) ed i suoi relativi metodi e proprietà saranno a disposizione in modo del tutto uguale ai componenti già esistenti


In tutorial futuri vi mostrerò qualche esempio pratico con le estensioni create fino ad oggi.

Condivisione dei progetti contenenti estensioni:

Quando andremo a salvare il nostro progetto (in formato .aia) questo conterrà anche tutte le estensioni che abbiamo utilizzato, quindi se vogliamo passare il progetto ad un nostro collaboratore o vogliamo pubblicare i sorgenti su internet, non ci dovremmo preoccupare di fornire anche il file .aix, visto che questo sarà già automaticamente caricato nel momento in cui andremo a caricare il file .aia del progetto completo. Bello!

Considerazioni finali:
Per ora questo è tutto quello che c'è da dire su questa nuova importantissima funzionalità di MIT App Inventor.
Personalmente spero che al più presto tutto questo venga integrato nella versione ufficiale di AI, e che capaci sviluppatori si diano da fare per creare "extensions" utili a noi sviluppatori di android app!

Ovviamente le prime cose che mi vengono in mente sono delle estensioni per il supporto degli Ads, immagino che non sia così complicato aggiungere un estensione per AdMob ed una per gli Ads di Amazon. Visto che la cosa interessa a molti penso che lo sviluppatore che la realizzerà per primo potrebbe anche venderla ad una cifra simbolica (5€?) ed otterrebbe un enorme successo.

Il grandissimo TaiFun (https://puravidaapps.com/) ha già realizzato la sua prima extension per gestire le notifiche, appena avrò un attimo di tempo farò un mini tutorial a riguardo.

A breve invece vedremo un esempio pratico dell'utilizzo di "ScaleDetector", una bella estensione per la gestione del multitouch nei canvas.

Insomma, come sempre c'è fermento in MIT App Inventor, continuate a seguirmi per restare sempre aggiornati su tutte le novità!

Le "extension" sono parte del lavoro svolto durante il Google Summer of Code 2015 da parte degli studenti Ethan Hon, Justus Raju and Mouhamadou Sall a cui vanno i nostri più sentiti ringraziamenti.

Aggiornamento:
Alcune utili ed interessanti estensioni in versione "beta" sono scaricabili da questa pagina del mitico PuraVidaApps
http://puravidaapps.com/extensions.php
(vi consiglio di mettere questo indirizzo tra i preferiti visto che TaiFun l'autore è molto attivo sul fronte App Inventor!)







15 commenti:

  1. Con le Extension App Inventor diventa a pieno titolo il futuro della programmazione. A questo punto spero che Android entri in lavatrici, automobili, vestiti, ecc.. Mi piacerebbe che venga implementata la funzione stand alone direttamente dal MIT, ora la vedo dura io che programmo durante la pausa pranzo a lavoro con una connessione lentissima dovermi caricare anche le Extension.

    RispondiElimina
    Risposte
    1. Tranquillo Pier, le estensioni sono file di poche decine di kb, quindi anche con connessioni lente nessun problema. E poi una volta caricate nel tuo progetto non devi ricaricarle ogni volta. Quindi non credo rallenti in modo particolare il tuo ciclo di lavoro.
      Quello che c'è da sperare è che escano un sacco di estensioni e che ci sia un bel repository dove poterle consultare tutte.

      Elimina
  2. Da quello che vedo le Extension si possono trovare su più fonti, Pura Vida Apps, Mit, ecc.. Siamo agli inizi ma bisognerà trovare un modo per mettere tutto in ordine suddiviso per gruppi. Magari in futuro tutti i vari gruppi diventeranno Extensions , è un paradosso avere di default Lego Mindstorms (per fare un esempio).

    RispondiElimina
    Risposte
    1. Il progetto è ancora alle prime fasi, tutte le estensioni "ufficiali" si trovano alla pagina http://appinventor.mit.edu/extensions
      Ognuno potrà aggiungerle penso dopo un controllo da parte del team del MIT.
      Cmq è un pò come le librerie Java, non esiste un repository globale ma ci sono mille fonti da cui prenderle (e google ovviamente ci aiuta in questo)
      Per il discorso mindstorm penso tu abbia ragione, non capisco perchè ci sia ancora, penso motivi storici o forse una qualche partnership lego-google quando è stato lanciato il progetto AI.

      Elimina
    2. http://puravidaapps.com/extensions.php queste le hai viste?

      Elimina
    3. comunque ho provato il soundAnalysis, funziona tramite mic e non tramite jack, rilevata la nota torna subito a zero quindi ho messo la condizione di cambiare il text solo se il pitch rilevato è diverso da zero.
      Solo sarebbe più opportuno chiamarla semplicemente PitchAnalysis, visto che SoundAnalysis è una cosa molto complessa (pitch, decibel, frequenze in gioco, ecc...)

      Elimina
    4. Grazie per il link! sai che mi era sfuggito! aggiorno l'articolo immediatamente! :)
      Per il discorso del SoundAnalysis, se non sbaglio ogni componente ha una documentazione pubblica su google docs, dove puoi inserire i tuoi commenti. Se ti va potresti farlo, come dici te il nome non è appropriato a quel che fa quella extension.

      Elimina
  3. Quindi probabilmente a breve progetti come Ai2LiveComplete sarà superfluo immagino, mi sbaglio?

    RispondiElimina
    Risposte
    1. Dipende dalla "generosità" degli sviluppatori, Ai2LiveComplete poi continua ad avere un senso per chi vuole usare AI completamente Offline.
      Invece per i componenti aggiuntivi, li starà appunto ad ogni sviluppatore se decidere di continuare con le proprie versioni "custom" di AI o creare delle estensioni.
      Ricordatevi però che per ora le estensioni possono creare solo componenti NON visibili, quindi ad esempio non è ancora possibile creare un estensione per aggiungere AdMob, questa è una limitazione abbastanza importante al momento...

      Elimina
  4. Ciao. C'è qualcuno che ha sviluppato un estensione per aprire uno socket TCP/IP???

    RispondiElimina
    Risposte
    1. Che io sappia ti direi di no, però siamo solo agli inizi. Se sei abbastanza preparato ed hai guardato un pò come si fa potresti anche crearla te un estensione del genere, che dici?

      Elimina
  5. come si installa il companion nuovo? scusate la domanda da niubbo!!!

    RispondiElimina
  6. Great detailed article thanks for the sharing

    Hide apps

    RispondiElimina
  7. Non riesco a completare un'applicazione perché mi manca la funzione di trascinamento.
    (Numeri da spostare ed inserire nella tabella)

    RispondiElimina
  8. Non riesco a completare un'applicazione perché mi manca la funzione di trascinamento.
    (Numeri da spostare ed inserire nella tabella)

    RispondiElimina