2012-01-13 93 views
0

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

回答

0

,我发现直接的方法是安装在联机模式下的一切一次,然后压缩目录的内容:

/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 
0

为了安装Py4a,我最终修改了android/PythonForAndroid/src/com/googlecode/pythonforandroid/PythonDescriptor.java,将BASE_URL修改为file:///的URL。然后,我可以将adb pushpython_*.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