【问题标题】:How to install interpreter for SL4A in offline如何离线安装 SL4A 的解释器
【发布时间】:2012-01-13 12:31:55
【问题描述】:

在我目前的工作中,我对 perl/python/lua 上的 android 脚本非常感兴趣,但我的流量消耗也非常有限,在重新刷新 android 设备后,我可能需要经常重复解释器安装过程。那么有没有办法在没有互联网连接的情况下使用准备好的文件/档案在 SL4A 中安装解释器?

【问题讨论】:

    标签: android installation sl4a


    【解决方案1】:

    为了安装 Py4a,我最终修改了android/PythonForAndroid/src/com/googlecode/pythonforandroid/PythonDescriptor.java,将那里的BASE_URL 更改为file:/// URL。然后我可以将adb push python_*.zip 文件放入该目录,然后从那里安装。

    一个关键是注意logcat 错误消息。因为我没有版本文件,所以代码总是要求_r1.zip

    应用以下补丁,然后按照 Py4A 的 README 文件中的说明构建 APK。

    diff --git a/android/PythonForAndroid/src/com/googlecode/pythonforandroid/PythonDescriptor.java b/android/PythonForAndroid/src/com/googlecode/pythonforandroid/PythonDescriptor.java
    index a891e98..89bb4f7 100644
    --- a/android/PythonForAndroid/src/com/googlecode/pythonforandroid/PythonDescriptor.java
    +++ b/android/PythonForAndroid/src/com/googlecode/pythonforandroid/PythonDescriptor.java
    @@ -39,7 +39,7 @@ public class PythonDescriptor extends Sl4aHostedInterpreter {
       public static final String ENV_EXTRAS = "PY4A_EXTRAS";
       public static final String ENV_EGGS = "PYTHON_EGG_CACHE";
       public static final String ENV_USERBASE = "PYTHONUSERBASE";
    -  public static final String BASE_URL = "http://python-for-android.googlecode.com/";
    +  public static final String BASE_URL = "file:///data/data/tmp/";
       private static final int LATEST_VERSION = -1;
       private int cache_version = -1;
       private int cache_extras_version = -1;
    

    获得.apk 后,继续安装所有内容:

    pushd android/PythonForAndroid
    adb install -r bin/PythonForAndroid-debug.apk
    popd
    
    pushd python-build
    adb shell mkdir -p /data/data/tmp/files
    adb push python_r16.zip /data/data/tmp/files/python_r-1.zip
    adb push python_extras_r14.zip /data/data/tmp/files/python_extras_r-1.zip
    adb push python_scripts_r13.zip /data/data/tmp/files/python_scripts_r-1.zip
    popd
    

    最后一步是启动 Py4A,然后戳Install

    【讨论】:

      【解决方案2】:

      我找到的直接方法是在线模式下安装所有内容,然后压缩目录内容:

      /data/data/com.googlecode.{language}forandroid,
      /sdcard/com.googlecode.{language}forandroid,
      /sdcard/sl4a
      

      并使用以下批处理脚本 (Windows) 进行任何后续安装

      set ADB_BIN="C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe"
      %ADB_BIN% install -r sl4a_r4.apk
      %ADB_BIN% install -r PythonForAndroid_r4.apk
      %ADB_BIN% install -r perl_for_android_r1.apk
      %ADB_BIN% install -r lua_for_android_r1.apk
      
      %ADB_BIN% push sd.tgz /sdcard/
      %ADB_BIN% shell busybox tar -xzf /sdcard/sd.tgz -C /sdcard
      %ADB_BIN% push data.tgz /sdcard/
      %ADB_BIN% root
      %ADB_BIN% remount
      %ADB_BIN% shell busybox tar -xzf /sdcard/data.tgz -C /data/data
      
      %ADB_BIN% shell rm /sdcard/sd.tgz
      %ADB_BIN% shell rm /sdcard/data.tgz
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-11
        • 2012-06-20
        • 2019-01-26
        • 2019-10-25
        相关资源
        最近更新 更多