Creating a B4X Portable SDK (WIP)

mrpastewart

Member
Licensed User
Hello

First off I would like to thank Erel for all his efforts in bringing this wonderful platform to us all.

I have been working on a project I call Platform.TMS (Transportation Management System). Inside this project I have been experimenting with an automated method of pulling together a Portable B4X influenced SDK. I am sharing this here because even though I was doing this for my own efforts and as I grow a team for their efforts as well. I am realizing that others may also benefit from my effort.

Here are some of the automated steps I am using. (Right now it is presented as a Batch Option Based Menu/Command Line tool)

  1. Automated Download, Extraction and Placement of B4X applications (i.e b4j, b4a, etc)
  2. Automated Download, Extraction and Placement of JDK
  3. Automated Download, Extraction and Placement of Android SDK
  4. Automated Download, Extraction and Placement of Arduino IDE
  5. Automated Download, Extraction and Placement of VSCode Editor
  6. Takes all Steps to make development stack portable between computers
  7. Adds B4X Documents to SDK
  8. Adds Additional Learning Resources to SDK
  9. Adds Teaching Curriculum to SDK
  10. Adds Videos to SDK
  11. Adds Examples to SDK
  12. Has the ability to fetch additional libraries and add them to the SDK (can be customized)
  13. Has the ability to add other portable developer tools that may be used in any full stack environment

Some other features that will be added include

  1. Support for docker containers
  2. Support for WSL
  3. Support for Micro Services Architecture
  4. Enterprise Design Patterns ( as much as we can get in b4x)
  5. Enterprise templates
  6. Reference Architecture
Current File Structure

  • ++b4x.sdk
  • ----bin 'this is where the b4x applications live (including any apps like editors ie vscode, atom)
  • ------b4a
  • ------b4j
  • ------etc
  • ----config 'this is where any configuration files that need to persist during upgrades are stored
  • ----contrib 'this is where 3rd party contributions to the sdk are stored
  • ----docs 'this is where the offline versions of the b4x documents are stored
  • ----examples 'this is where example projects are stored
  • ----libraries 'this is where additional libraries are stored
  • ------b4a
  • ------b4j
  • ------etc
  • ----resources 'this is where extra resources ie learning, teaching, patterns are stored
  • ----scripts 'this is where shell scripts are store in a modular fashion these scripts help build the sdk
  • ----sdk 'this is where the jdk, android and Arduino sdk's and any other sdk that needs to be in the stack go.
  • ----source 'this is where the source to any of your projects go that way your environment is 100% portable and includes your projects
  • ----spec 'this is where you can define any project specifications
  • ----spike 'this is a non-committed directory that allows each developer to include resources that would not be committed to source control
  • ----templates 'this is where project templates are located
  • ----tools 'this is where tools that are used to build the sdk or your projects are store (7zip, extract tools, curl, wget, make, etc)


The Ideal around this is to leverage the great work of Erel and provide a community maintained method of pulling together a customizable SDK that is portable and allows an easier way to leverage the vast amount of information, samples, libraries and resources available that can be assembled to include any updates to the platform allowing developers to have a portable development environment that includes as much or as little as each user wants and can also provide portable stacks to other tools the developer might use like .NET core, Unix tools, editors, servers. There have also been attempts to run this under Linux using automated shell scripts so there is a possibility that this can be duplicated on Linux and Mac using Wine. However I have found that sometimes just sharing the Build Output location via shared directories with Linux via a Virtual Machine/Samba or WSL via native wsl/windows file manager access and MacOS via bonjour network services can be enough to test B4J deployments all other deployments must use the preferred method to test those applications (i.e. android, iOS, Arduino)

So what do you think? Does anyone have any interest in this? Any Ideals, Input?

I have been cleaning up my playground and currently pushing the results to GitHub source control. There is not a usable download as of yet but I anticipate having one within the next few days or so.

If anyone wishes to help build and maintain this I can grant you access.
I am currently rewriting the build scripts and defining the SDK structure.
The Ideal is that this project can make a custom portable SDK available simply by cloning the repo or downloading a zip file that can be extracted onto the computer and with some editing of a few script files to add your B4I URL and pick what additional Libraries you want then run the build script and it will configure your SDK in place and make it portable you can then copy it to a flash drive or other computers on your network and keep it up to date just make sure you comply with Erel's Licensing policy for Multiple Developers when including B4I in your SDK and sharing it with your Team.

You can track my progress here: https://github.com/jitblu/platform.sdk
 
Last edited:
Cookies are required to use this site. You must accept them to continue using the site. Learn more…