Creating an Android App from a Ring File

93 views
Skip to first unread message

Bert Mariani

unread,
Jun 12, 2026, 10:31:10 AM (13 days ago) Jun 12
to The Ring Programming Language
Hello Mahmoud

This Ring app uses only 1 file for everything to simplify it.
   Stock-Analysis-All.ring

I ran the Notepad -- Distribute for Mobile Device
The output is captured below

I would like to create an Android App .. apk 
that can be downloaded and installed on my cell phone

Can you explain/list steps that are needed to do it

Thanks
Bert MAriani



Snap2.png

Snap1.png
Stock-Analysis-All.ring

Mahmoud Fayed

unread,
Jun 12, 2026, 5:59:39 PM (12 days ago) Jun 12
to The Ring Programming Language
Hello Bert

>> "Can you explain/list steps that are needed to do it"

It's possible but there are challenges and you need to expect it so it can become fun/possible to pass it quickly

At first, there are an important concept to know, when we run Ring on the desktop platforms like Windows/Linux/macOS 
We have (Ring Compiler/VM) that starts at the beginning (i.e. Ring have control) and then compile/execute our application code (*.ring) 
Ring Compiler ---> Ring Byte Code (*.ringo) 
Ring VM ---> Execute Ring Byte Code

When our application uses libraries, these libraries are two types
(1) Libraries written in Ring like stdlibcore.ring
(2) Libraries that uses C/C++ extensions (DLL/So/Dylib)

For type (1) we don't need to worry, because Ring compiler will just compile them in our *.ringo file
For type (2) we need the runtime files (DLL/So/Dylib) because our application will load them at runtime

So, in this case we say (We are developing a Ring project, and we are extending it with Ring libraries, and Ring extensions, i.e. C/C++ code)

When we develop an Android application, the story is different, we still generate *.ringo file for the project, but we have a Qt C++ project that starts at the beginning 
It's about (Embedding Ring in C/C++ projects) - We get a Qt project contains (Ring Compiler/VM), and RingQt too
And this project contains a main.cpp file that load a Ring Object File (*.ringo) and execute it assuming that it's just Ring code + RingQt 

So, when we develop for Desktop, this part is hidden from us because we have ring.exe and ringw.exe which is a C program that runs our file
But when using RingQt for Android, we have the C++ project.

This means if you need to use more libraries (like LibCurl or CSVLib), You will need to add them to your C++ project, then link them to Ring VM (as we do with RingQt)

This is just one of the challenges or to be more accurate, on of the things that takes time.

Another issue/challenge, is the screen size and how your program adapt to different screen sizes, your RingQt program needs to use Qt Layouts to looks good (i.e. not be a pixel accurate)

Last thing is installing Qt 5.15 and installing Android SDK, etc. 
And it's the first step to start with.

So start from this step, learn how to build an apk for simple RingQt apps
Then study the Qt project generated by Ring2EXE (Through Ring Notepad distribute menu) 
And learn how the project is structured

Anything else you need, will be a C++ & Qt question, i.e. Ring role is done once you have the (*.ringo) file and the (Qt project)

Suggestion: Use classes provided by Qt instead of (LibCurl, JSONLib, CSVLib)
This will be much easier if you want to develop Android apps quickly using RingQt

Greetings,
Mahmoud

Momen Gamal

unread,
Jun 16, 2026, 8:33:49 AM (9 days ago) Jun 16
to The Ring Programming Language

Hello Bert and Mahmoud,

you can transform the idea from mobile application to a web assembly, in which case it will work on any system have browser
and you won't have to worry about operating system type

Regards,
Momen

Mahmoud Fayed

unread,
Jun 16, 2026, 9:24:23 AM (9 days ago) Jun 16
to The Ring Programming Language
Hello Momen

>> "you can transform the idea from mobile application to a web assembly, in which case it will work on any system have browser"

Yes, WebAssembly is wonderful :D

Just a few comments:

(1) If we have a pure RingQt project, then in most cases the effort required to build an app for WebAssembly or Mobile is the same (Assuming the SDKs are installed)

(2) Using WebAssembly through a web browser inside a Desktop environment could means (Large Screen Resolution) and fast typing through the Keyboard, which is awesome and the limitations in this case will be 

2.1 No access to local file system without permission for download/upload
2.2 Loading Time (A few seconds until the application starts, maybe three seconds)
2.3 Large download size for wasm file

If we use RingQt webassembly application through a web browser inside a Mobile environment, there are issues like

2.4 Using the Android system keyboard and typing (which requires specific handling were the app should use its custom keyboard)
2.5 Small screen resolution (In this case using Qt Layouts in Qt Widgets app is recommended. Or use QML)

Greetings,
Mahmoud

Bert Mariani

unread,
Jun 16, 2026, 5:14:02 PM (8 days ago) Jun 16
to The Ring Programming Language
Hello Momen,  Mahmoud

Thanks for the suggestions.
I initially looked at Android but it is complicated to port.
Same for Web Assembly, will require re-write to match.
Biggest problem encountered is getting quotes from Yahoo.
Mainly because they don't use  Curl

ERROR: No data. CORS blocked or no internet. ---- Use CURL to fetch data from Yahoo Finance

Regards
Bert Mariani

Mahmoud Fayed

unread,
Jun 16, 2026, 8:29:06 PM (8 days ago) Jun 16
to The Ring Programming Language
Hello Bert



It's tested on Desktop and Android too

Greetings,
Mahmoud

Reply all
Reply to author
Forward
Message has been deleted
0 new messages