Currently, unpackPyBundle() extracts pybundle.so on every startup of the main acitivity. If there is a previously running service waiting on select.poll(), it will crash during the extraction.
This was not a problem in the earlier versions of p4a, where unpackAsset and unpackPyBundle were together as unpackData.
Any ideas on how we can implement versioning for unpackPyBundle() ? This comment alludes to taking a hash of the file, but in some cases, the bundle is many megabytes in size, and would take some time to compute. in which case, can we use private_version string to implememnt disk versioning similar to what is done in unpackAsset?
Here is my take on resolving the issue. If this is acceptable, I can submit a PR.
03-17 11:38:42.590 881 881 F DEBUG : backtrace:
03-17 11:38:42.590 881 881 F DEBUG : NOTE: Function names and BuildId information is missing for some frames due
03-17 11:38:42.590 881 881 F DEBUG : NOTE: to unreadable libraries. For unwinds of apps, only shared libraries
03-17 11:38:42.590 881 881 F DEBUG : NOTE: found under the lib/ directory are readable.
03-17 11:38:42.590 881 881 F DEBUG : #00 pc 0000000000001f30 <unknown>
03-17 11:38:42.590 881 881 F DEBUG : #01 pc 00000000000033e0 /data/data/org.test.myapp/files/app/_python_bundle/modules/select.cpython-38.so
Versions
Description
Currently, unpackPyBundle() extracts pybundle.so on every startup of the main acitivity. If there is a previously running service waiting on
select.poll()
, it will crash during the extraction.This was not a problem in the earlier versions of p4a, where unpackAsset and unpackPyBundle were together as
unpackData
.Any ideas on how we can implement versioning for
unpackPyBundle()
? This comment alludes to taking a hash of the file, but in some cases, the bundle is many megabytes in size, and would take some time to compute. in which case, can we useprivate_version
string to implememnt disk versioning similar to what is done inunpackAsset
?Here is my take on resolving the issue. If this is acceptable, I can submit a PR.
Example service.py
Example main.py
buildozer.spec
Command:
Spec file:
Logs