[Python-Dev] Exposing the Android platform existence to Python modules (original) (raw)

Shiz hi at shiz.me
Fri Aug 1 20:09:30 CEST 2014


-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512

Charles-François Natali wrote:

Well, Android is so popular that supporting it would definitely be interesting. There are a couple questions however (I'm not familiar at all with Android, I don't have a smartphone ;-): - Do you have an idea of the amount of work/patch size required? Do you have an example of a patch (even if it's a work-in-progess)? - Is there really a common Android platform? I've heard a lot about fragmentation, so would we have to support several Android flavours (like #ifdef ANDROIDVENDORA, #elif defined ANDROIDVENDORB)?

Absolutely! I maintain a public repository of patches against CPython v3.3.3 at 1.

They are divided into three large patches: one fixes some issues I encountered with CPython's build system for cross-compilation, one fixes Android/Bionic's numerous locale issues (locale.h/langinfo.h support in Android is basically a set of stub functions that return NULL), and the last one is a set of 'misc' fixes for things that affect Android, mainly smaller things like missing fields in struct passwd and the like.

With those patches, CPython 3.3.3 will cross-compile to and run on at least my own Android device, a Moto G running Android 4.4.2. What's left to fail is fix the numerous regression test failures and their causes. I documented some of my findings at 2. :)

As far as Android fragmentation goes, to my knowledge that mainly refers to fragmentation at two levels: the Android versions numerous devices run tends to differ greatly, and the screen sizes, resolutions and aspect ratios vary greatly. Obviously the latter is a problem beyond the scope of CPython, but the former could lead to some issues.

Luckily however, the NDK3, the SDK of choice to use for C/C++-level applications, is fairly unified and expected to be used for pretty much all Android devices. Essentially there should be only the NDK for CPython to target, with a variety of NDK versions to support depending on which versions of Android CPython chooses to support. So far I've been only testing against NDK r9c, so I'm honestly not all that familiar with the changes different NDK versions bring, but from what I heard up until NDK r10 were mostly toolchain updates and header additions for new Android versions.

I'd dare say that the vast, vast majority of Android devices out there are running on the same base, namely AOSP4 with numerous vendor fixes/drivers/additions, and that custom Android distributions would try not to break NDK compatibility.

Kind regards, Shiz

-----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.22 (Darwin) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQQcBAEBCgAGBQJT29fZAAoJEICfd9ZVuxW+HaUf/1tBsrRckvIAdCyTfo1NjY/U fp8HJRh+mWUQ58dAy+jvaPxxQ4pTus5bsMZKw2LvSoC4aO4guqOydPBW4DVjdvJl m2ZegA3uGdgejoN/4gHpaQRU2Jq0KzRx3+ov3EuvPF8qZbGHelu/SjAWB+3zFH29 OrQsb8iX/p2RuuwcLlFF5ESO4ycYSRC8Pug8tUV+L8H2J9YU0ZyPzo1QsipNozzH k707RFa5xb34M3HINu/2ObT36mNsSHpOK+V268/Gst9VYwYnmgE//gen2vX2uaHi gqQMrd0eHBvaBdv48E681ytl9BHCN0X79fYDjKNCAZB/928UPy46qTtrvGxZ4ycR 2dCd0YURRMqRA8WeunkEHl9KYHWLsqex00RgwTgRXgJ+3gufeY4o2o5UH/JMW2te kMFqVN6S/ulzUF9clC1nLd5NFTq14e46kSckJdQJYscXghTmNf1D7CvnmwyOaYGo Ptq0vYaKcxGu3l1moFJCjqzz0unxBFMvEzkdY/YNXmtVjtrv66whcCAKIhPmrdgu DOsGt/UL5AtfiOcZv7ae9OyWvTd6+wqgWCj+sAxPA2hWEYkUZMju6lZP9OLAkXE7 UgPcjzRDTMPzr0DIBK0KyRxOYacHBb2dBidMqC9JqvKAlUpH132/YDz1LnFjdLj4 yxX6CztDHvdkxaCv1gTcvsyc+WJceUeiT+GGPtvDl/PoCy4pN4T+3NJp2EX21GNj md4OyLVps0lRGtAGAuGi3MwNI1CdSMrmqTt6YLsl8sM4GLbsr7CawULViA9N5Bup T/b/F46l9RXDAxj7T/PfTJHfByK6TrIJwP7ZBsryy1u6WIDUUu9hAETfOSze5P2d /RBzAieVbfctm41mZwvr1szFTTUJNVizlpti1Ab6874f3Hrn9h/06+MOGPBNEl2z 02JPVOUhpZqBvXdRvzyevOqVCWyN5WuVtGRY1hzP1/B06CSkbEHGbLXNE5GLqs4J q0wkpF47KMo+Jnbw+i9j5IrFCOP6S1Oqo8p0jPl/3C5JuLakF6F+w3mumJrxeClh BqvEsj2bpe+Su3tNc6msp/ifYH7GyLrya2BRs8B1SmOKuvLe2RuITPy6HXMqDRle v1wUHgUmTaTvpqxG7z3AQwf+r+p7eKKGOQA/NkvbnGMkiXBAyL1WYqkuZ4P05UIk Wpz+zKWZEdookd81drHrUw2ohMEFvrVpSvnWe4d/VLEsgObhS3t3gQRjvf804UuJ uMsqlOeNYDv/UPVoF12cJUOVONWchB7ACXbE7rt1Z8yf0p9sPlqM33aptB8tC4NE +tDUH4XRvWgw14PE7s7xBeTrElTHcJisQBXr5flBDsw6eMF1R4Bba3M4skqxpxs= =pMFQ -----END PGP SIGNATURE-----



More information about the Python-Dev mailing list