German [B4X] Anfängerfrage zu Modulen und Libraries

CryoGenID

Active Member
Licensed User
Longtime User
Hallo liebe Gemeinde,

nach etwas längerer "Abstinenz" von B4i wollte ich jetzt mal wieder was machen und habe gesehen dass ja jetzt B4X gibt, sodass ich im Idealfall nur 1x die ganzen Sachen programmieren muss und es auf iOS und Android (und PC/Mac via Java) läuft.
Das ist ja wirklich schön, schauen wir mal wie gut das wirklich geht ;-)

Und nachdem ich das erste Beispiel im Handbuch gemacht hatte, habe ich auch schon zwei Fragen, und ich hoffe ihr könnt mir da weiterhelfen.

Im Tutorial erzeugt man ja eine "B4XMainPage" und dann noch eine "B4XPage1" (als Modul).
Das hatte ich alles in B4J gemacht und dort sieht man auch was wenn man es laufen lässt.
Dann wollte ich mir das Ganze auf dem iPhone ansehen, habe dazu also dann B4i aufgemacht und dort das im Unterverzeichnis "B4i" automatisch erstellte Projekt geöffnet.

Und nun zu den Fragen:
  1. Als ich das Projekt in B4i geöffnet habe, wurde nur "B4XMainPage" geöffnet, "B4XPage1" ist ihm komplett umbekannt... Ich hätte erwartet, dass auch Zusatzmodule automatisch in den anderen Umgebungen (B4A, B4i) im Projekt mit geöffnet werden, sonst muss ich ja bei jedem neuen Modul das doch wieder per Hand pro Zielsystem dazunehmen mit "Add existing module"...
  2. Als ich das Projekt in B4i geöffnet habe, wurden nicht die X-fähigen Libraries, die ich im B4J/B4X-Projekt ausgewählt hatte (in diesem Fall XUI Views) ausgewählt. D.h. auch hier die Frage: Muss ich immer, auch wenn ich eine X-fähige Library auswähle, dass dann bei jedem Zielsystem nochmal per Hand hinzufügen?

Ich hatte gehofft, dass diese Aktionen alle automatisch gemacht würden...
Welche Sachen muss man denn sonst noch per Hand pro Zielsystem (B4i, B4A) immer nachziehen wenn man z.B. in B4J was gemacht hat?

Danke Euch :)

Viele Grüße

Chris
 

Alexander Stolte

Expert
Licensed User
Longtime User
  1. Als ich das Projekt in B4i geöffnet habe, wurden nicht die X-fähigen Libraries, die ich im B4J/B4X-Projekt ausgewählt hatte (in diesem Fall XUI Views) ausgewählt. D.h. auch hier die Frage: Muss ich immer, auch wenn ich eine X-fähige Library auswähle, dass dann bei jedem Zielsystem nochmal per Hand hinzufügen?
Ja das heißt es. Ich erstelle mal einen "wish" diesbezüglich, denn Theoretisch ist es möglich eine B4X Bibliothek zu erkennen, da im Manifest ja steht ob diese auch in B4A,B4I und B4J funktioniert.

Welche Sachen muss man denn sonst noch per Hand pro Zielsystem (B4i, B4A) immer nachziehen wenn man z.B. in B4J was gemacht hat?
Wenn du im Designer dinge änderst, musst du auf den anderen 2 Zielsystemen das layout anpassen, es ist zwar Nervig aber leider immer noch nötig, aber du kannst mittlerweile einfach alles Selektieren -> Kopieren und einfach in B4I,B4J,B4A einfügen.
 

Alexander Stolte

Expert
Licensed User
Longtime User
Als ich das Projekt in B4i geöffnet habe, wurde nur "B4XMainPage" geöffnet, "B4XPage1" ist ihm komplett umbekannt... Ich hätte erwartet, dass auch Zusatzmodule automatisch in den anderen Umgebungen (B4A, B4i) im Projekt mit geöffnet werden, sonst muss ich ja bei jedem neuen Modul das doch wieder per Hand pro Zielsystem dazunehmen mit "Add existing module"...
und ja auch das ist nötig, habs gerade nochmal getestet
 

CryoGenID

Active Member
Licensed User
Longtime User
Danke Alexander für die schnelle Rückmeldung!
Ok dann lag ich mit meinen Vermutungen schon gar nicht so falsch ;-)

Hm... Das macht das plattforumübergreifende Entwickeln dann schon wieder etwas komplexer...

Nochmals Danke für Deine Infos :)

Viele Grüße

Chris
 

CryoGenID

Active Member
Licensed User
Longtime User
Noch eine Nachfrage:
Wenn ich jetzt Netzwerk-Zugriffe machen möchte (eine REST-API ansprechen möchte), dann brauche ich ja dazu eine Netzwork-Library.
Nachdem es ja keine X-Network-Lib gibt, muss ich also erst mal in B4j ein jNetwork hinzufügen.
Dann packe ich den entsprechenden Code rein...
So und jetzt zu B4i:
Da muss ich ja die korrespondierende "iNetwork"-Lib reinpacken, der Code den ich noch bei mir in den Source-Code packen muss ist ja aber nicht 1:1 wie der für Java (B4J)... Wie ist denn da das korrekte Vorgehen? Dann muss ich ja doch wieder pro Plattform komplett eigenen Source-Code haben oder?

Sorry falls das ne dumme Frage ist, mir erschließt sich gerade bei den ganzen "non" X-Libs noch nicht wie ich das dann mit einem gemeinsamen Source-Code für die ganzen Plattformen machen soll bzw. wie das gedacht ist ;-)

Viele Grüße

Chris
 

CryoGenID

Active Member
Licensed User
Longtime User
Danke Dir, ja das habe ich auch gerade gefunden ;-)
Aber die Grundfrage bleibt ja bei anderen Bibliotheken: Wie ist denn das Vorgehen "korrekt"?
Da muss ich ja dann ggf. auf plattformspezifische Bibliotheken ausweichen...

Viele Grüße

Chris
 

Alexander Stolte

Expert
Licensed User
Longtime User
Da muss ich ja dann ggf. auf plattformspezifische Bibliotheken ausweichen...
Ja, deshalb kannst du im Code auch einfach #if b4a oder #b4i schreiben und dieser code wird dann nur mit der jeweiligen IDE kompiliert, es gibt nunmal Differenzen zwischen den Plattformen. Es gibt aber auch viele Bibliotheken die eine Schnittstelle bieten, damit man halt nur 1 code base hat. Bei views schaue dir meine mal an, ich hab viele entwickelt um noch schneller platformübergreifend zu entwickeln.
 

CryoGenID

Active Member
Licensed User
Longtime User
Super, vielen Dank nochmal für Deine schnelle Rückmeldung!

Da werde ich mich mal reinbohren und (bestimmt) nochmal mit weiteren Fragen melden ;-)

Viele Grüße

Chris
 
Top