Cerca con Google

Translate

12 luglio 2012

Tutorial 34 - Copiare Screens (Blocks e Design editor) da un App ad un'altra


Scopriamo oggi un altro "trucchetto" di App Inventor.

Mettiamo caso di aver realizzato un App particolarmente complicata su cui abbiamo speso giorni e giorni di fatica.
Ora vogliamo creare una nuova App che potrebbe guarda caso utilizzare parte del codice che abbiamo già scritto in precedenza.


Che fare? Il solito printscreen e poi ricopiare a mano tutti i componenti del Design e del Blocks Editor???
Ci viene male solo all'idea vero :)

Ecco quindi che utilizzando un metodo molto simile a quello visto nel Tutorial 33 possiamo invece in maniera ingegnosa prendere la nostra app "donatrice", scaricarla in formato .zip sul nostro pc, "cannibalizzare" da essa gli screen che ci serviranno ed inserirli nella nostra nuova app, concludendo il nostro lavoro in un decimo del tempo!

I passi da seguire sono appunto molto simili alla copia da uno screen all'altro già visti, qui fate solo un pò più di attenzione coi nomi dei file e degli screen che volete portare da un app all'altra.
Ed evitate assolutamente di inserire screen con nomi uguali!!!

Buona visione!!!




36 commenti:

  1. Grazie, non ho al momento tempo di vedere il video ma mi interessa, lo farò al più presto!
    Marketizer è stato aggiornato!! Aspettiamo il tuo commento sugli aggiornamenti.
    Grazie ancoraaa

    RispondiElimina
  2. raga ho due screen. Ho bisogno di sapere come posso fare per chiudee lo screen 1 con il clock e aprire lo screen 2. Vi spiego meglio: ho impostato il clock a 2500 in modo tale che dopo 2.5 secondi apra lo screen 2 e fino qui nessun problema. Il problema sorge nel momento in cui premo il tasto indietro per chiudere l'appicazione, perchè quando lo premo anzichè chiudersi l'applicazione torna allo screen1 che dopo 2.5 sec torna allo screen 2...come posso fare a chiudere del tutto lo screen 1?? ho trovato close screen tra i blocchi ma non posso collegarlo con l'apertura dello screen 2...aiuto!!

    RispondiElimina
    Risposte
    1. Ciao Seb,purtroppo io son sempre convinto che il "close screen" di AI nella sua attuale implementazione non funzioni a dovere,infatti come spieghi te e come si è visto in altri casi in realtà sembra non fare nulla perchè se poi premiamo back torniamo cmq allo screen precedente.
      Esiste "close application" che però a me sembra faccia lo stesso lavoro di "close screen"
      Restiamo in attesa di nuove versioni di AI dove questo bug magari verrà sistemato...

      Elimina
  3. grazie mille!! almeno nn sono io...ahah...XD

    RispondiElimina
    Risposte
    1. Es. Quando viene premuto (nello screen2) un pulsante memorizza con il TinyDB il valore (ad esempio) 1 e con il tag di "apri chiudi schermo" e vai allo screen1.
      Quando viene inizializzato lo screen1 se il valore memorizzato dal TinyDB è uguale a 1 settalo a 0 e chiudi lo screen1. Se è uguale a 0 set timer 1. enabled to true.

      Elimina
  4. Ciao,purtroppo non tiesco a salvare l'app sul pc,sia dalla schermata dei progetti sia facendo packaging to download..mi dice server error ecc..è un problema del server mit oppure di una mia configurazione sbagliata??
    Grazie

    RispondiElimina
    Risposte
    1. può darsi che ci siano problemi temporanei sul server, riprova magari domani, in genere il download del progetto (il file zip) però funziona sempre senza problemi

      Elimina
  5. Ciao Sebastiano, avrei una domanda da farti: dovrei spostare un Button da Screen2 a Screen1, però in entrambi gli screen ci sono anche altre cose. é possibile fare una cosa del genere? Magari richiamare con un Button nello Screen1 la procedura nello Screen2 che mi interessa? Non so se sono riuscito a spiegarmi...

    RispondiElimina
    Risposte
    1. Ciao Andrea, se ho capito giusto vorresti passare un "pezzo" di codice da uno screen all'altro,purtroppo non si può fare(lo hanno chiesto in molti),la cosa più semplice da fare e salvarsi (o stamparsi) il blocks editor con il codice che ci interessa, poi passare all'altro screen e ricreare gli stessi blocchi.
      So che è odioso ma è l'unico modo ad ora :(

      Elimina
  6. ciao seb esiste un modo per quando apro l app si apra un altro screen al posto dello Screen1?

    RispondiElimina
    Risposte
    1. no, il primo screen sarà sempre Screen1
      però se vuoi lo puoi chiudere subito e passare ad un altro screen a piacimento

      Elimina
    2. An ok...allora posso che quando apro l' applicazione si chiuda subito lo screen1 e apra direttamente lo Screen7? perchè lo screen7 quello che volevo impostarlo come iniziale è un immagine se c'è un altro procedimento per fare in modo che qundo apra l' app mostri un immagine mi va benissimo ma esiste?

      Elimina
    3. il primo screen è sempre Screen1, non c'è verso di cambiare questa cosa,
      quindi da screen1 fa passare l'app subito a Screen7, oppure riscrivi l'app affinchè il tuo screen7 diventi il nuovo screen1,
      seguendo le indicazioni di questo tutorial potresti proprio fare questo lavoro qua con relativa semplicità lavorando sul file .zip della tua applicazione

      Elimina
    4. Il mio problema che lo modifico rinomino gli screen però AI4A mi dice che non è un progetto di AppInventor >:

      Elimina
  7. Applicazione merge presente sul sito appinventor meccanizzata

    RispondiElimina
  8. Un modo per copiarli con app inventor 2?
    Quando esporto il progetto è in formato.aia e non posso accedere alle varie directory dell'app.
    Come potrei fare?

    RispondiElimina
    Risposte
    1. Ciao, purtroppo non sono ancora a conoscenza di un metodo equivalente per AI2, mi dispiace....

      Elimina
    2. Ok, ti ringrazio comunque per la risposta.
      Già che si sono ti volevo chiedere se il limite dei 5 Mb era fissato anche per AI2.

      Complimenti per i tutorials

      Elimina
    3. si, la limitazione c'è anche in AI2

      Elimina
  9. ma il limite dei 5 MB su che file sta?
    Sta sul .aia o sul .apk?
    Io oggi ho provato ad esportare un file .apk da 7 MB e non mi ha dato nessun problema.

    RispondiElimina
    Risposte
    1. ufficialmente il limite dovrebbe ancora esistere, poi non sei il primo che mi dice che è riuscito a compilare app più grandi di 5Mb, ma non ci farei affidamento visto che forse è un "bug" non voluto che poi sistemeranno.
      Comunicazioni ufficiali in merito ancora non ce ne sono.

      Elimina
  10. Ma non sai se il limite è sul file .aia o sul .apk?

    RispondiElimina
    Risposte
    1. dovrebbe essere sugli asset che si caricano, ad ogni modo quando superi i 5Mb e provi a creare il file .apk esce il messaggio d'errore. Io direi che quindi il limite è sul file .aia

      Elimina
  11. Ragazzi, so di essere l'ultimo iscritto e l'ultimo a poter parlare su questo blog ma ho appena trovato il modo di spostare gli screen con AI2.
    La tecnica è la stessa sopradescritta ma con una modifica:
    I file .aia possono essere aperti con WinRar (probabilmente anche con altri ma io ho testato solo winrar).
    Una volta apero il file ci si troverà di fronte a 3 (nel mio caso, ma non credo sia importantye) cartelle:
    Assets
    Src
    Youngandroidqualcosaltro che non mi ricordo.

    La cartella Src è il nostro obiettivo; troverete varie sottocartelle che alla fine vi porteranno a tanti gruppi da 3 files quante sono le scren del vostro progetto.
    Oltre a rinominarle (per ora io ho solo invertito i numeri) bisogna aprire i files con blocconote e fare Trova\sostituisci da "ScreenNumerovecchio" a ScreenNumeroNuovo.
    Tutto sempre da Winrar, scompattandfo e ricompattando non so perchè ma non fnziona.
    Il prossimo test dsarà vedere se è possibile cambiare anche i nomi degli Screen, specie dello Screen1

    Speri di essere stato utile a qualcuno e se ho scritto sciocchezze o cose note vi prego di scusare il mio spirito di condivisione.

    Nello

    RispondiElimina
    Risposte
    1. Grazie mille Nello, molto utile! appena ho un pò di tempo posso provare anch'io,
      ad ogni modo non penso sia possibile cambiare nome degli screen in quanto ad esempio in AI1 questo provocava un crash nell'applicazione.
      Facci sapere se scopri altro e grazie ancora!

      Elimina
    2. Ciao,
      scrivo solo per confermare che questo metodo funziona anche per "mischiare" più progetti diversi... L'ho appena fatto con successo ;)

      Elimina
    3. Aggiornamento....scompattate pure il progetto da "spostare", modificatelo a piacimento e poi aprite il progetto di destinazione con winrar oppure 7zip (gli unici che ho provato per ora) senza scompattarli e trascinateci dentro i nuovi files....
      Garantito ;)

      Elimina
    4. Scusate, saprete certamente come poi si ricostruisce il file aia da importare in AI2.
      Io non lo so, potete dirmelo?
      grazie

      Elimina
    5. Molto semplice, prendi le tre directory che hai scompattato prima (assets,src,youngandroidproject) e le ricomprimi (con winzip o 7zip, basta che il formato di compressione sia zip)
      Poi prendi il file .zip e lo rinomini in .aia
      e lo ricarichi in App Inventor 2, funziona, appena provato :)
      Per cambiare i nomi degli screen devi entrare in ScreenName.scm (ovviamente ScreenName sarà il nome del tuo screen) e cercare il nome dello screen che avevi dati in AppInventor e cambiarlo con quello che vuoi te
      Se vuoi duplicare lo screen1 devi copiare tutti e tre i file che lo compongono:
      Screen1.bky
      Screen1.scm
      Screen1.yail
      (questi file li trovi all'interno della cartella \src\appinventor\ai_seblogapps\Magic8Ball\ ovviamente con il tuo nome utente e il tuo nome app)
      E cambiare i loro nomi ad esempio in Screen2.bky ... scm ... yail
      editando poi con un text editor il .csm per cambiare al suo interno da Screen1 a Screen2
      spero di essere stato chiaro, cmq così funziona :)

      Elimina
    6. ciao a tutti,il metodo da te descritto l'ho fatto alla lettera e tutto va come dici mi trovo i blocchi e i nuovi screen,ma il problema grosso e che se vai su ogni screen e nei relativi blocchi, nel menu a sx dove ci sono tutte le nostre librerie il nome dello screen rimane sempre quello copiato,in pratica non puoi richiamare uno screen nuovo da te rinominato,non so se mi sono spiegato bene,spero di sbagliare io in qualcosa.

      Elimina
  12. Questo commento è stato eliminato dall'autore.

    RispondiElimina
    Risposte
    1. Questo commento è stato eliminato dall'autore.

      Elimina
  13. come faccio a esportare il file apk maggiore di 5 mb con app inventor 2 ultimate?? sto diventndo scemooo

    RispondiElimina
    Risposte
    1. Devi aprire quello con l'estensione .aia , l' apk non credo si possa aprire

      Elimina
    2. Dovete lavorare sul file .aia, con AI2U c'è uno script per la compilazione dei progetti più grandi di 5Mb, va fatto tutto da dos.

      Elimina