# Julia on iOS and Android

**URL:** <https://discourse.julialang.org/t/julia-on-ios-and-android/7346>\
**Category:** Internals & Design\
**Tags:** android\
**Created:** [November 28, 2017, 3:23am UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346 "2017-11-28T03:23:29Z")\
**Posts on this page:** 20\
**Page:** 3

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [February 4, 2020, 11:21pm UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346/41 "2020-02-04T23:21:40Z")

</div>

Check out my guide here. I found ti searching for Android in this forum

> [@Using Julia on Android?](https://discourse.julialang.org/t/using-julia-on-android/8086/7):
>
> Complete Steps to Running Julia on your Android (tested on Huawei P30 pro as of 20190927) Step 1 Download the [termux](https://termux.com/) app on your Android (Play Store worked for me) Step 2 Install Ubuntu on termux by following [this guide](https://github.com/MFDGaming/ubuntu-in-termux). For those who are too lazy to open the page, here are the instructions from the page Installation steps Update termux: apt-get update && apt-get upgrade -y Install wget: apt-get install wget -y Install proot: apt-get install proot -y Install git: apt-get install git -y …

---

<div class="post-metadata">

**Author:** ![Alphons\_Jaimon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alphons_jaimon/32/12623_2.png) [@Alphons\_Jaimon](https://discourse.julialang.org/u/Alphons_Jaimon)\
**Post date:** [February 5, 2020, 9:25am UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346/42 "2020-02-05T09:25:29Z")

</div>

Thank even I found the same guide but I want to connect it a jupyter app and run from browser

---

<div class="post-metadata">

**Author:** ![ert](https://avatars.discourse-cdn.com/v4/letter/e/b5ac83/32.png) [@ert](https://discourse.julialang.org/u/ert)\
**Post date:** [March 15, 2020, 6:11pm UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346/43 "2020-03-15T18:11:31Z")

</div>

Up to now julia can be built for iSH but unfortunately freezes on executing code. One reason could be unimplemented syscalls related to memory management and tracing (e.g. gdb doesn’t work as iSH doesn’t support ptrace syscalls). Anyway, performance wouldnt bee too nice due to emulation.

---

<div class="post-metadata">

**Author:** ![caleb-allen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/caleb-allen/32/14054_2.png) [@caleb-allen](https://discourse.julialang.org/u/caleb-allen)\
**Post date:** [July 1, 2020, 12:51am UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346/44 "2020-07-01T00:51:07Z")

</div>

As a heads up to users of Termux, it looks like Android has had some changes to their security model in Android 10 which may affect (and possible eliminate) Julia functionality:

[https://github.com/termux/termux-packages/wiki/Termux-and-Android-10](https://github.com/termux/termux-packages/wiki/Termux-and-Android-10)

---

<div class="post-metadata">

**Author:** ![caleb-allen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/caleb-allen/32/14054_2.png) [@caleb-allen](https://discourse.julialang.org/u/caleb-allen)\
**Post date:** [July 1, 2020, 1:05am UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346/45 "2020-07-01T01:05:13Z")

</div>

I’ve linked a pretty huge github issue below, but the tl;dr is this: Native code which is not packaged in an .apk may not be executed by the user or non-system applications.

The solution they are currently employing is to repackage everything as .apks, which will be downloaded and installed by the `pkg` utility in termux. Many applications will still work, including interpreted languages like Python or Ruby. The same cannot be said for compiled languages.

One proposal is to compile code as an apk and installed by the user, but for a language like Julia with as much metaprogramming as it contains may not be compatible with that model.

[https://github.com/termux/termux-app/issues/1072#issuecomment-474385386](https://github.com/termux/termux-app/issues/1072#issuecomment-474385386)

---

<div class="post-metadata">

**Author:** ![caleb-allen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/caleb-allen/32/14054_2.png) [@caleb-allen](https://discourse.julialang.org/u/caleb-allen)\
**Post date:** [July 1, 2020, 1:17am UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346/46 "2020-07-01T01:17:29Z")

</div>

It may be possible that Julia can still run under `proot`, albeit with performance penalties.

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [July 1, 2020, 9:03am UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346/47 "2020-07-01T09:03:11Z")

</div>

Have you checked this? I ran Julia some time ago on my Pixel 3, and I’m pretty sure I was running Android 10 at the time?

---

<div class="post-metadata">

**Author:** ![caleb-allen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/caleb-allen/32/14054_2.png) [@caleb-allen](https://discourse.julialang.org/u/caleb-allen)\
**Post date:** [July 8, 2020, 11:24pm UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346/48 "2020-07-08T23:24:01Z")

</div>

I haven’t checked it, but at present (and in the near future) it should continue working. Google is enforcing this based on the `targetSdk`, so even if your device is API 29+ but the app uses API 28 it continues to function, and should do so for at least a few years.

There are two sides to this issue, both of which are relevant to ways in which Google is removing the method on which Termux relies in Android API 29.

1. **Enforcement** : Google Play stops accepting app updates which do not target API 29. Currently apps must target API 28 to be accepted on Google Play, and API 28 is what Termux targets. While this will become a problem, it can easily be bypassed by simply installing the Termux apk from elsewhere. This is expected to happen toward the end of 2020.

2. **Technical** : This will be the case if a future Android release enforces this security rule for _all_ apps, no matter which API level they target, breaking backwards compatibility (including for Termux). This would affect all apps on a device, including those installed via sources outside of Google Play.

---

<div class="post-metadata">

**Author:** ![Palli](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/palli/32/3380_2.png) [@Palli](https://discourse.julialang.org/u/Palli)\
**Post date:** [July 9, 2020, 11:03pm UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346/49 "2020-07-09T23:03:04Z")

</div>

> [@caleb-allen](#):
>
> Currently apps must target API 28

That means Android 9. This is easy to misunderstand. I fell into the trap of thinking that non-old Android versions are no longer supported, reading Google’s docs, but actually `targetSdk` must be set at some level for the app, while `minSdkVersion` can be much lower.

E.g. Firefox supports very old (discontinued by Google) “[Android Jelly Bean](https://en.wikipedia.org/wiki/Android_Jelly_Bean) or later” by setting `minSdkVersion` appropriately, I believe.

As Google can’t change already release Android versions (only Google Play policy on apps allowed; or allowed for updates), are you saying, old versions can use Termux forever (and even get updates), but on recent Android versions you get a new API, which, for you is worse?

---

<div class="post-metadata">

**Author:** ![maedoc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/maedoc/32/8490_2.png) [@maedoc](https://discourse.julialang.org/u/maedoc)\
**Post date:** [August 3, 2020, 8:10pm UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346/50 "2020-08-03T20:10:47Z")

</div>

Since Julia doesn’t seem to work yet in iSH, I tried compiling Scimark with GCC 9.2, and performance does seem to be bad, with a composite score of 17 on an iPhone SE (the new one). This is about two orders of magnitude lower than one might expect for real numerical work, though GCC seemed to compile everything reasonably fast so maybe it’s ok for some workloads.

---

<div class="post-metadata">

**Author:** ![raman\_kumar](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/raman_kumar/32/26782_2.png) [@raman\_kumar](https://discourse.julialang.org/u/raman_kumar)\
**Post date:** [November 15, 2023, 7:53am UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346/51 "2023-11-15T07:53:02Z")

</div>

Can Julia work in iPad or Android devices now ? Are there any future plan since iPad are becoming more and more powerful with m-chips ?

---

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [November 16, 2023, 3:25am UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346/52 "2023-11-16T03:25:51Z")

</div>

Running Julia on Android is not hard. I have not heard about success on iOS.

---

<div class="post-metadata">

**Author:** ![ImreSamu](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/imresamu/32/20677_2.png) [@ImreSamu](https://discourse.julialang.org/u/ImreSamu)\
**Post date:** [November 16, 2023, 1:08pm UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346/53 "2023-11-16T13:08:57Z")

</div>

If I needed to use the Julia programming language on iOS, I would probably try this first:

- [https://getutm.app/](https://getutm.app/) ( [GitHub - utmapp/UTM: Virtual machines for iOS and macOS](https://github.com/utmapp/UTM) ) ( “Run virtual machines on iOS”)
  - And try to install Julia

Of course, I don’t know if it would work.

---

<div class="post-metadata">

**Author:** ![caleb-allen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/caleb-allen/32/14054_2.png) [@caleb-allen](https://discourse.julialang.org/u/caleb-allen)\
**Post date:** [November 16, 2023, 1:26pm UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346/54 "2023-11-16T13:26:29Z")

</div>

`termux` is probably your best bet to get Julia running on Android at this point

---

<div class="post-metadata">

**Author:** ![foobar\_lv2](https://avatars.discourse-cdn.com/v4/letter/f/ee59a6/32.png) [@foobar\_lv2](https://discourse.julialang.org/u/foobar_lv2)\
**Post date:** [November 16, 2023, 1:43pm UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346/55 "2023-11-16T13:43:18Z")

</div>

The fundamental issue remains: Julia depends on JIT, and apple is a bunch of dystopian control-freaks who only pretend to transfer ownership of iphones and ipads to “buyers”.

Unless political change is enacted on that, it will probably remain impossible to run things like julia without joining the apple developer program, which is paid in money, PII and dignity (e.g. follow above links to end up at jitterbug, which is a pretty cool hack!).

That makes the target audience for an iphone-julia pretty small.

(for those who are less in the know: On ios, the kernel checks signatures when marking a page executable. You don’t control the kernel on “your” device, apple does. Farewell, von Neumann architecture. Apple has chosen a side in [the war on general computation](https://en.wikisource.org/wiki/The_Coming_War_on_General_Computation), and it sure ain’t ours)

---

<div class="post-metadata">

**Author:** ![AMJ](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/amj/32/214096_2.png) [@AMJ](https://discourse.julialang.org/u/AMJ)\
**Post date:** [November 16, 2023, 2:04pm UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346/56 "2023-11-16T14:04:21Z")

</div>

There is also [iSH](https://github.com/ish-app/ish) app that simulates a lightweight linux kernel. I have not tried it on M series iPads but few years ago couldn’t get Julia to work on some iPad mini. Don’t know if it works now.

---

<div class="post-metadata">

**Author:** ![mike.ingold](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mike.ingold/32/203749_2.png) [@mike.ingold](https://discourse.julialang.org/u/mike.ingold)\
**Post date:** [November 16, 2023, 5:05pm UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346/57 "2023-11-16T17:05:18Z")

</div>

I tried running the current Julia x86-32 binary under iSH recently on an iPad Pro (2018 10.5", not an M-series chip), and ran into the same old issue of it failing to load. Bigger picture: I would really love to be able to run something like Pluto natively on the device, but I don’t see how it would be possible. I’ve been playing around with JuliaHub’s Pluto service recently but haven’t tried using it from iPadOS/Safari yet. The included 20 hours/month free usage is pretty generous, so if it works well that would probably be a pretty reasonable 80% solution.

---

<div class="post-metadata">

**Author:** ![AMJ](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/amj/32/214096_2.png) [@AMJ](https://discourse.julialang.org/u/AMJ)\
**Post date:** [November 16, 2023, 10:30pm UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346/58 "2023-11-16T22:30:35Z")

</div>

Shouldn’t it be possible to set up Pluto on a remote server with specific port to be accessible through safari etc. ?

---

<div class="post-metadata">

**Author:** ![Palli](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/palli/32/3380_2.png) [@Palli](https://discourse.julialang.org/u/Palli)\
**Post date:** [November 16, 2023, 10:52pm UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346/59 "2023-11-16T22:52:44Z")

</div>

EDIT: Actually in this case, for iSH, I see you want a i386 build, but I do see two potential problems:

It used JIT so i386 should work on Arm (just not Apples Rosetta implementation of emulation), but while Julia supports 32-bit, it’s not i386, i.e. not quite that old. Julia targets about 10 year old 32-bit chips, but maybe can be compiled for older 32-bit.

Another thing is I see Alpine mentioned, and if you need that type of Linux userland, then it needs musl, and the Julia musl build is only for 64-bit.

What I wrote before that didn’t take iSH into account:  
I’m not sure the iPad ever had Rosetta [2], i.e. emulation, since it doesn’t have any history of non-Arm chips used there.

So you should use an Arm build of Julia on the iPad, and it might work?

---

<div class="post-metadata">

**Author:** ![mike.ingold](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mike.ingold/32/203749_2.png) [@mike.ingold](https://discourse.julialang.org/u/mike.ingold)\
**Post date:** [November 16, 2023, 11:29pm UTC](https://discourse.julialang.org/t/julia-on-ios-and-android/7346/61 "2023-11-16T23:29:17Z")

</div>

I believe this is possible on a LAN but haven’t tried it yet. If I’m at home I’ve got a desktop and laptop available, so no big desire to try running it from the iPad Pro. I take it with me on-the-go for note-taking where I’d need to have a personal VPN setup to remote into.

[Previous page](https://discourse.julialang.org/t/julia-on-ios-and-android/7346.md?page=2)

[Next page](https://discourse.julialang.org/t/julia-on-ios-and-android/7346.md?page=4)
