Native bridge between Python and Dalvik or AAF
Asked Answered
Z

2

8

Is there any project that bridges Python and Dalvik in same address space?

That is an object created in one language can be registered as a listener in the other and vice versa?

--

Python could be CPython or PyPy;

Dalvik could be full Android Application Framework, or only Dalvik virtual machine, or in the worst case, could even be a non-Dalvik JVM;

Bridge could be written in Python/cffi, Python/jni, native C/C++ code, or even java.

Scripting environment, as far as I understand, doesn't do what I want.

In case of a total lack of Python--Dalvik bridge, I'll take full-featured C/C++-based C/C++--Dalvik bridge as a valid answer as a last resort. Then an example is required on instantiating a on object in C/C++ land that can be submitted as a valid listener to some Android API at runtime, including security considerations.

Zonnya answered 18/11, 2013 at 10:44 Comment(5)
"I'll take full-features C/C++-based C/C++--Dalvik bridge" like JNI? :)Octodecimo
clarified, that's last resort.Zonnya
Are you aware of pyjnius? It is used by (for instance) the kivy python-for-android project to interact with java classes, including managing stuff like intent listening. I apologise if this is technically unsuitable, I don't know enough about this area.Asturias
@Asturias I'll have a look!Zonnya
@Asturias this is really good actually! uses ctypes, thus only works with CPython and won't work so efficiently with PyPy, but it's clearly a projected aimed in the right direction! Please convert into an answer.Zonnya
A
4

(As per my original comment)

Are you aware of pyjnius? It is used by (for instance) the kivy python-for-android project to interact with java classes, including managing stuff like intent listening. I apologise if this is technically unsuitable, I don't know enough about this area.

As a minor reference, listener example implementing an intent listener interface in Python and registering it with Android runtime using pyjnius.

Super-simple example, calling into java.

>>> from jnius import autoclass
>>> autoclass('java.lang.System').out.println('Hello world')
Hello world
Asturias answered 27/11, 2013 at 12:1 Comment(1)
CPython-only, but very very nice. github/implementation code is so compact it makes me cry :)Zonnya
L
2

There is in fact a module called android in python. It can do quite a lot on an android system. You can download it here: https://pypi.python.org/pypi/python-android

There is also a python/java bridge that also supports Dalvik handling. Here is where you can get the software: https://bitbucket.org/reasonspace/reasonspace/src

Both of these should supply a good way to interface python and Android systems. If you wanted you could also probably get them both to read and write files to send messages or create some kind of similar way to communicate, but the above projects are better ways to do it.

Latrell answered 22/11, 2013 at 3:28 Comment(3)
python-android's linked github is pretty empty. what is actually implemented? There is code only in two files, ota.py and boot.py. What can this project actually do?Zonnya
reasonspace didn't have commits for 2 years; jpype on the other hand is apparently maintained. the latter allows to "implement" (sic.) a java interface, but doesn't support dalvik.Zonnya
I don't want to pass messages between the two. I want direct calls and callbacks, implementation f interfaces, etc. Well calls through the shim obviously.Zonnya

© 2022 - 2024 — McMap. All rights reserved.