Chaquopy is now out of beta

Posted on

The Chaquopy SDK is now out of beta and is considered ready for production use. Thanks to all those who tested it during the beta period: your free license keys will remain valid for all future versions.

We’re looking forward to continuing to improve Chaquopy in the future, but we’d like to hear what features are most important to you. Do you want better performance, or are there any Python packages you’d like to be made available? Would you benefit from better Android Studio integration, or would you be more interested in a way to create apps in Python directly on an Android device?

Please let us know your thoughts by email or on our GitHub page.

Chaquopy version 1.4.0

Posted on

This version adds the following feature:

  • The Python standard library is now loaded from compiled .pyc files by default (see documentation). As a result, startup of a minimal app is now 20-30% faster with Python 2, and 50-60% faster with Python 3. (Python 3 startup is still slower than Python 2, but only by 15-20%.)

And fixes the following bugs:

  • sys.stdin now returns EOF rather than blocking. If you want to run some code which takes interactive text input, see below for the new console app template.
  • The write method of sys.stdout and sys.stderr now returns the character count.
  • Very long lines written to sys.stdout and sys.stderr are now split into slightly smaller fragments, to allow for the shorter Logcat message length limit in recent versions of Android.
  • Fix a multi-threading deadlock.

Other notes:

  • Apps built with an unlicensed copy of the SDK are now limited to a run-time of 5 minutes.
  • console app template is now available, providing a framework for running text-based Python programs in an Android app. The demo app has been rewritten to use this framework, giving the following improvements:
    • Code input in the REPL is now executed on a background thread.
    • The REPL can now be terminated by typing exit(), then restarted by pressing back and re-entering the activity.
    • Stderr is now shown in red.
    • Scrolling, rotation and state restoration are all more reliable.

Chaquopy version 1.3.0

Posted on

This version focuses on improving Python standard library functionality:

  • The following things now return reasonable values: sys.argvsys.executable, and platform.platform().
  • The following modules now work correctly: sqlite3, ssl (#23), and tempfile. (Requires python.version to be 2.7.14 or 3.6.3.)
  • sys.stdout and sys.stderr are now directed to the Android logcat.

It also adds the following feature:

  • extractPackages allows code which uses __file__ to work unchanged. It is used by default for certifi.

Chaquopy version 1.2.0

Posted on

This version adds the following features:

  • Python source directory locations can now be configured in the sourceSets block, just like Java.
  • Python 2.7.14 is now available.

And fixes the following bugs:

  • getClass, when called on a Java object, now returns the Java object class rather than the
    proxy object class.
  • Generated static_proxy Java files no longer produce build warnings.
  • Pip is now re-run if a local requirements or wheel file changes.
  • Missing stdlib modules distutils and doctest have been added (#20). For Python 2 apps, this also requires
    upgrading to Python 2.7.14.

The following packages have been added to the repository:

Chaquopy version 0.6.1

Posted on

This version adds the following features:

  • Apps can now use certain native packages, including NumPy (#14), as well as pure-Python packages which aren’t available from PyPI in wheel format.
  • Zero-initialized Java arrays can now be created in Python, by passing an integer to the array constructor rather than a sequence.

And fixes the following bugs:

Chaquopy version 0.5.0

Posted on

This version adds the following features:

And fixes the following bugs:

This version also increases the minimum API level for Chaquopy-based apps from 9 to 15. This is the default for new apps in Android Studio 3.0, and covers 99% of active devices.