如何在安卓设备上运行Mercurial?

3

页面记录了在Android上运行旧版本(1.8.4)Mercurial的方法,但是指出:

"(更高版本需要一个不可用的Python模块名叫grp)"

2个回答

3

这是我使用Ubuntu 16.04机器和在Windows 7上运行的Intel 64位安卓模拟器,使用mercurial 3.7.3完成的方法(但我仍然很想听听其他替代方法)

  1. 在Ubuntu系统上,按照说明创建一个2.7版本的Python,可以运行hg。

  2. 将Python复制到Android设备的应用文件目录中(以便执行)

    在Windows主机上

    adb push python279.x86_64 /sdcard

    adb -e shell

    在Android设备上

    cd /data/user/0/$SOMEAPPDIR/files

    cp -Rav /scard/python279.x86_64 .

    使Python可执行

    chmod +x python279.x86_64/bin/python2.7

    设置一些环境变量需要在Android上运行Python

    export LD_LIBRARY_PATH=/data/user/0/$SOMEAPPDIR/files/python279.x86_64/lib

    export LD_PRELOAD=libffi.so:libbz2.so

    export PATH=$PATH:/data/user/0/$SOMEAPPDIR/files/python279.x86_64/bin

现在可以使用Python2.7运行Python。

enter image description here


  1. 在Ubuntu主机上构建mercurial。

    下载 mercurial 3.7.3

    uz mercurial-3.7.3.tar.gz

    cd mercurial-3.7.3 && make all

    HOME=$PWD/dist make install

  2. 进行小的修改

    cd dist/mercurial-3.7.3/dist/lib/python/mercurial

    rm *.so

    cp pure/*.py .

    编辑posix.py并删除"import grp"行。

  3. 将mercurial复制到Android设备上

    在Windows主机上

    adb push dist /sdcard

    adb -e shell

    在Android设备上

    cd /data/user/0/$SOMEAPPDIR/files

    cp /sdcard/dist .

    别名hg以便更容易使用

    alias hg='python2.7 /data/user/0/$SOMEAPPDIR/files/dist/bin/hg'

现在可以在安卓设备上使用Hg了。甚至可以克隆远程仓库,但是我还需要传递--insecure标志以绕过SSL错误。

enter image description here


1

在“2017年2月15日”发布的答案很好用,但有一个相当大的缺点。这个答案解决了这个缺点,并旨在与之前的答案一起使用。

问题

这个过程:

rm *.so

cp pure/*.py .

移除本地库并使用Python“纯”实现这些库。当处理大型存储库时,特别是在较慢的Android设备上,这会导致主要性能问题。

解决方案

使用Android NDK交叉编译Mercurial,可以生成可在Android上使用的本地库。

我添加了一些助手脚本到mercurial 4.8.2 fork,以使交叉编译更容易。

Linux指令:

  1. 克隆存储库

    hg clone https://bitbucket.org/hindlemail/hg-stable-android/

  2. 更新到331892efe015

    hg update -r 331892efe015

  3. 使用适当的值为这些环境变量设置:

    提供Android NDK的位置

    ANDROID_NDK="$HOME/Android/android-ndk-r13b"

    指定构建架构 - (armeabi、x86、x86_64、arm64)

    ARCH="armeabi"

    指定目标Android SDK版本

    PLATFORM="android-22"

    指定交叉编译Python的输出。

    (有关更多信息,请参见2017年2月15日的答案)

    PYTHONDIR="/usr/local/android/install/python279.arm22"

  4. 运行crosscompile.sh


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接