User Tools

Site Tools


Privacy Policy


Version 2.50 is out since Jan 1st 2022

Frequently Asked Questions


Note for contributors

If you wish to create a new page in the DroidScript wiki, please click on the most appropriate namespace above and follow the notes for contributors there.

Because of spam, it has been necessary to add a CAPTCHA to the registration form and the save option for editing pages. You will not need to prove you are human if you are logged in, so please register.

Please feel free to improve any existing page, as well as adding new pages to increase the sum of public knowledge about DroidScript.

Formatting Syntax


DroidScript 2.50

These are the most notable changes:

1. Premium users can now create a new type of app called 'Node Native' which allows you to combine the power of NodeJS directly into your apps! Under the hood, this means the main scripting engine will be NodeJS and not the Android WebView. However you can still use the native UI controls you that you would normally use, including the MUI.* controls.

This makes building apps that use a lot of Node functionality much easier as you don't need to send and receive lots of messages to a separate background node thread as you would have to do when using app.CreateNode().

You can do most things in Node Native apps that you would normally do, however you must use the require() function instead of the app.Script() method to include other scripts from your project. Scripts that are called in via require are scoped slightly differently, which means functions and objects declared like the following will not be seen by your main app -

function MyTest() { return “Hello” }

If you want a function to be global you need declare it like this -

MyTest = function() { return “Hello” }

Similarly with variables, don't use the var keyword if you want them to be visible globally.

Note: This is actually a safer way of working as it prevents name clashes and libraries overwriting each other's functions and variables accidentally. Ideally you should put your code into objects or classes for better protection and avoid using many globals.

2. The Wifi IDE now has much better code-completion for the MUI.* controls and you can jump right into the help docs from the code-completion tooltips.

3. The DS main app icon list is now much faster and this is partly due to the use of a new method for controls called Batch() which allows the batching of control methods into a single shot. This is particularly useful when writing your own components and you need to call ctrl.Set* methods lots of times but don't want to impact performance.

Here is the complete list of changes since the last official release -

(We bumped the number up to 2.50 as the new NodeJS support is a very significant change that warrants a major version number)

DS 2.50p1 (patch)

  • Added 'Query Images' and 'Query Videos' samples.
  • Fixed DS crash when building APKs/AABs for Html apps.

DS 2.50

  • Fixed ctrl.Batch call for base methods (use underscore)
  • Added app.PreventWifiSleep() to IDE server code (not sure it will help).
  • Fixed crash issues on ListView related to blurry icon fix.
  • Sped up app icon list even more and fixed its light mode text color.
  • Hidden 'SDK' menu for Android 10 or newer (scoped storage issues).

DS 2.17b1

  • Added new 'Node' app type - cfg.Node.
  • Sped up app icon list display and app startup.
  • Added typeId field to every DS object.
  • Added app.Show/Hide methods.
  • Added obj.Batch() for faster batched method calls (set ctrl props all at once).
  • Added ReadFile and WriteFile to extension.js.
  • Introduced new 'glob' object for storing global variables (shorter alternative to
  • Improved MUI code completion/help in wifi-ide.
  • Increased size of wifi-ide tooltip docs jump link, changed from '?' to '…'.
  • Improved ide.AddModule() method (now shows yes/no dialog)
  • Fixed zip path traversal vulnerability (causes Google Play warning)
  • Added app.WalkFolder for recursive listing (use same options as listFolder).
  • Added 'NoEmpty' option to app.ListFolder and app.WalkFolder (hides empty folders)
  • Added 'Project' option to app.ListFolder (shows DS project folders only)
  • Added new extension function - openEditorFile( filename, lineOrPattern )

DS 2.14b1

  • Added 'Music Sequencer' sample.
  • Added 'Synth Song Player' sample.
  • Fixed Music docs dark theme issue in wifi ide.
  • Fixed blurry icons in list control (when > 64dip).
  • Improved app → node messaging reliability.
  • Added ide.AddModule() method (adds a node module from code)
  • app.Script() now 'defers' execution by default.
  • app.Script() now has noDefer parameter (causes inline load of script)
  • Errors in app.Script() includes are now highlighted.
  • Fixed language extension bug that caused loss of code changes.
  • Added new CloudStore extension to the WiFi IDE (for premium users).
  • Modified app.GetAppPath() to return full path to resources when in APK.
  • Added app.ReadFileData(file,mode) method ('base64','hex','int','ascii').
  • Fixed music component so it works inside APKs.
  • DS and all exported APKs are both 64bit and 32bit compatible by default.
  • mui: Added Add*** methods to MUI.
  • mui: Added SetColor method to Buttons
  • mui: Added SetColor method to FABs
  • mui: Button padding is added to button with null width.
  • mui: Add SetText method to FAB
  • mui: Added Add*** method to each control.
  • mui: Pass TextEdit control as param to pickers.
  • mui: Added SetTextEdit method to pickers.
  • mui: Added touch discovery to TextEdits
  • mui: Added SetOnTouch method to TextEdits
  • mui: Added 1 Outlined Button. A true material outline button.
  • mui: Added SetOnClose to AddBanner.
  • mui: Added SetOnClose to AddDialog.
  • mui: Redesign Modal dialog control.
  • mui: Added SetOnClose to AddModal.
  • mui: Added 'Full' options to AddModal.
  • mui: Fixed minor glitches on CreateDialog.
  • mui: Added SetTextEdit method to ListDialogs.
  • mui: Added SetOnReady and SetOnProgress method on DataTable

DS 2.13b1

  • Fixed !addmodule command on slower devices.
  • Icon buttons sample fixed.
  • Plugin exceptions are now shown in debug log.
  • SysProc component now sets HOME and TMPDIR environment vars if none provided.
  • Fixed bug in 'packages' param of app.SetKioskMode() method.
  • Added 'Background Job' template to device IDE.
  • Fixed bug where version part of plugin names were not stripped off.
  • Blocked the use of 'Service' and 'Job' as app names.
  • MUI assets are now excluded from APKs if not used.
  • Changed camera profile for front camera recording.
  • Updated to newer APK/AAB v3 signature method.
  • Added RealPath() conversion to app.OpenDatabase() method.
  • Fixed app.GetIPAddress() for Android 11.
  • Fixed CustomTabs on Android 11.
  • Added 'Custom Browser Tabs' sample.
  • Fixed Speech Recognition on Android 11.
  • Fixed TextToSpeech on Android 11.
  • Fixed Background services for Android 11.
  • AAB files are now automatically signed with user.keystore file.
  • Added OnDone() callback to Node object.

DS 2.12b1

  • Updated to Google Play Billing libraries v4.
  • Fixed case sensitivity issue with Desyrel font.
  • Allowed use of lib sub folder in plugins (for .so files)
  • Old Plugin folders are deleted when re-installing plugins
  • app.CreateNode() now supports 'paths' parameter (same as nodejs NODE_PATH env variable)
  • mui: Added ShowMenu() method to show menu on a given control
  • mui: Added SetList() method to all list control
  • mui: Added animation to spinner
  • mui: Added SetHint to Spinner
  • mui: Added SetList to Spinner
  • mui: Added SetList to Menu
  • mui: Added SetOnIconTouch to TextEdits with icons

DS 2.11b2

  • Fixed issues with Node on 64bit devices and scoped devices.
  • Added app.RealPath method. Converts short file paths to full paths.
  • Improved 'plugin not licensed' error handling.

DS 2.11b1

  • Added support for NodeJS scripts and modules!
  • Added new !addmodule command to wifi ide command box.
  • Improved wifi ide file browser drag-drop handling.
  • Removed 'UseBasicInput' option from chat webview.
  • Removed 'ongoing notification' (not effective at keeping DS alive).

DS 2.10b1

  • Added new Chat tab to right slide panel of mobile IDE.
  • Fixed chat (red dot on tab) message indicator on wifi editor.
  • Added app.CreateCustomTabs (thanks to Candlelight)
  • Added more fine grain control over COSU Kiosk mode (for >= Android 9).
  • Added GetCurrentTabName() method to tab control.
  • Added 'NoMargins' option to tab control.
  • Improved app startup time slightly.
  • BuildAPK dialog now saves version and package name for each project.
  • autoPermissions value in build.json now also checked when running app in ide.
  • App now shows warning before exiting if required dangerous permissions are missing.
  • Added new noPermsAction field in build.json (set to 'exit', 'continue', 'default').
  • Added new !getperms command to wifi ide (gets dangerous permissions of current app).
  • Added app.SaveJson and app.LoadJson methods (thanks to HJCD Studios)
  • Fixed broken wiki link in docs/resources.
  • External storage access (SAF) is now available to non-premium users.
  • Added 'NoVibrate' and 'Low' (priority) options to app.CreateNotification() method.
  • Added ongoing notification to keep DS alive in background.
version_history/v2.50.txt · Last modified: 2022/01/20 00:02 by stevegarman