Search code examples
androidpythonsl4a

Unable to connect to SL4A server


I'm unable to connect to the Android Scripting layer server. When I run the command I get the following error:

> >>> a = android.Android() Traceback (most recent call last):   File "<stdin>", line 1, in <module>   File "android.py", line 34, in
> __init__
>     self.conn = socket.create_connection(addr)   File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py",
> line 553, in create_connection
>     for res in getaddrinfo(host, port, 0, SOCK_STREAM): socket.gaierror: [Errno 8] nodename nor servname provided, or not
> known

Steps that I've taken: 1. setup adb forwarding. 2. Made available the Android.py file to the interpreter. 3. Started a private server and connected the device to the computer.

What could be wrong?


Solution

  • Did you export the "AP_PORT" environment variable?

    It should be set to the port forwarded to.

    For example, if you set the forwarding port like this:

    $ adb forward tcp:9999 tcp:{SL4A port}
    

    You need to set the AP_PORT before entering the python interpreter, like this:

    $ export AP_PORT=9999
    

    I have a script that sets the environment up and starts the python interpreter here:

    https://github.com/georgegoh/Android-Scripting/blob/master/py4a_start.sh

    I've only tested and used it on Ubuntu, so YMMV.