Android question: how to connect to swank, running on android?

PR polos.ruetz at gmail.com
Sat Aug 19 20:24:11 UTC 2017


thanks to both of you, but it still doesn't work.

>From the PC, I did:

  $ adb forward tcp:4005 tcp:4005

so, this part works.

Daniel, I already "stole" the functions from the "ecl-android" project
(prior to post my question); without them I would have been lost...

So, I'll have to play around a little... Of course I will post the
solution here, if I get it to work.

Paul


2017-08-19 17:27 GMT+02:00, Daniel KochmaƄski <daniel at turtleware.eu>:
> Hello,
>
> swank listens by default only for localhost connections (for a good
> reason!). To force it to listen for connections from specific host other
> than 127.0.0.1 you have to bind swank::*loopback-interface* to it. For
> instance to listen for connections from everywhere on port 4005 you
> could use functions from
> https://gitlab.common-lisp.net/ecl/ecl-android/blob/master/assets/lisp/etc/user.lisp
>
> (defun start-swank ()
>    (format t "Starting swank server~%")
>    (mp:process-run-function
>     "SLIME-listener"
>     (lambda ()
>       (let ((swank::*loopback-interface* "0.0.0.0"))
>         (swank:create-server :port 4005
>                              :dont-close t
>                              ;; :style nil #|:spawn|#
>                              )))))
>
> (defun stop-swank ()
>    (format t "Stopping swank server~%")
>    (swank:stop-server 4005)
>    (format t ";; Swank off-line~%"))
>
> Note, that newest slime/swank should support :spawn communication style
> just fine with ECL (my PR was merged lately). In that case it should be
> enough to call create-server which won't block (note that in the example
> above we create separate thread for that).
>
> Since ECL isn't run from CLI but as shared library, it is useful to
> define implementation for implementation program (don't remeber for
> sure, but I think lack of this caused some problems later)
>
> (defimplementation lisp-implementation-program ()
>    "Return the argv[0] of the running Lisp process, or NIL."
>    "org.lisp.ecl")
>
> Hope this helps.
>
> Best regards,
>
> Daniel
>
>
> On 19.08.2017 16:32, PR wrote:
>> Hi again,
>>
>> so, the progress of the new android REPL is going well, it already
>> runs Quicklisp and can start swank, and right there I'm stuck now:
>> How does one connect from the local computer to the android device,
>> which is running the SLIME-listener?
>>
>> They are connected via USB, and the device is /not/ rooted.
>>
>> Since this is certainly of public interest, I ask here, thanks for any
>> help!
>> Below the link to the current APK of the REPL (you'll need android
>> version >= 4.1, API >= 16):
>>
>> http://lights-of-holiness.eu/tmp/repl.apk
>>
>> After launching the app, do (there is currently no feedback of the
>> progress, sorry):
>>
>>    (quicklisp)   ; should take less than a minute, with a fast internet
>> connection
>>    (start-swank) ; same as above (needs to byte-compile all 'contribs')
>>
>> If I run:
>>
>>    (mp:all-processes)
>>
>> it lists the running "SLIME-listener" process, so it seems to work...
>>
>> Thanks for any help!
>>
>> Paul
>>
>
>



More information about the ecl-devel mailing list