如何在Android上运行mercurial?

时间:2017-02-15 22:00:04

标签: android mercurial

page个文件运行旧版本(1.8.4)的mercurial,但说

  

"(以后的版本需要一个名为grp的无法使用的python模块)"

2 个答案:

答案 0 :(得分:2)

这是我使用 mercurial 3.7.3 <使用Ubuntu 16.04计算机和运行在Windows 7上的intel 64位android模拟器的方式(但我仍然有兴趣听到其他方法) / p>

  1. 使用Ubuntu系统,按照instructions创建能够运行hg的2.7版python。
  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。

    make python excutable

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

    设置一些env vars需要在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

  3. Python现在应该能够使用python2.7

    运行

    enter image description here

    1. 在Ubuntu主机上构建mercurial。

      download mercurial 3.7.3

      uz mercurial-3.7.3.tar.gz

      cd mercurial-3.7.3&amp;&amp;全部

      HOME = $ PWD / dist make install

    2. 进行微小修改

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

      rm * .so

      cp pure / * .py。

      编辑posix.py并删除&#34;导入grp&#34;线。

    3. 将mercurial复制到Android设备

      Windows主机上的

      adb push dist / sdcard

      adb -e shell

      在Android设备上

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

      cp / sdcard / dist。

      别名hg,使其易于使用

      alias hg =&#39; python2.7 / data / user / 0 / $ SOMEAPPDIR / files / dist / bin / hg&#39;

    4. 现在可以在Android设备上使用Hg。

      甚至可以克隆远程回购,但我还必须通过--insecure标记来绕过ssl错误。

      enter image description here

答案 1 :(得分:0)

“ 17年2月15日”的答案很好,但是有一个很大的缺点。 该答案解决了此缺点,并打算与先前的答案结合使用。

问题

此过程:

rm *.so

cp pure/*.py .

删除本机库,并使用这些库的python'pure'实现。在使用大型存储库时,尤其在较慢的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 verison

    PLATFORM="android-22"

    指定交叉编译的python的输出。

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

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

  4. 运行crosscompile.sh