Android的shell上直接运行.net AOT程序(整活)

     众所周知,Android上使用的bionic库,不同于其他linux分支,通过termux,可以编译一些c、c++程序到android shell中执行,先前都试过,完全没有问题。但是把.net 发布的AOT程序用到Android shell上执行,就一下来了难度(android shell,不是android apk,.net生成apk到android上有很多方案)。

     主要原因是微软官方一直没有bionic库的.net sdk,这样基本就没法直接发布程序到android上。但是这边琢磨了好久后,通过PublishAotClang的musl发布,这边确实实现了这一壮举。

(888的三星fold3使用termux shell)

bf70fa1795fd0bf54d882d2d4f4b0005

 

(888的三星fold3使用adb shell)

2fd10b0ccc9bc56fa478bb015a01030e

 

主要思路:

bionic库的.net sdk不好匹配,但是musl版本sdk还是有的(Alpine),musl是可以静态编译到.net AOT程序的,这样就可以绕开c库不一致的墙,实现.net AOT程序到android上运行的可能。

刚刚好的是PublishAotClang的musl发布,实际就是静态编译的,解决了c库依赖。

发布命令

dotnet publish -r linux-musl-arm64

musl库编译的程序,执行时候需要root权限,否则会提示系统调用错误。

android adb shell 先用su指令进入root

termux shell使用sudo ./程序  执行

 

这样很多这边测试程序,特别是模拟设备的程序,都可以直接在android shell中直接执行,不必去依赖chroot\proot的linux环境

 

posted @ 2026-07-24 10:38  猿妙不可言  阅读(2)  评论(0)    收藏  举报