ApkPy 1.13.1¶
Released 2026-10-17. python -m pip install --upgrade apkpy==1.13.1.
Fixes, and nothing new. 1.13.1 is 1.13.0 running on every Python it says it runs on: 3.8 and later. With Python 3.13, every example app is built into exactly the same files as with 1.13.0.
What was wrong¶
On Python 3.8 to 3.11, apkpy did not start. Two lines of ApkPy itself
used an f-string that Python accepts from 3.12 on, with a backslash, and the
f-string's own quote, inside the braces. Before 3.12 that is a syntax error,
raised while ApkPy loads, so no command ran. setup.py says 3.8 and later,
and the tests had been run only on 3.13. It has been so since at least
1.5.0.
On Python 3.8, an index reached the phone as nothing. Python 3.8 hands
parts[0] to ApkPy in a different shape from the versions after it. The
item read on the phone was the one at index "", which is none, while the
Previewer showed the right one. The same went for row["name"] in a row and
for the names of pictures in a list.
On Python 3.8 to 3.10, apkpy.toml was skipped unless tomli happened
to be installed. A warning said so, and the app was built under the default
name and application id. tomli is now installed with ApkPy on those
versions.
Smaller:
- On Python 3.8, nine error messages failed with an error of their own
instead of naming the code they were about, and others quoted it as
.... - In the Previewer on Linux, a rounded container could stay blank after a container above it was hidden and shown again. GitHub's Ubuntu machines found it.
- On a Linux desktop with no language set (
CorPOSIX), the Previewer took that for a language. It now reads it as none.
Upgrading¶
- Install 1.13.1. On Python 3.12 and later, nothing about an app changes.
- On Python 3.8 to 3.11, this is the version that starts. On 3.8 to 3.10,
pipinstallstomlibeside it.
How it was checked¶
The tests ran on GitHub's machines: Windows with Python 3.8, 3.11 and 3.13, and Ubuntu with Python 3.13. All four pass, with 2,177 feature tests and 44 more on each. A new test reads every file of ApkPy the way Python 3.11 does, so a line like those two cannot come back unnoticed. Every example app, 87 of them, was built by 1.13.0 and by 1.13.1 with Python 3.13 and the files compared: no difference. The package was then installed from its wheel into an empty environment and used to build an app.
The complete list is in the changelog.