Spanish B4X Duda

Jorgelcr

Active Member
Licensed User
Hola,
Estoy comenzando una app que va a tener version Android e IOS. Estaba empezando a desarrollar la app para Android con B4Xpages ya que por lo que entiendo al crear el proyecto te crea también la versión para IOS. Pero, ¿que ocurre si utilizas librerias u objetos que existen en un b4A pero no existen en b4i?
Tiene alguna solución o es mejor crear la versión para IOS desde un proyecto independiente?

Alguna idea?
Gracias.
 

José J. Aguilar

Expert
Licensed User
Hola Jorge:

Aún no me he puesto con B4XPages, ni he programado nunca para iOS, pero hasta dónde sé: (y que por favor alguien me corrija en las cosillas que no sean exactas).
por lo que entiendo al crear el proyecto te crea también la versión para IOS
No exactamente, se trata de que cuando creas un proyecto con B4XPages, cada B4XPage es una clase que puedes compartir entre B4A, B4J y B4i, pero tienes que ir añadiendo las clases en cada proyecto e ir copiando los Layouts que crees en una plataforma, en los otros.

Para ver los objetos a usar, echa un ojo a este booklet sobre proyectos multiplataforma. Lo mejor es usar XUI views y objetos B4X, que sean compatibles entre las 3 plataformas.

En cuanto a las librerías, lo mismo, tendás que intentar en la medida de lo posible usar B4XLibs que sean compatibles con todos los proyectos. Si no, pues tendrás que hacer algunas diferencias entre el proyecto en B4A y B4i. Y puedes usar en el código sentencias para que sólo se ejecuten en una determinada plataforma.
B4X:
#If B4J
xui.SetDataFolder(
"B4XPagesSQLiteLight2"
)
#End If

Supongo que el proyecto guía que mejor te puede servir y que estará hecho más acorde con todas estas cosas es el proyecto que está haciendo Erel y que imagino ya habrás visto. Será interesante echarle un vistazo al código a ver cómo lo hace:


suerte y saludos,
 

Jorgelcr

Active Member
Licensed User
hola,
Gracias por contestar tan rápido.
Igual me he expresado mal con lo de que crea el proyecto para IOS. Lo que quería decir es que el código generado es "común" para los dos proyectos.
Mi duda viene que si se utilizan objetos o librerias en B4A que no existen en B4i no es ninguna ventaja hacerlo con este sistema ya que la versión de B4i no será compatible.

Por ejemplo yo estaba utilizando en B4A AHViewPager y no existe para B4I entonces creo que tengo 2 opciones: modificar la app B4A para utilizar un objeto compatible en ambas o crear la app B4i independiente al proyecto de B4X. Y si esto puede pasar con otras librerias que utilizo como SQLCipher no encuentro la ventaja.

Si estoy equivocado os agradecería vuestra informacion.
 

José J. Aguilar

Expert
Licensed User
Hola Jorge:

modificar la app B4A para utilizar un objeto compatible en ambas
Creo que esto es lo más lógico.
Verás, hay elementos que existen en Android y no existen en iOS, por ejemplo, si te fijas por ejemplo en AHNavigationDrawer, dice: "This is a wrapper library for the native NavigationDrawer introduced by Google at Google I/O 2013". Como ves, son elementos que Google ha creado especificamente para Android, por tanto, no tienen un elemento equivalente en iOS. AHViewPager es el mismo caso, fue presentado por google. Es por eso que, para proyectos multiplataforma, hay que evitar elementos específicos de una de ellas.

Sobre SQLCipher, verás en este hilo que al parecer no es gratuita para iOS, o que no hay una "community edition" para iOS.

La ventaja es poder compartir la mayor parte del código, pero obviamente, cuantos más elementos "genéricos", no desarrollados específicamente para una plataforma se usen, mejor.
 

inakigarm

Well-Known Member
Licensed User
hola,
Gracias por contestar tan rápido.
Igual me he expresado mal con lo de que crea el proyecto para IOS. Lo que quería decir es que el código generado es "común" para los dos proyectos.
Mi duda viene que si se utilizan objetos o librerias en B4A que no existen en B4i no es ninguna ventaja hacerlo con este sistema ya que la versión de B4i no será compatible.

Por ejemplo yo estaba utilizando en B4A AHViewPager y no existe para B4I entonces creo que tengo 2 opciones: modificar la app B4A para utilizar un objeto compatible en ambas o crear la app B4i independiente al proyecto de B4X. Y si esto puede pasar con otras librerias que utilizo como SQLCipher no encuentro la ventaja.

Si estoy equivocado os agradecería vuestra informacion.
Si utilizas la B4Xlib B4XDrawer no tendrás ese problema, ya que es común para B4J,B4A y B4i https://www.b4x.com/android/forum/threads/b4x-b4xpages-b4xdrawer.120246/
 

oparra

Well-Known Member
Licensed User
tips:

Buscar ejemplos:

B4X (cross platform) = B4A, B4I y B4J

Componentes (CustomViews/clasess) que puedes utilizar en B4Xpages:







Busqueda ([B4X] [XUI]):


etc, etc, etc,

IMPORTANTE:
Todos tienen el código fuente, que puedes mirar.

Si es B4xLib lo descomprimes. (son archivos ZIP)

Saludos,
 
Last edited:

oparra

Well-Known Member
Licensed User
tips:

[B4X] Sharing layouts between platforms

 
Top