Using Julia on Android?

In lay man’s terms that would mean using the Ubuntu approach is better than the above?

1 Like

Multithreading works too

6 Likes

Yes, the Ubuntu approach will allow you to use nearly all Julia packages. The minimal Termux approach will only work with base Julia and packages that don’t depend on BinaryBuilder (for example Distributions.jl will not work).

2 Likes

Here using UserLAnd android app, Ubuntu hosted OS and Generic Linux Binaries for ARM (64 bits) from the site:

1 Like

Interesting. Does this require the steps (1-5) summarised by xiaodaigh? (Sorry for asking, but this is new to me.)

Basically yes… you install the app, in the app menu you install Ubuntu, from the ubuntu prompt using apt-get you install a bit of stuff (wget, build-essential,…), you download julia binary, (optional) symlink julia to ~/bin, … and finally run Julia.

2 Likes

Thanks. It works. To summarise, I did the following:

  1. install UserLAnd android app from Play Store, choose Ubuntu hosted OS

  2. install wget and build-essential:

sudo apt-get update 
sudo apt-get upgrade
sudo apt-get install wget
sudo apt-get install build-essential
  1. Download and install Julia:
wget https://julialang-s3.julialang.org/bin/linux/aarch64/1.2/julia-1.2.0-linux-aarch64.tar.gz
tar xvfa julia-1.2.0-linux-aarch64.tar.gz
sudo ls -l julia-1.2.0/bin/julia .
8 Likes

Hi and thanks for the very nice installation tutorial!
Did anyone encounter this error at startup?


I installed the 32 bit version of julia because I have an old 32 bit custom ROM…

I encountered an error when i initiated julia following these steps.
ERROR:stat returned zero type for a valid path…


I tried ‘julia --startup-file=no --history-file=no’ but didn’t work.

[I have no particular expertise in this, just tried a few things.]

I get the same error message when I run
julia-1.4.1/bin/julia

Rather, julia loads nicely when I instead run
julia-1.4.1/bin/julia --startupfile=no --history-file=no

To replicate this, follow my instructions in the previous message but for 1.4.1, but skip the last step. That is, do

wget https://julialang-s3.julialang.org/bin/linux/aarch64/1.4/julia-1.4.1-linux-aarch64.tar.gz
tar xvfa julia-1.4.1-linux-aarch64.tar.gz

appreciate!

Thanks @xiaodai that worked perfectly. Running Julia on my android device right now. Cheers :+1:

1 Like

Running Julia on Android is cool, and while it is then in some sense an Android app, has anyone done an “independent” Android app in Julia. Even just a proof-of-concept “hello world” type? Or even better with an even loop working with the Java-based framework? As in an .APK file you could deploy to the Google Play store (runable without Ubuntu or other first installed), or done the first steps to what would end up as APK.

My understanding is that while useful, a Julia Android app is only really an Ubuntu app, running under Ubuntu, running in Android, and that is still a good step, but a long way from an APK?

I know the technical difficulties, you would want to runwith bionic, not regular libc, so is there something to help like libhybris, but for the other way:

Not related to Android or Bionic (only “just x86-64 for simplicity”), but I just found out Google has a plan (from 2019) for a new “libc in LLVM”:

http://lists.llvm.org/pipermail/llvm-dev/2019-June/133308.html

Julia has support for musl, and while bionicis the default on Android, musl may work there (or is that only the plan?):

2 Likes

Hi,

sorry to dig up this topic but I’am trying to install Julia 1.3.1 with Userland and I ran into the same error as @Iulian.Cioarca about libopenblas.so which I think I have fixed with:

$execstack -c ./julia1.3.1/lib/julia/libopenblas.so

but I still can’t run julia:

here is the output of lscpu:

gsch@localhost:~$ lscpu
Architecture:        armv7l
Byte Order:          Little Endian
CPU(s):              8
On-line CPU(s) list: 0-7
Thread(s) per core:  1
Core(s) per socket:  4
Socket(s):           2
Vendor ID:           ARM
Model:               4
Model name:          Cortex-A53
Stepping:            r0p4
CPU max MHz:         1401.0000
CPU min MHz:         768.0000
BogoMIPS:            38.00
Flags:               half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm aes pmull sha1 sha2 crc32

If someone manage to fix this error I’am all ear ! :slight_smile:

Since 1.3.1 is not officially supported anymore, I would suggest trying this with Julia 1.5 first. It might have already been fixed since then.

2 Likes

Update from my side:
Julia 1.5 is working well, but meanwhile I also changed the phone and I’m on 64 bit Android 10.

I try at first the 1.5 but there is no binaries for the armv7 architecture (32bits) for Julia version more recent than the 1.3.1 :slightly_frowning_face:

I am currently trying to build the latest master from source on my Raspberry Pi. Will let you know how that goes.

1 Like

Hi,

In my side I didn’t manage to install the 1.3.1 version but the 1.2.0 run smoothly (except for the libopenblas error which is fixed with execstack)

V1. 5 can’t be launched.