MonkeyRunner填坑之jython

Standard

MonkeyRunner使用的jython环境是jython-standalone-2.5.3,写好的python脚本,运行才发现,import json报了import error,看了2.7的jython包是包含的,本想替换却发现不行,只能另寻出路。

最后解决方案,手动下载simplejson

import sys,time,datetime
sys.path.append('simplejson-3.10.0')
if not ('simplejson-3.10.0' in sys.path):
    sys.path.append('simplejson-3.10.0')
try:
    import json
except ImportError:
    import simplejson as json

这算完了吗?显然没有,Mac下运行好好的脚本,移到Windows又傻逼了:
LookupError: unknown encoding 'ms936',这个简单,解决办法就是在执行monkeyrunner之前先在控制台执行chcp437即可。

解决Android Studio非法字符: `’\ufeff’`

Standard

解决Android Studio非法字符: '\ufeff'

Eclipse可以智能的把UTF-8+BOM文件转为普通的UTF-8文件,Android Studio还没有这个功能,所以使用Android Studio编译UTF-8+BOM编码的文件时会出现” 非法字符: '\ufeff' “之类的错误。

解决办法可以通过其他编辑器另存为UTF-8文件。但是太麻烦,这里使用的办法是使用python脚本全自动实现。

import os, sys, codecs

BUFSIZE = 10240000 //缓冲大小
BOMLEN = len(codecs.BOM_UTF8)
alterNum = 0
print("Start")
for root, dirs, list in os.walk(os.getcwd()):
    for name in list:
        dir = os.path.join(root, name)
        print(dir)
        with open(dir, "r+b") as fp:
            chunk = fp.read(BUFSIZE)
            if chunk.startswith(codecs.BOM_UTF8):
                print("is a BOM file")
                alterNum += 1
                i = 0
                chunk = chunk[BOMLEN:]
                while chunk:
                    fp.seek(i)
                    fp.write(chunk)
                    i += len(chunk)
                    fp.seek(BOMLEN, os.SEEK_CUR)
                    chunk = fp.read(BUFSIZE)
                    fp.seek(-BOMLEN, os.SEEK_CUR)
                    fp.truncate()
                    print("**Complete")

参考:Android Studio导入eclipse项目时出现ufeff或65279的解决方案 UTF-8无BOM批量转换脚本

Python脚本下载