Dear PySiders,

If you aren't lurking around in #pyside on FreeNode IRC, you might not
have read it yet: We now have a port of PySide to Android!

URL: http://thp.io/2011/pyside-android/

PySide for Android is only possible due to these cool projects:

 * Necessitas (Qt for Android)
 * Py4A (Python for Android)
 * PySide (you know this one..)

It was a nice learning experience to see how all the PySide parts
(apiextractor, generatorrunner, shiboken, pyside) play together. For
building PySide for Android, I first needed to compile PySide for my
host machine, and then use the PySide tooling + the Android NDK +
Necessitas SDK to build libshiboken and later libpyside and the Qt
bindings for Android.

One thing that I noticed was that the PySide bindings (QtCore.so,
QtGui.so, etc..) and libpyside depend on the "versioned filename" (is
that correct?) of libshiboken, i.e. libshiboken-python2.6.so.1.0
instead of just libshiboken-python2.6.so (which gave me some problems
with the bionic linker, but then I took the dirty route and patched
zero bytes on top of the trailing ".1.0" in all the affected files -
would be good to know if there is a way to build it so that the
dependency is on libshiboken-python2.6.so and libpyside-python2.6.so
without the trailing version number).

Also, the bionic linker has a low upper limit for the number of shared
libraries that can be loaded simultaneously - would it theoretically
be possible to combine the bindings (QtCore.so, QtGui.so, etc..) into
a single shared library that is then loaded, or alternatively to do
something along these lines with Qt so that the number of different
libraries required for getting a QML-based PySide application up and
running is reduced? (i.e. with the current setup, the linker has to
load libpython, libshiboken, libpyside, libQtCore, ilbQtGui,
libQtDeclarative (+all its dependencies) and the binding modules
PySide.QtCore, PySide.QtGui, PySide.QtDeclarative, etc..) It's no
problem on the emulator, but on a device with a full-blown QML
application, i get a linker error that the maximum number of libaries
are reached (this error message comes from bionic's linker and
according to linker.c is triggered when more than SO_MAX shared
libraries are loaded).

Looking forward to your feedback, comments, contributions and
improvement suggestions.

Enjoy!
Thomas
_______________________________________________
PySide mailing list
PySide@lists.pyside.org
http://lists.pyside.org/listinfo/pyside

Reply via email to