U8SDK——Mac下移植记录
应不少同学的要求,最近将u8sdk移植到mac下面,u8sdk研发之初,就做好了跨平台的准备,所以,移植到mac上也就是小半天的事。这里简单记录下mac的移植经历
首先,移植主要是移植u8sdk打包工具。u8sdk打包工具采用python开发,而python本身就是跨平台的,这使得将u8sdk移植到mac的时间大大缩短了。
而且,mac下还有先天的优势。不仅自带python2.x ,还自带jdk。连python都不用手动安装了。
另外,就是准备一套对应mac下的工具。主要是aapt,dx等工具。其他jar包无所谓了。
1、最早之前脑残了一些,python2.x中对于字符串的处理,中文字符需要作为unicode来处理。之前采用了decode(gbk)来实现的。其实,不用这么麻烦直接在所有字符串前面使用 u””即可。这样就表明该字符串常量为unicode。不管中英文都可以正常显示当然,如果你是python3.x,那么就没有必要这么做了,因为python3.x中,字符串默认就是unicode字符了。
2、file_utils.py中需要做几处修改。
getToolPath方法需要加一个判断当前系统环境的逻辑:
1 2 3 4 5 6 |
def getToolPath(filename): if platform.system() == 'Darwin': return "tool/mac/" + filename else: return "tool/win/" + filename |
getJavaBinDir方法也需要做一下系统判定:
1 2 3 4 5 6 |
def getJavaBinDir(): if platform.system() == 'Darwin': return "" else: return getFullPath("tool/win/jre/bin/") |
getCurrDir 方法需要需要增加上mac下当前工作目录的获取:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def getCurrDir(): global curDir retPath = curDir if platform.system() == "Windows": retPath = retPath.decode('gbk') else: retPath = sys.path[0] lsPaths = os.path.split(retPath) # print(lsPaths) if lsPaths[1]: retPath = lsPaths[0] return retPath |
3、apk_utils.py中需要做几处修改:
generateNewRFile方法中,需要将dx的使用,mac中改为直接使用dx.jar:
1 2 3 4 5 6 7 8 9 10 |
if platform.system() == 'Windows': dexToolPath = file_utils.getFullToolPath("dx.bat") cmd = '"%s" --dex --output="%s" "%s"' % (dexToolPath, targetDexPath, genPath) else: dexToolPath = file_utils.getFullToolPath("/lib/dx.jar") cmd = file_utils.getJavaCMD() + ' -jar -Xms512m -Xmx512m "%s" --dex --output="%s" "%s"' % (dexToolPath, targetDexPath, genPath) ret = file_utils.execFormatCmd(cmd) |
如果你之前变更过jar方式处理打包,那么你肯定还有其他地方使用到dx.bat。那么需要把所有使用到dx.bat的地方,都加一个判定,保证在mac下,使用的是dx.jar方式
好了,如果你按照上面做完了,那么,恭喜你,你已经成功将u8sdk打包工具移植到了mac上了
原来打包脚本执行使用的是pack_debug.bat(或者package.bat)。现在肯定也不能用了,加一个mac下的执行文件吧。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#!/bin/sh this_dir=`pwd` dirname $0|grep "^/" >/dev/null if [ $? -eq 0 ];then this_dir=`dirname $0` else dirname $0|grep "^\." >/dev/null retval=$? if [ $retval -eq 0 ];then this_dir=`dirname $0|sed "s#^.#$this_dir#"` else this_dir=`dirname $0|sed "s#^#$this_dir/#"` fi fi echo $this_dir echo "wellcom to use u8sdk" python $this_dir/scripts/pack.py False True 1 |
最后,附上mac下工具的下载地址。需要的童鞋,自行下载。 点击这里 提取密码:921s。
本文出自 U8SDK技术博客,转载时请注明出处及相应链接。
本文永久链接: http://www.uustory.com/?p=1797