如果要把一个在 Linux 下的软件移植到 Android,需要怎么做呢?

2017-03-28 03:41:51 +08:00
 716438031
5005 次点击
所在节点    Linux
30 条回复
GoBeyond
2017-03-28 06:14:57 +08:00
标题有点空洞吧,说详细点
googlebot
2017-03-28 06:26:47 +08:00
算法移植容易,在加个 android 皮,
linbiaye
2017-03-28 07:50:16 +08:00
看什么语言的, c/c++的如果安卓支持各种 api/abi ,写 mk 就可以。
linux40
2017-03-28 08:07:34 +08:00
库要完整。。。
shoaly
2017-03-28 08:39:31 +08:00
不知道 tmux 是否开源
shoaly
2017-03-28 08:40:11 +08:00
上面说错了, 该死..应该是 https://github.com/termux 这货
nicevar
2017-03-28 08:53:29 +08:00
配置好 Android 的 ndk 环境, Application.mkAndroid.mk 写好, lib 也准备好然后开始一步步解决问题就行了
nicevar
2017-03-28 08:54:45 +08:00
界面交互的话需要写 jni 提供接口给 Java 层钓鱼
zhchyu999
2017-03-28 08:58:29 +08:00
拿源码用 ndk 中的编译器,交叉编译。
716438031
2017-03-28 12:55:52 +08:00
@GoBeyond 假如我要把 Linux 下的一个程序 screenfetch 移植到 Android 运行,需要怎么做呢......
716438031
2017-03-28 12:57:03 +08:00
@shoaly 这个的确挺厉害的,然而这个程序只能运行在 Android 5.0 或以上的手机.......
716438031
2017-03-28 12:59:56 +08:00
@linux40 库...是指 *.so 文件吗?如何知道一个软件所依赖的库呢......
debye
2017-03-28 13:09:19 +08:00
linux 大多是服务性质的软件吧, android 大都面向最终用户的, UI 很重要,大部分都没有移植的意义。
hitmanx
2017-03-28 13:43:57 +08:00
去年干过类似的事,把一个 C++底层的库和一堆依赖 library 、 test 程序移植到了 Android 上。我不是专门搞 Android 的,所以纯粹是站在一个 Linux C++ developer 上的一些经验,不知道对你有没有帮助。

如果是 C\C++的程序,基本流程可能是这样的,先把它编成 Android 上的 native 程序(这一步没有什么 Android 特有的东西在里面,就和移植到任何平台一样),具体来说,找到对应的交叉编译器(NDK),选择你习惯的 make 工具,编译你的代码。然后就可以尝试通过 ADB 把编完的程序上传到 android 上跑,上传、运行等都可以通过 adb (有大把的教程) 。等以上 native 跑通了,再去搞 APK ,用 JNI 去封装一个 java 层,一种方法是把你的程序编成一个 shared library ,然后在 wrapper 层里去 dlopen 你的 library , dlsym 其中的 main ,然后执行等等,这一步有很多 tricky 的地方,比如 linux 下的环境变量在 Android 上怎么处理,或者窗口的 handle 怎么传递等等。
RqPS6rhmP3Nyn3Tm
2017-03-28 13:49:21 +08:00
移植 screenfetch 有啥意义……
lrz0lrz
2017-03-28 16:49:33 +08:00
但是 termux 有 screenfetch 啊?
lrz0lrz
2017-03-28 16:50:48 +08:00
ProjectSky
2017-03-28 19:26:50 +08:00
termux 有包构建工具,但是文档缺失严重。
https://github.com/termux/termux-packages/blob/master/README.md
ywgx
2017-03-28 19:29:54 +08:00
mv 命令可以的
716438031
2017-03-28 21:37:03 +08:00
@debye 在 Linux 有很多有意思的工具而 Android 没有,所以想尝试移植.....

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/350781

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX