Cerca con Google

Translate

29 novembre 2013

Tutorial 59 - Compilazione di app più grandi di 5Mb in App Inventor (AiLiveComplete!)


Continuiamo a vedere l'utilizzo di App Inventor in offline, utilizziamo sempre il progetto AiLiveComplete! (se non lo avete già fatto seguite il Tutorial 58 per la sua installazione)

Questa volta andiamo a vedere come sia possibile compilare dei progetti più grandi dei 5Mb massimi consentiti da tutte le versioni attuali di App Inventor.


Utilizzeremo un particolare file batch da personalizzare di volta in volta per la compilazione del nostro file AppInventor in formato .zip.

La procedura è alquanto semplice, basta cambiare all'interno di questo file come vi mostro nel video queste tre cose:
1 - il path al file .zip del vostro progetto
2 - la vostra email
3 - la directory su cui volete salvare l'.apk compilato

Dopodichè andremo a lanciare il file batch che provvederà a compilare (si spera senza problemi) il nostro progetto permettendoci appunto di realizzare app più "grosse" di 5Mb.

Buona visione!


Potete scaricare il file batch del video salvandolo dal mio Google Drive cliccando qua:
buildserver-apk-seblogapps.cmd

Per comodità o se avete problemi con GDrive lo riporto anche in forma testuale:


Per ogni ulteriore informazione usate pure i commenti qui sotto oppure i commenti di YouTube o il forum :)

32 commenti:

  1. ciao seba, mica hai fatto qualche tutorial per controllo da remoto??

    RispondiElimina
  2. Ciao, sto seguendo tutti i tuoi tutorial che trovo molto ben fatti e credo che solo tu possa aiutarmi! Ho un piccolo problema e non riesco a venirne a capo: sto facendo un'app che contiene delle immagini con testo e non riesco a farle scalare su display più grandi (o restano piccole (utilizzando l opzione per lo scaling su display grandi di app to market) o si vedono sgranate (lasciando la risoluzione base dell app). ho provato a creare file html con immagini ma: 1) le immagini non me le carica il web viewer e 2) mi mette una scroll bar orizzontale perchè il file html è più grande dello schermo! Come cacchio faccio a far vedere bene queste immagini su tutti i dispositivi??? grazie in anticipo!

    RispondiElimina
    Risposte
    1. Ciao Gabriele, sembra che tu mi abbia letto nel pensiero...voglio infatti fare il prossimo tutorial proprio su questo argomento :)
      ad ogni modo ti do un'anteprima, basta che tu usi dei canvas o delle immagini e che per ognuna di essa nello screen initialize vai a ridimensionarla in base alla larghezza ed altezza del tuo dispositivo,
      ad esempio quindi per settare la larghezza e altezza di un componente il codice da inserire sarà:
      component.width = (component.width/480) x screen1.width
      component.height = (component.height/320) x screen1.height
      visto che AI di base lavora a 320x480px così facendo riscaliamo tutto alla risoluzione attuale del dispositivo,
      è lungo e noioso ma ad oggi è l'unico metodo,
      se non hai molti elementi grafici ti consiglio di caricare immagini con risoluzione "alta" e poi lasciare alla routine qui sopra il compito di riscalare il tutto
      fammi sapere come va, ciao!

      Elimina
    2. Forse volevi dire:
      component.width = (component.width/320) x screen1.width
      component.height = (component.height/480) x screen1.height

      E comunque dopo vari tentativi, sono arrivato alla conclusione che (se passi l'app per appToMarket) e meglio usare 360x615
      E fai tutti i tuoi files basandoti su su di un area di lavoro 800x1367, lunico inconveniente e che i tablet sono 800x1207 quindi se usi un immagine a schermo intero si distorce un po, in questo caso e solo per immagini a schermo intero io invece di usare (component.height/615) uso 533 (l'ideale per i tablet e 480, ma poi si distorce troppo sui phone, perche l'ideale per i phone e 615, quindi uso 533 che e una via di mezzo che distorce l'immagine sia sui phone che tablet ma meno cosi non si nota tanto)

      E si, come dice Sebastiano "è lungo e noioso" e a volte complicato, ma se vuoi un app che si adatti a tutto si deve fare.
      Spero che sia tutto chiaro, con tutti questi numeri.

      Buona notizia con AI2 fare questo procedimento e molto piu veloce. a confronto e una passeggiata.


      AppToMarket Screen:
      WithActionBar 360x590 800x1311
      NoTitleBar 360x615 800x1367 tablet 800x1207
      NoTitleBarFullScreen 360x640 800x1422

      Elimina
    3. Ciao Benedetto, le tue considerazioni sono esatte, dalla mia esperienza ho visto che comunque ogni telefono e/o tablet ha risoluzioni leggermente diverse, ad esempio il mio Asus TF101 da come risoluzione 800x1199 dopo che passo l'app in App2Market con resize=yes
      Una buona soluzione è quella di trovare un rapporto di scala tra dimensioni di App inventor 320x480 e la risoluzione del device e poi riscalare di questo fattore tutte le immagini sia in verticale che in orizzontale,
      l'approcio scritto sopra non va sempre bene, sopratutto perchè spesso il rapporto altezza/larghezza dei telefoni cambia e così se ridimensioniamo sempre le immagini rispetto il 320 e il 480 abbiamo delle distorsioni,
      tra poco pubblico un nuovo video ed un nuovo tutorial in cui cerco di spiegare tutto questo... :)

      Elimina
  3. Grazie mille per la risposta! Il problema = che sono un pò troppe immagini da dover riadattare...ti spiego cosa voglio fare con la mia app: vorrei creare un app di consultazione, diversi oggetti divisi per categorie con una immagine e descrizione (ho creato file ong su photoshop con miniature e descrizioni perchè è impossibile creare testi formattati affiancanti alle immagini). Se hai in mente altri metodi per sviluppare il mio progetto sono tutt'orecchie!

    RispondiElimina
    Risposte
    1. potresti iniziare provando a creare una procedura che fa il lavoro che ti ho detto qui sopra, purtroppo altri metodi non credo esistano al momento...

      Elimina
    2. Ti ringrazio, appena torno dal lavoro provo immediatamente! Scusa l ignoranza ma impostando la risoluzione del mio tablet per ogni componente poi verra scalata bene su dispositivi di piccole dimensioni? O le immagini le vedro sempre un po sgranate?

      Elimina
    3. L'idea è di partire da immagini ad alta risoluzione e poi riscalarle verso il basso proprio per evitare che si sgranino, sto facendo delle prove anch'io , non è semplice perchè ci son tanti elementi in gioco, ti aggiorno se scopro qualcosa di nuovo, tu intanto prova così!

      Elimina
    4. Se ti va di farlo in html scricati:
      http://www.inpixelitrust.fr/blog/wp-content/plugins/download-monitor/download.php?id=7
      e modifichi tutto a tuo piacimento
      e se vuoi vederlo in funzione in un app scaricati
      http://goo.gl/Mlc2AM
      e un app fatta da me e messa su play proprio ieri, e nel menu corsi trovi l'esempio in html modificato, si adatta a tutti i tablet, phone, orizzontale, verticale, e se usi immagini non devi specificare i px in html

      Elimina
  4. Tutto alla perfezione!! Funziona alla grande!! grande sebastiano! ora però devo risolvere il problema n.2, la dimensione dell'app. Ho provato il tuorial per installare ailivecomplete ma non riesco ad avviare il server builder (neanche usando il prompt dei comandi), mi si chiude sempre...

    RispondiElimina
    Risposte
    1. Se vuoi puoi usare un altro metodo, senza ailive, ma con appToMarket.
      Fai quello che devi fare con App Inventor classic, ma senza caricare le immagini ( o altri files ) se vuoi puoi caricarti i files in bassa risoluzione cosi solo per referenza. dovo aver compilato l'app, vai su AppToMarket vai su Browse e ti scegli il tuo file .apk e decompili l'app. A questo punto vai nel folder di appToMarket e in temp_myDecompiles trovi la cartella assets, metti li tutti i files che ti servono senza limiti ( il limite di google play e 50MB ) e se usi i files in bassa risoluzione per referenza li sostituisci con quelli veri.
      Fatto, semplice e veloce.

      Elimina
    2. Per Gabriele, potresti postare qui tutto l'output della finestra di dos (magari usando il sito pastebin) , altrimenti descrivi un errore troppo generico per poterti aiutare...

      Come dice benedetto un'altra soluzione è quella di sostituire le immagini in un secondo momento, dopo aver decompilato il file apk, è un'altra soluzione possibile al tuo problema...

      Elimina
  5. ciao! Intanto grazie per questi tutorial, fatti benissimo e benissimo commentati.
    Allora, ho un esamino di informatica per il quale devo fare una App. Ho studiato bene questo tutorial perchè la mia è sui 13 mb. Ora, faccio tutto per bene, ma quando arrivo alla fase finale - quando copio buildserver-apk-seblogapps in cmd - non mi carica il mio file zippato dicendomi: Problem opening inout zip file.
    Cosa mi consigli? Devo assolutamente risolvere causa esame imminente!
    A presto!

    RispondiElimina
  6. ciao, ho un problema ! ho creato la mia app, superiore di 5mb e quando la passo sul pc le canzoni che ho messo nell app si sentono tutte per circa 5 secondi e poi si stoppano automaticamente! il problema e dovuto alle grandi dimensioni dell app ? ogni canzone e di 4 mega e ne ho messe 15 con 15 immagini di poco peso. Ti prego aiutami

    RispondiElimina
  7. Non riesco a scaricare il progetto in formato .zip , non mi esce l'opzione..cosa faccio?

    RispondiElimina
  8. ciao Sebastiano!. dovrei chiederti una cosa: premessa che io sto utilizzando mit2 , e di conseguenza ai2livecomplete . sono riuscito a caricare il mio progetto ma quando cerco di importarlo nel mio computer in formato zip questo mi viene solamente scaricato in file AIA. e naturalmente non riconoscibile dal programma startaiserver. come posso fare ? grazie in anticipo!!!

    RispondiElimina
    Risposte
    1. I file di AI1 non sono compatibili con quelli di AI2 e viceversa, se ho capito la tua domanda...

      Mentre per Ai2 se vuoi compilare app più grandi di 5Mb il procedimento è lo stesso, solo che devi passare nel batch file il file .aia e non il file .zip e devi usare la versione offline di Ai2

      Elimina
  9. Mi chiedevo se la modifica del file batch funziona anche con AI2 dal momento che stò impazzendo per compilare un'app di 24 MB sul mio pc e continuo a ricevere risposta file più grande di 5 MB DOVE SBAGLIO??? grazie per l'aiuto

    RispondiElimina
    Risposte
    1. Funziona allo stesso modo anche per i progetti creati con Ai2 , ovviamente devi usare il progetto di Ai2LiveComplete Offline che trovi qui:
      http://sourceforge.net/projects/ailivecomplete/files/?source=navbar
      (cerca Ai2Offline quello con la data più recente)
      poi il file batch è lo stesso e funziona allo stesso modo, solo che il file da dare in pasto allo script è un file .aia e non il file .zip

      Elimina
  10. Salve a tutti, se ho capito bene Ai Live complete no esiste per Mac ?

    RispondiElimina
    Risposte
    1. corretto, AiLiveComplete è stato creato per girare solo su Windows PC,
      ma se parti dai sorgenti ufficiali di App Inventor e segui le istruzioni spiegano come compilare App Inventor per farlo girare standalone anche su Mac (mi dispiace ma non avendo Mac non ti so aiutare più di così)

      Elimina
  11. Ciao! Ho fatto un progetto su app inventor che supera i 10 mega concessi, solo che non riesco a seguire quello che fai sul video perche essendoci ora la nuova versione di App inventor molte funzioni sono diverse, ad esempio non riesco a scaricare in sorgente, non trovo il tasto!
    inoltre quando modifichi il file inserendo il percorso sul world non lo si deve salvare? e poi anche se lo salvi, modifichi anche il file "buildserver-apk-seblogapps" ? perche non mi sembra possibile visto che non abbiamo aperto il file direttamente ma l'abbiamo solo copiato su un documento word e poi da lì modificato i dati senza neanche salvare.....
    insoma....AIUTO!!! NON CI CAPISCO NIENTE

    RispondiElimina
    Risposte
    1. Il sorgente è ora il file .aia.
      Il procedimento rimane più o meno lo stesso, puoi cercare su internet il progetto Ai2U (App Inventor 2 Ultimate) che se non sbaglio ha anche lui un file batch per la compilazione dei progetti più grandi di 5Mb in modo simile a quello che viene fatto in questo video.

      Il file batch (quello che modifico con wordpad) ovviamente va poi salvato, e poi va eseguito (consiglio di aprire una finestra dos, digitando "cmd" da menù start) poi spostarsi nella cartella in cui hai installato Ai2U e proseguire da li, così se ci sono problemi è più facile vedere cosa va storto.

      Insomma non è facilissimo ma se riesci a seguire questo video e poi applichi al nuovo Ai2U vedrai che ce la fai!

      Elimina
  12. Ciao Sebastiano, ho il problema della dimensione app di 5Mb e nel cercare soluzioni mi sno imbattuto nella tua soluzione. In Parte mi ha salvato a meta per il momento. Riesco solo a far funziona questa versione in locale AiLiveCompleteV1.34. Il mio Problema adesso e sapere se un modo per poter trasferire un app costruita con il classico App inventor 2 e portarla in questa. Grazie mille.

    RispondiElimina
  13. Ciao Scusa ancora, ma sono disperato.. ho provato a installare questa versione AppInventorOfflineJune222016
    in questo tipo d'installazione se apro WinStartAlServer mi crea tuttii comandi nel prompt comandi in windows 10. se apro la pag con google crome localhost:8888 mi crea la pagina bianca senza nulla. se invece faccio partire il file batch WinStartAIServer mi crea questo
    ************************
    *** Starting App Inventor Offline...
    *** Please check http://AppyBuilder.com
    *** Please support and like us on http://Facebook.com/AppyBuilder
    ************************
    ott 17, 2017 9:02:27 PM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
    INFORMAZIONI: Successfully processed C:\AppInventorOfflineJune222016\AIServer\WEB-INF/appengine-web.xml
    Executing [C:\Program Files (x86)\Java\jdk1.8.0_131\jre\bin\java, -javaagent:C:\AppInventorOfflineJune222016\AppEngine\lib\agent\appengine-agent.jar, -Xbootclasspath/p:C:\AppInventorOfflineJune222016\AppEngine\lib\override\appengine-dev-jdk-overrides.jar, -classpath, C:\AppInventorOfflineJune222016\AppEngine\lib\appengine-tools-api.jar, com.google.appengine.tools.development.DevAppServerMain, --property=kickstart.user.dir=C:\AppInventorOfflineJune222016, --port=8888, --address=0.0.0.0, C:\AppInventorOfflineJune222016\AIServer]
    ott 17, 2017 9:02:27 PM com.google.appengine.tools.development.agent.AppEngineDevAgent premain
    GRAVE: Unable to load the App Engine dev agent. Security restrictions will not be completely emulated.
    java.lang.RuntimeException: Unexpected exception during cast.
    at com.google.apphosting.utils.clearcast.ClearCast$CasterImpl.cast(ClearCast.java:385)
    at com.google.apphosting.utils.clearcast.ClearCast.staticCast(ClearCast.java:252)
    at com.google.apphosting.utils.clearcast.ClearCast.staticCast(ClearCast.java:263)
    at com.google.appengine.tools.development.agent.AppEngineDevAgent.premain(AppEngineDevAgent.java:61)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)
    at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)
    Caused by: java.lang.IllegalAccessException: Class com.google.apphosting.utils.clearcast.ClearCast$CasterImpl can not access a member of class com.google.appengine.tools.development.agent.$Proxy0 with modifiers "public"
    at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102)
    at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:296)
    at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:288)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:413)
    at com.google.apphosting.utils.clearcast.ClearCast$CasterImpl.cast(ClearCast.java:383)
    ... 9 more

    ott 17, 2017 9:02:27 PM java.util.prefs.WindowsPreferences
    AVVERTENZA: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
    come posso risolvere. A me serve per forza superare i 5 MB.
    Ti ringrazio in anticipo per l'attenzione.

    RispondiElimina
  14. Questo commento è stato eliminato dall'autore.

    RispondiElimina
  15. Quale è il limite di mb che può raggiungere?
    Il file che hai creato funziona anche con appybuilder offline?

    RispondiElimina