Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Android - B4A
Forum - Android - B4A

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Basso Livello (Normal User)
Rookie


Messaggi: 22
Iscritto: 14/11/2020

Segnala al moderatore
Postato alle 19:30
Sabato, 21/11/2020
Sto sperimentando l'ambiente di sviluppo per applicazioni android B4A come consigliayo da Carlo. Ho eseguito l'applicazione in debug, volevo provare a compilare il programma e portarmi l'eseguibile direttamente nel cellulare, ma con le opzioni di compilazione che ho provato non mi ha creato l'eseguibile!

Nella guida b4a arrivano fino al test in debug ma non spiegano come portare l'app nel cellulare definitivamente.

Qualche dritta? Ho fatto qualche ricerca nel sito di b4a ma non ho trovato la risposta.


Se ci fosse la Silicon Valley in Italia, sarebbe capitanata da Barbara D'Urso.
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 838
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 23:02
Sabato, 21/11/2020
Testo quotato

Postato originariamente da Basso Livello:

Sto sperimentando l'ambiente di sviluppo per applicazioni android B4A come consigliayo da Carlo. Ho eseguito l'applicazione in debug, volevo provare a compilare il programma e portarmi l'eseguibile direttamente nel cellulare, ma con le opzioni di compilazione che ho provato non mi ha creato l'eseguibile!

Nella guida b4a arrivano fino al test in debug ma non spiegano come portare l'app nel cellulare definitivamente.

Qualche dritta? Ho fatto qualche ricerca nel sito di b4a ma non ho trovato la risposta.  


L'eseguibile è un'apk che si trova nella cartella ....\NomeApplicazione\Objects\
L'apk la puoi copiare via usb, pennetta, bluetooth, wi-fi, in una cartella del cellulare e poi mandare in esecuzione, ti verrà richiesto se installare apk non sicure, devi dare l'autorizazione in impostazioni, perché l'apk non proviene da PlayStore.
L'apk puoi inviartela anche con whatsapp web.

Per evitare tutto questo, il cellulare deve essere collegato via USB al PC, tutti i driver devono essere installati, win7/10 lo fa in automatico.
Sul cellulare la modalità sviluppatore deve essere attivata e deve essere dato il consenso al collegamento con il PC.

Poi su B4A, devi usare il tasto connetti, se ti appare: "nessun dispositivo trovato ecc ecc" una delle precedenti operazioni non è stata eseguita correttamente. vedi foto allegata.

Se hai un cellulare "vecchio" di un brand non riconosciuto da Win, e non hai i driver nenche nel sito del produttore, nessun problema, B4A si può usare in debug con il cellulare connesso via Wi-Fi (ti darò info se ti occorrono)

Una volta connesso non devi scegliere nessuna opzione, B4A compila in codice nativo Java, firma il pacchetto, lo invia al cellulare, lo installa e lo manda in esecuzione, tutto in automatico, non devi fare nulla solo leggere la progressione che avanza speditamente.
Se sei in Debug, puoi inserire i Breakpoints e l'applicazione avanzerà passo passo vedendo il risultato sul cellulare, sul cellulare vedrai anche la riga Java in esecuzione, e sul log di B4A potrai esplorare i valori delle variabili, insomma il controllo è totale, B4A fa veramente bene il suo lavoro.


Carlo ha allegato un file: B4A_connesso.jpg (246798 bytes)
Clicca qui per guardare l'immagine

Ultima modifica effettuata da Carlo il 21/11/2020 alle 23:28


in programmazione tutto è permesso
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 838
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 23:46
Sabato, 21/11/2020
C'è una sola cosa che mi ha fatto pensare di essere "tonto", il nome del package.
Su [Progetto/Configura Ambiente di Compilazione] o semplicemente Ctrl+B, devi inserire il nome del programma, e se tralasci il punto, non funziona nulla, senza una spiegazione chiara. Nella foto allegata il nome: "Android.Linee" genererà un'apk di nome Linee.apk


Carlo ha allegato un file: B4Aconfigurazione.jpg (252037 bytes)
Clicca qui per guardare l'immagine

Ultima modifica effettuata da Carlo il 22/11/2020 alle 2:13


in programmazione tutto è permesso
PM Quote
Avatar
Basso Livello (Normal User)
Rookie


Messaggi: 22
Iscritto: 14/11/2020

Segnala al moderatore
Postato alle 8:03
Domenica, 22/11/2020
Ho tre opzioni di compilazione nel menu "Progetto":

1) Compila ed esegui [genera un file *_RAPID_DEBUG.apk e lo esegue sul cellulare collegato, poi quando stoppo il debug sparisce l'apk]

2) compila ed esegui (background) [esegue l'applicazione sul cellulare senza mostrare il file .apk sul PC]

3) compila come libreria [non utilizzabile con i moduli Main e starter, serve per creare librerie da utilizzare nei vari progetti]

Nessuna di queste opzioni mi crea il file PrimaApp.apk (il nome del package è b4a.PrimaApp)

Ho pensato che potrei copiare il file PrimaApp_RAPID_DEBUG.apk finché il telefono è collegato, ma non mi sembra la soluzione più intelligente


Se ci fosse la Silicon Valley in Italia, sarebbe capitanata da Barbara D'Urso.
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 838
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 15:54
Domenica, 22/11/2020
Forse abbiamo versioni diverse la mia è: 8.80

Uso Compila ed esegui, o F5 (come in VB6/VB.Net), o il triangolino esegui

Se sono in Debug una volta terminato il Debug nel pc trovo l'apk in: ...\PrimaApp\Object\PrimaApp_RAPID_DEBUG.apk e non scompare dal PC, neanche se sconnetto il cellulare.
Nel cellulare l'app la trovo nel menù delle apk, all'ultima pagina all'ultima posizione.
Il nome sotto all'icona nel cellulare è quello che dai da codice, nell'esempio:  MiaPrimaApk
Codice sorgente - presumibilmente Android

  1. #Region Module Attributes
  2.         #ApplicationLabel: MiaPrimaApk
  3.         #VersionCode: 1
  4.         #VersionName:
  5.         #SupportedOrientations: unspecified
  6.         #CanInstallToExternalStorage: False
  7. #End Region



Se sono in Release, una volta compilato, nel pc trovo l'apk in: ...\PrimaApp\Object\PrimaApp.apk     e      PrimaApp_RAPID_DEBUG.apk scompare dal PC

Nel cellulare come sopra. :k:

Per distribuire PrimaApp.apk, dopo che l'hai copiata nel cellulare, WhatsApp è il sistema più indicato.
Per metterla nel PlayStore, ti devi accreditare come sviluppatore, sottostando alle policy di Google.
Per metterla in Amazon AppStore, è tutto più facile in https://developer.amazon.com, la limitazione è che non puoi mettere un'app che contiene dei link protetti da copyright: Youtube, Facebook ecc ecc.



Ultima modifica effettuata da Carlo il 22/11/2020 alle 22:42


in programmazione tutto è permesso
PM Quote
Avatar
Basso Livello (Normal User)
Rookie


Messaggi: 22
Iscritto: 14/11/2020

Segnala al moderatore
Postato alle 10:47
Sabato, 28/11/2020
Ecco la mia prima app, ho cambiato l'estensione del file da .apk a .zip, per caricarla, é una versione di hello world "rivisitata". Spero di produrre qualcosa di più interessante e meno "offensivo" :rotfl:


Basso Livello ha allegato un file: PrimaApp.zip (139630 bytes)
Clicca qui per scaricare il file


Se ci fosse la Silicon Valley in Italia, sarebbe capitanata da Barbara D'Urso.
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 838
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 11:55
Sabato, 28/11/2020
Testo quotato

Postato originariamente da Basso Livello:

Ecco la mia prima app, ho cambiato l'estensione del file da .apk a .zip, per caricarla, é una versione di hello world "rivisitata". Spero di produrre qualcosa di più interessante e meno "offensivo" :rotfl:


Spero che B4A ti piaccia, il codice seguente l'ho scritto in VB6 anni fa e modificato l'anno scorso per B4A in 10 minuti, se tocchi lo schermo appaiono delle info, se tocchi le info l'animazione va in pausa:
Codice sorgente - presumibilmente VB.NET

  1. #Region Module Attributes
  2.         #ApplicationLabel: Linee by carlo ©2019
  3.         #VersionCode: 1
  4.         #VersionName:
  5.         #SupportedOrientations: unspecified
  6.         #CanInstallToExternalStorage: False
  7. #End Region
  8.  
  9. #Region  Activity Attributes
  10.         #FullScreen: True
  11.         #IncludeTitle: false
  12. #End Region
  13.  
  14. Sub Process_Globals
  15.         Dim Timer1 As Timer
  16. End Sub
  17.  
  18. Sub Globals
  19.         Dim CanvasGraph As Canvas
  20.         Dim ImageGraph As ImageView
  21.         Dim lblTitle As Label
  22.  
  23.         Dim Posizione As Float
  24.  
  25.         Dim Cont(7, 3) As Int  
  26.         Dim RigaFin As Float
  27.         Dim RigaFinInc As Float
  28.         Dim ColFin As Float
  29.         Dim ColFinInc As Float
  30.         Dim RigaIn As Float      
  31.         Dim RigaInInc As Float
  32.         Dim ColIn As Float
  33.         Dim ColInInc As Float
  34.         Dim memo(6, 100) As Float
  35.         Dim rosso As Short = 255
  36.         Dim verde As Short= 255
  37.         Dim blu As Short= 255
  38.        
  39.         Dim RigaFin2 As Float
  40.         Dim RigaFinInc2 As Float
  41.         Dim ColFin2 As Float
  42.         Dim ColFinInc2 As Float
  43.         Dim RigaIn2 As Float      
  44.         Dim RigaInInc2 As Float
  45.         Dim ColIn2 As Float
  46.         Dim ColInInc2 As Float
  47.         Dim memo2(6, 100) As Float
  48.  
  49.         Dim RigaMax As Float
  50.         Dim ColMax As Float
  51.         Dim RigheVisibili As Float
  52.         Dim RigaAttuale As Float
  53.         Dim riscrivi As Float
  54.         Dim i As Short = 0
  55.         Dim n As Short = 0
  56. End Sub
  57.  
  58. Sub Activity_Create(FirstTime As Boolean)
  59.        
  60.         ImageGraph.Initialize("ImageGraph")
  61.         Activity.AddView(ImageGraph,0,0,100%x,100%y)
  62.        
  63.   ' sequenza di operazioni sui colori
  64.         Cont(0,0)=-1
  65.         Cont(0,1)= 0
  66.         Cont(0,2)= 0
  67.         Cont(1,0)= 1
  68.         Cont(1,1)=-1
  69.         Cont(1,2)= 0
  70.         Cont(2,0)= 0
  71.         Cont(2,1)= 1
  72.         Cont(2,2)=-1
  73.         Cont(3,0)=-1
  74.         Cont(3,1)=-1
  75.         Cont(3,2)= 1
  76.         Cont(4,0)= 1
  77.         Cont(4,1)= 0
  78.         Cont(4,2)=-1
  79.         Cont(5,0)=-1
  80.         Cont(5,1)= 1
  81.         Cont(5,2)= 0
  82.         Cont(6,0)= 1
  83.         Cont(6,1)= 0
  84.         Cont(6,2)= 1
  85.  
  86.         RigheVisibili = 99
  87.         ColFinInc = 6
  88.         RigaFinInc = 6
  89.         RigaInInc = 8
  90.         ColInInc = 8
  91.         RigaFin = 200
  92.         ColIn = 100
  93.         RigaIn = 0
  94.         ColFin = 70
  95.        
  96.         ColFinInc2 = 16
  97.         RigaFinInc2 = 10
  98.         RigaInInc2 = 18
  99.         ColInInc2 = 14
  100.         RigaFin2 = 500
  101.         ColIn2 = 600
  102.         RigaIn2 = 0
  103.         ColFin2 = 70
  104.    
  105.         lblTitle.Initialize("lblTitle")
  106.         lblTitle.Color = Colors.Transparent
  107.         lblTitle.TextSize = 14
  108.         lblTitle.TextColor = Colors.White
  109.         lblTitle.Gravity = Gravity.CENTER_HORIZONTAL + Gravity.CENTER_VERTICAL
  110.         lblTitle.Text = ""
  111.         lblTitle.Visible = False
  112.         Activity.AddView(lblTitle, 0, 0, 100%x, 50dip)
  113.  
  114.         Timer1.Initialize("Timer1",40)
  115.         Timer1.Enabled = True
  116. End Sub
  117.  
  118. Sub Activity_Resume
  119.         RigaMax = ImageGraph.Height
  120.         ColMax = ImageGraph.Width
  121.         Drawing
  122. End Sub
  123.  
  124. Sub Activity_Pause (UserClosed As Boolean)
  125.  
  126. End Sub
  127.  
  128. Sub Drawing
  129.  
  130.         CanvasGraph.Initialize(ImageGraph)
  131.         CanvasGraph.DrawColor(Colors.Black)
  132.    
  133.         'memo2 traccia anche righe scure, le disegno prima
  134.         For riscrivi = RigaAttuale To RigaAttuale + RigheVisibili  ' scrivo tutte le righe memorizzate
  135.                 Posizione = riscrivi Mod RigheVisibili + 1
  136.                 CanvasGraph.DrawLine(memo2(1, Posizione), memo2(2, Posizione), memo2(3, Posizione), memo2(4, Posizione), memo2(5, Posizione) ,1.5dip)
  137.         Next
  138.        
  139.         'memo non traccia righe scure le disegno sopra alle righe di memo2
  140.         For riscrivi = RigaAttuale To RigaAttuale + RigheVisibili  ' scrivo tutte le righe memorizzate
  141.                 Posizione = riscrivi Mod RigheVisibili + 1
  142.                 CanvasGraph.DrawLine(memo(1, Posizione), memo(2, Posizione), memo(3, Posizione), memo(4, Posizione), memo(5, Posizione) ,1.5dip)
  143.         Next
  144.  
  145. End Sub
  146.  
  147. Private Sub Timer1_Tick
  148.  
  149.   ' preparo le coordinate delle linee
  150.  
  151.         RigaAttuale = RigaAttuale + 1
  152.         If RigaAttuale > RigheVisibili Then RigaAttuale = 1
  153.    
  154.         Posizione = RigaAttuale Mod RigheVisibili + 1 ' es: se le righe visibili sono 40, la posizione dell'indice della matrice
  155.         ' deve andare sempre da 1 a 40 ma la RigaAttuale cambia da 1 a 40 e quando è 1
  156.         ' tutto e ok, quando è 2 ai arriva a 41 che deve essere trasformato in 1 come un anello
  157.         ' infatti:
  158.         ' ..... omiss
  159.         ' 37 mod 41 = 37
  160.         ' 38 mod 41 = 38
  161.         ' 39 mod 41 = 39
  162.         ' 40 mod 41 = 40
  163.         ' 41 mod 41 = 0
  164.         ' 42 mod 41 = 1
  165.         ' 43 mod 41 = 2
  166.         ' 44 mod 41 = 3
  167.         ' ecc, ecc.
  168.         ' magia di mod che da il resto della divisione. Così si può incrementare
  169.         ' una variabile in modo lineare fino al massimo valore consentito ed avere
  170.         ' come risultato dei valori sempre compresi nel range voluto
  171.         ' con la programmazione occorrerebbero 1 variabile e 2 iff
  172.  
  173.         ' due sono i punti tra i quali si costruisce la riga che viaggiano rimbalzando sui bordi dello schermo  --------------
  174.         ' i bordi sotto e destra, sono contenuti nelle variabili RigaMax e ColMax, aggiornate da Form_Resize
  175.  
  176.         RigaFin = RigaFin + RigaFinInc ' incrementa la riga (Y)
  177.         ColFin = ColFin + ColFinInc ' incrementa la colonna (X)
  178.         If RigaFin < 0 Then RigaFinInc = Rnd(12,20) ' tocca a destra l'incremento random diventa positivo
  179.         If RigaFin > RigaMax Then RigaFinInc = Rnd(12,20) * -1 ' tocca a sinistra l'incremento random diventa negativo
  180.         If ColFin > ColMax Then ColFinInc = Rnd(12,20) * -1 ' tocca giù l'incremento random diventa negativo
  181.         If ColFin < 0 Then ColFinInc = Rnd(12,20) ' tocca su l'incremento random diventa positivo
  182.  
  183.         RigaIn = RigaIn + RigaInInc ' come sopra per l'altro punto
  184.         ColIn = ColIn + ColInInc
  185.         If RigaIn > RigaMax Then RigaInInc = Rnd(12,20) * -1
  186.         If RigaIn < 0 Then RigaInInc = Rnd(12,20)
  187.         If ColIn > ColMax Then ColInInc = Rnd(12,20) * -1
  188.         If ColIn < 0 Then ColInInc = Rnd(12,20)
  189.         '--------------------------------------------------------------------------------------------------------------------
  190.  
  191.         ' memorizzo le coordinate dei 2 punti tra i quali disegnerò la riga
  192.         memo(1, RigaAttuale) = ColIn
  193.         memo(2, RigaAttuale) = RigaIn
  194.         memo(3, RigaAttuale) = ColFin
  195.         memo(4, RigaAttuale) = RigaFin
  196.        
  197.        
  198.        
  199.         RigaFin2 = RigaFin2 + RigaFinInc2 ' incrementa la riga (Y)
  200.         ColFin2 = ColFin2 + ColFinInc2 ' incrementa la colonna (X)
  201.         If RigaFin2 < 0 Then RigaFinInc2 = Rnd(8,18) ' tocca a destra l'incremento random diventa positivo
  202.         If RigaFin2 > RigaMax Then RigaFinInc2 = Rnd(8,18) * -1 ' tocca a sinistra l'incremento random diventa negativo
  203.         If ColFin2 > ColMax Then ColFinInc2 = Rnd(8,18) * -1 ' tocca giù l'incremento random diventa negativo
  204.         If ColFin2 < 0 Then ColFinInc2 = Rnd(8,18) ' tocca su l'incremento random diventa positivo
  205.  
  206.         RigaIn2 = RigaIn2 + RigaInInc2 ' come sopra per l'altro punto
  207.         ColIn2 = ColIn2 + ColInInc2
  208.         If RigaIn2 > RigaMax Then RigaInInc2 = Rnd(8,18) * -1
  209.         If RigaIn2 < 0 Then RigaInInc2 = Rnd(8,18)
  210.         If ColIn2 > ColMax Then ColInInc2 = Rnd(8,18) * -1
  211.         If ColIn2 < 0 Then ColInInc2 = Rnd(8,18)
  212.         '--------------------------------------------------------------------------------------------------------------------
  213.  
  214.         ' memo2rizzo le coordinate dei 2 punti tra i quali disegnerò la riga
  215.         memo2(1, RigaAttuale) = ColIn2
  216.         memo2(2, RigaAttuale) = RigaIn2
  217.         memo2(3, RigaAttuale) = ColFin2
  218.         memo2(4, RigaAttuale) = RigaFin2
  219.        
  220.        
  221.        
  222.         ' i colori
  223.         If i > 254 Then ' ciclo da 255
  224.         i = 0 : n = n + 1
  225.         If n > 6 Then n = 0 ' ciclo da 6
  226.     End If
  227.     i = i + 1
  228.  
  229.     ' il colore da incrementare/decrementare è deciso in matrice, si parte con R G e B a 255
  230.     rosso = rosso + Cont(n, 0)
  231.     verde = verde + Cont(n, 1)
  232.     blu = blu + Cont(n, 2)
  233.     memo(5, RigaAttuale) = Colors.ARGB(255,rosso,verde,blu)
  234.     memo2(5, RigaAttuale) = Colors.ARGB(200,blu,rosso,verde)
  235.        
  236.     If lblTitle.Visible Then
  237.                 lblTitle.Text = Application.LabelName & Chr(10) &" R" & rosso & " G" & verde & " B" & blu & " - R" & blu & " G" & rosso & " B" & verde
  238.     End If
  239.        
  240.     Drawing
  241.        
  242. End Sub
  243.  
  244. Sub ImageGraph_click()
  245.         If lblTitle.Visible Then
  246.                 lblTitle.SetVisibleAnimated(500,False)
  247.         Else
  248.                 lblTitle.SetVisibleAnimated(500,True)
  249.         End If
  250. End Sub
  251.  
  252. Sub lblTitle_click
  253.         If Timer1.Enabled Then
  254.                 Timer1.enabled = False
  255.         Else
  256.                 Timer1.Enabled = True
  257.         End If
  258. End Sub


Ultima modifica effettuata da Carlo il 28/11/2020 alle 20:17


in programmazione tutto è permesso
PM Quote
Avatar
Basso Livello (Normal User)
Rookie


Messaggi: 22
Iscritto: 14/11/2020

Segnala al moderatore
Postato alle 12:24
Sabato, 28/11/2020
Ok grazie, la userò come spunto, comunque per ottenere il file .apk ho cambiato l'opzione da "debug" a "release" e in questo modo mi ha mantenuto l'app sul telefono e anche il file .apk sul PC, che ho provveduto a girare a qualche conoscente :k:


Se ci fosse la Silicon Valley in Italia, sarebbe capitanata da Barbara D'Urso.
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 838
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 16:41
Sabato, 28/11/2020
Testo quotato

Postato originariamente da Basso Livello:

Ok grazie, la userò come spunto, comunque per ottenere il file .apk ho cambiato l'opzione da "debug" a "release" e in questo modo mi ha mantenuto l'app sul telefono e anche il file .apk sul PC, che ho provveduto a girare a qualche conoscente :k:


Spero che non ci sei dovuto arrivare da solo bastava leggere il post che ti ho inviato  alle 15:54 di Domenica, 22/11/2020

Testo quotato

Postato originariamente da Carlo:
Se sono in Debug una volta terminato il Debug nel pc trovo l'apk in: ...\PrimaApp\Object\PrimaApp_RAPID_DEBUG.apk e non scompare dal PC, neanche se sconnetto il cellulare.
.....
.....
.....
Se sono in Release, una volta compilato, nel pc trovo l'apk in: ...\PrimaApp\Object\PrimaApp.apk     e      PrimaApp_RAPID_DEBUG.apk scompare dal PC



L'apk PrimaApp_RAPID_DEBUG.apk, che si genera quando sei in debug, funziona solo se B4A è attivo e in debug, visto che mentri debagghi B4A dialoga con il cellulare.

Ultima modifica effettuata da Carlo il 28/11/2020 alle 16:44


in programmazione tutto è permesso
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo