My new app AfsaneDB (Beta) is now in PlayStore!
Those who love reading classic literature can now enjoy literary masterpieces in this beautifully designed app.
Tuesday, 6 February 2024
Sleepless night
Wednesday, 26 April 2023
Building an App Builder - Strategies, Limitations and Available Tools
As a budding app developer, creating an app builder for mobile devices is an exciting idea which I'm giving a lot of thinking since early 2019. However, there are several strategies, and limitations that need to be considered before embarking on this journey. In this blog post, I will explore these aspects in detail.
This would be a brainstorming session for me, where I'd just put all that I've found while researching this subject.
Techniques
Scratchware
Scratchware was an interesting project but is now deprecated. Its technique was unique, where the app was built on the device itself, without any internet connection. However, other app builders mostly build the app on the server. Therefore, it is not necessary that the build part should be on the server.
Scratchware was based on MIT App Inventor as per their website before the deprecation. Showing ads before each build, and giving options to arrange items (buttons, cards, inputs, labels etc.) in rows and columns were really awesome features. For logic, it used Scratch Programming blocks.
APK Editor
Another app builder that is worth mentioning is APK Editor, which uses ARSCLib. Another similar one is APK Explorer Editor, which offers a full version via Fdroid.Other repos for Apk Editor might be using apktool.jar. Apktool is also being used in many Android apps, like revanced. How are they able to run.jar tools is a mystery for me yet, as executing jar requires JRE while Android runs on Dalvik Virtual Machine.
A workaround (or not?) is to use jar library via custom Cordova plugin. Plugin docs suggest it can be done easily. See this suggestion from a stackoverflow answer:
Add lib-file element to your plugin.xml:
<platform name="android">
<lib-file src="AztecReader.jar" />
</platform>
Anyway, ApkEditor recompiles the app on the device itself, without any internet connection. This approach proves that building an app builder on a mobile device is possible without the need for a server.
Cordova-like Environment
Creating a Cordova-like environment on a mobile device seems difficult. Even though initializing an empty Cordova app within the user's device is possible using Node Mobile or AndroidJs, compiling the APK will be tricky as it would need gradle, java jdk, android build tools, apksigner, etc. The end-users may not have these tools installed on their devices, making it difficult for them to compile the app.
Termux
Java runtime, etc., would be possible using Termux in android, but that would require end-users to have Termux installed, which may be a challenge.
Using a Sample App as a Base
Another approach could be to use a sample app as a base and replace its content at runtime using a user-defined config file. This approach is similar to the Cordova-like environment but is more simplified and straightforward.
Meta-data
One of the most popular strategies for creating an app builder is to use meta-data. In this strategy, the "app" you define is meta-data in a higher-level definition that is interpreted in a host wrapper app. This approach makes it easier to create apps as the app builder is more of a code generator.
Desktop - HTML to APK
A tool I found, and tested but never used in production or even to build anything remotely of any use for myself is Website to APK which is a desktop-based tool. The interface looks like it's built using the C# Windows Form Application. The options are really great, and it's user-friendly.
Softonic's dev bio hyperlink suggests Pravesh Agrawal as the developer. Web, Github, Twitter.
It seems to be using all the standard tools in the background (probably running a bash script for build instructions). Options to select a URL or a local folder are awesome, along with an icon, splash screen, and setting up Admob ids in presumably pre-configured ad spaces.
This perfectly depicts the "meta-data" type or a "base app" already set, which is modified based on the user's input.
Available Tools
There are several tools available for creating an app builder on mobile devices. Some of these tools include:
AppSheet: AppSheet uses a meta-data strategy to create an app builder. It interprets the higher-level definition in a host wrapper app, making it easier to create apps.
A sample response to the question "Building an App Builder - how do they do it?" on stackoverflow as a reference:
I work at AppSheet. There are two basic approaches an app builder can follow: (a) act as a code generator, or (b) implement an intepreter. In the former case, it spits out code that gets compiled into an executable package that can be installed and run on a device. In the latter case, the "app" you define is meta-data in a higher-level definition that is interpreted in a host wrapper app. Each has its strengths and weaknesses. AppSheet uses the latter approach. — Praveen Seshadri
Thunkable: Thunkable uses a simple drag-drop interface and loads of pre-defined templates and customizations. As far as I remember, It also uses Sratch for programming logic similar to Scratchware.
Andromo: Andromo is an online app builder that lets you create Android apps without any coding. It has a user-friendly interface that makes it easy to build apps.
BuildFire: BuildFire is another online app builder that offers a drag-and-drop interface for creating Android apps.
Conclusion
I'm not really sure which strategy would work the best, but a couple of them looks promising to me. For Android on Android, editing the APK and recompiling might be the easiest one. Although I've to dig deeper to understand how APK editor and the likes do it. It's not just unzip and re-zip of the package, which often results in app corruption.
A desktop app might be simple, but dependencies should be bundled within the executable in that case, otherwise, it'd again feel like something built for advanced users.
References
Scratchware Pro continued on GitHub
How do I build a Cordova 8.x cordova.jar to include in existing Android app?
Integrating Hybrid App (Cordova) with Native App (Java android app) — Part 1 by pankajbhandari08
Decompile and Modify APKs on the go with APKTool for Android [XDA Spotlight] introduces apktool by Andro Black
Android Studio: Add jar as library? Directly or using mavenCentral as per one of the comments
Including .jar file into cordova plugin with suggestion to add lib-file in plugin
Friday, 19 November 2021
Hirday Men Ik Jot Jali Hai - Ghazal by Shakeeb Ahmad
Read in Urdu (Perso-Arabic) script here.
English
Apna man dukhiyaara kaisa, apana haal to aisa hai
Hirday mein ik jot jali hai jisne tan-man phoonka hai
Prem nagar mein ik din mein aa nikala tha bhoola bhatka
Khud ko bhool chuka hoon tab se, jag bhi saara bhoola hai
Kitnee kaThin hai prem pareeksha, prem hua to kis se hua
Apne aap ko sabse chhupa ke jisne chain ko loota hai
Is sansaar mein sab hai tumhaara laikin preet ke taapu par
Tum ke viyog mein jo dukh bhoge us ka maza to mera hai
Sufi mulla sant pujaari vird vazeefe sab kuchh hech
Preetam ke jalve ke aage yaaro sab kuchh pheeka hai
Main bhee maala pher raha tha us ik naam kee barson se
Ashkon kee maala pe japa tab naam vo dil mein utra hai
Man to bahut hai naat likhoonga pyaar se us ko gaaunga
Lekin tumne mujh kambakht ko is qaabil kab samjha hai
Poochh raha hoon basti-basti aankhon mein ummeed lie
Ek Shakeeb Ahmad hota tha tumne us ko dekha hai
Hindi
เค เคชเคจा เคฎเคจ เคฆुเคिเคฏाเคฐा เคैเคธा, เค เคชเคจा เคนाเคฒ เคคो เคเคธा เคนै
เคนृเคฆเคฏ เคฎें เคเค เคोเคค เคเคฒी เคนै เคिเคธเคจे เคคเคจ-เคฎเคจ เคซूँเคा เคนै
เคช्เคฐेเคฎ เคจเคเคฐ เคฎें เคเค เคฆिเคจ เคฎें เค เคจिเคเคฒा เคฅा เคญूเคฒा เคญเคเคा
เค़ुเคฆ เคो เคญूเคฒ เคुเคा เคนूँ เคคเคฌ เคธे, เคเค เคญी เคธाเคฐा เคญूเคฒा เคนै
เคिเคคเคจी เคเค िเคจ เคนै เคช्เคฐेเคฎ เคชเคฐीเค्เคทा, เคช्เคฐेเคฎ เคนुเค เคคो เคिเคธ เคธे เคนुเค
เค เคชเคจे เคเคชเคो เคธเคฌเคธे เคुเคชा เคे เคिเคธเคจे เคैเคจ เคो เคฒूเคा เคนै
เคเคธ เคธंเคธाเคฐ เคฎें เคธเคฌ เคนै เคคुเคฎ्เคนाเคฐा เคฒैเคिเคจ เคช्เคฐीเคค เคे เคाเคชू เคชเคฐ
เคคुเคฎ เคे เคตिเคฏोเค เคฎें เคो เคฆुเค เคญोเคे เคเคธ เคा เคฎเค़ा เคคो เคฎेเคฐा เคนै
เคธूเฅी เคฎुเคฒ्เคฒा เคธंเคค เคชुเคाเคฐी เคตिเคฐ्เคฆ เคตเฅीเฅे เคธเคฌ เคुเค เคนेเค
เคช्เคฐीเคคเคฎ เคे เคเคฒ्เคตे เคे เคเคे เคฏाเคฐो เคธเคฌ เคुเค เคซीเคा เคนै
เคฎैं เคญी เคฎाเคฒा เคซेเคฐ เคฐเคนा เคฅा เคเคธ เคเค เคจाเคฎ เคी เคฌเคฐเคธों เคธे
เค เคถ्เคों เคी เคฎाเคฒा เคชे เคเคชा เคคเคฌ เคจाเคฎ เคตो เคฆिเคฒ เคฎें เคเคคเคฐा เคนै
เคฎเคจ เคคो เคฌเคนुเคค เคนै เคจाเคค เคฒिเคूँเคा เคช्เคฏाเคฐ เคธे เคเคธ เคो เคाเคँเคा
เคฒेเคिเคจ เคคुเคฎเคจे เคฎुเค เคเคฎ्เคฌเค़्เคค เคो เคเคธ เฅाเคฌिเคฒ เคเคฌ เคธเคฎเคा เคนै
เคชूเค เคฐเคนा เคนूँ เคฌเคธ्เคคी-เคฌเคธ्เคคी เคँเคों เคฎें เคเคฎ्เคฎीเคฆ เคฒिเค
เคเค เคถเคीเคฌ เค เคนเคฎเคฆ เคนोเคคा เคฅा เคคुเคฎเคจे เคเคธ เคो เคฆेเคा เคนै
Meanings
Friday, 17 September 2021
Teri Muhabbat Ka Jaam Pi Kar - Ghazal by Shakeeb Ahmad
To read in Urdu (Perso-Arabic script), click here.
GHAZAL
English
Hindi
Meanings
Friday, 28 May 2021
People I listen to...
Over the years, many have asked me to suggest what to read, watch and listen to which will benefit them. For the books, I've started writing reviews about the ones which I like.
Here, I've listed all the channels I've been listening to. The list is not complete and subject to updates. Also, names are not in any particular order.
— Shakeeb
Note: Obviously, I don't agree with everything a speaker promotes.
Philosophy, Psychology & Logic
Prof. Jordan Peterson
Steven Crowder
Vsauce
Adam Ruins Everything
Ben Shapiro
Ahmad Javaid
Entertainment
Jim Browning
Nigahiga
UFC
Mojahed Fudailat (UFC Animations)
Bad Lip Reading
Patriot Act (Hassan Minhaj)
Obayd Fox (Ar+En Vlogs)
Karan Singh Magic
Shaheer Khan
Dawood Savage
DIY Perks
IT & Programming
Fireship.io
Two Minute Papers
Code Bullet
DevEd
WebdevSimplified
Ben Awad
The Net Ninja
Srinivas Tamada
Graphic Designing
Mohamed Achraf
Logos by Nick
Politics
Dhruv Rathi
Maulana Sajjad Noumani
ScoopWhoop Unscripted
Shahbaz Ansar (ThePrint)
The Deshbhakt
Dawah & Comparative Religion
Sheikh Ahmad Deedat
Dr. Zakir Naik
Mohammad Hijab (and group)
Mufti Yasir Nadeem Al Wajidi
Maulana Kaleem Siddiqi
The Muslim Skeptic
Islam, Quran & Jurisprudence
Peer Zulfiqar Naqshbandi
Nouman Ali Khan
Mufti Tariq Masood
Maulana Manzoor Mengal (Tafseer Classes)
Maulana Makki Al-Hijazi
Dr. Israr Ahmad
Youth Club
Hanafi Fiqh
Salahuddin Saifi Naqshbandi
Mufti Saeed Khan
Scholarly Subtitles (Arabic content translated)
Tuesday, 11 May 2021
Hamare Paas Yahi Ik Sawaal Rakkha Hai - Ghazal by Shakeeb Ahmad
To read in Urdu (Perso-Arabic script), click here.
GHAZAL
English
Ise to ham ne bataur-e-misaal rakkha hai
Nigaah-e-tishna faqat poochhti hai aapse "kab?"
Hamaare paas yahee ik savaal rakkha hai
Kamaal hai, ki bas airaaz-e-lan-taraani se
Hamaare jaise divaanon ko Taal rakkha hai
Niqaab-e-rukh ko ulatiye, ke is ki shokhi ne
Hamen ajeeb si uljhan mein daal rakkha hai
Kabhi to khatm bhi hoga ye imtihaan-e-Shakeeb
Isi umeed ne dil ko sanbhaal rakkha hai
Hindi
เคเคธे เคคो เคนเคฎเคจे เคฌเคคौเคฐ-เค-เคฎिเคธाเคฒ เคฐเค्เคा เคนै
เคจिเคाเคน्-เค-เคคिเคถ्เคจा เคซ़เค़เคค เคชूเคเคคी เคนै เคเคชเคธे "เคเคฌ?"
เคนเคฎाเคฐे เคชाเคธ เคฏเคนी เคเค เคธเคตाเคฒ เคฐเค्เคा เคนै
เคเคฎाเคฒ เคนै, เคि เคฌเคธ เคเคฐाเฅ-เค-เคฒเคจ-เคคเคฐाเคจी เคธे
เคนเคฎाเคฐे เคैเคธे เคฆिเคตाเคจों เคो เคाเคฒ เคฐเค्เคा เคนै
เคจिเฅाเคฌ-เค-เคฐुเค़ เคो เคเคฒเคिเคฏे, เคि เคเคธ เคी เคถोเค़ी เคจे
เคนเคฎें เค เคीเคฌ เคธी เคเคฒเคเคจ เคฎें เคกाเคฒ เคฐเค्เคा เคนै
เคเคญी เคคो เค़เคค्เคฎ เคญी เคนोเคा เคฏे เคเคฎ्เคคिเคนाเคจ-เค-เคถเคीเคฌ
เคเคธी เคเคฎीเคฆ เคจे เคฆिเคฒ เคो เคธँเคญाเคฒ เคฐเค्เคा เคนै
Meanings
Friday, 12 March 2021
App Release: OneSignal Push Manager - Secure & Free (Android+Web)
OneSignal Push Manager - Secure & Free |
This app helps you manage your app credentials and provides intuitive UI for sending the notifications to your users.
Android: https://play.google.com/store/apps/details?id=com.sarbakaf.onesignalpush
Android app to manage & send push notifications via OneSignal |
Features
- Manage all your apps
- Stores all your credentials in your phone
- Offline storage, open-source and hence trustworthy
- CRUD for app info with lovely UI
- Simple notepad to save other necessary stuff
- Send notifications to any of your apps, in any segment
- From simple heading + message notifs to fancy ones, with icon, banner and extra data to pass-in the app (useful for deeplinks)
User Guide
- Get your "App ID" and "REST API Key" from OneSignal Dashboard.
- It is recommended by OneSignal NOT to save API key anywhere, therefore our app doesn't save it by default. It's optional.
- In the "APPS" section of our app (Push Manager), make a list of app names and IDs.
- In the "SEND NEW" section, fill the details and send in a segment of your choice.
- Button 1 can be used to send in a segment named 'Test', which you can configure from OneSignal Dashboard for your test devices.
- Button 2 can be used to send in a segment named 'All'.
- Button 3 can be used to send in any custom segment.
- Notepad can be used to jot down & save other necessary stuff.
- Profit?
Questions, suggessions and contributions are welcome.
The app is also available as a webapp for testing purposes here: https://onesignal.netlify.app/
Shakeeb Ahmad