Android系统开发一般在ubuntu服务器上,我们办公电脑一般是windows。在将编译出来的模块push到板子上时,一般采用adb push 方式。
有时由于种种原因会出现服务器禁用了samba,导致无法直接用adb push 的情况。
下面介绍用winscp 走ssh 拷贝服务器生成模块到本地电脑后,再push到机器上的方式。
以fwk为例,bat脚本如下:
@echo on
setlocal
:: 设置SFTP服务器的相关信息
set HOST=XXXXXXX
set USER=XXX
set PASSWORD=XXXXXXXXXXX
set REMOTE_DIR=XXXXXXXXXXXXX/system/framework
set LOCAL_DIR=%CD%
:: 删除之前的缓存的文件夹,并重新创建
RMDIR framework /S /Q
mkdir framework
:: 创建WinSCP脚本
echo open sftp://%USER%:%PASSWORD%@%HOST% > winscp_script.txt
echo lcd %LOCAL_DIR% >> winscp_script.txt
:: 我们这里只拷贝framework相关文件;若是apk等模块,不需要进入文件夹,直接用get . 代替即可。
echo lcd framework >> winscp_script.txt
echo cd %REMOTE_DIR% >> winscp_script.txt
echo get framework.jar >> winscp_script.txt
echo get services.jar >> winscp_script.txt
echo get services.jar.prof >> winscp_script.txt
echo get framework-res.apk >> winscp_script.txt
echo get oat >> winscp_script.txt
echo get arm >> winscp_script.txt
echo exit >> winscp_script.txt
:: 使用WinSCP执行脚本,这会将服务器文件拷贝到本地电脑
"C:\Program Files (x86)\WinSCP\winscp.com" /script=winscp_script.txt
:: 删除临时脚本文件
del winscp_script.txt
endlocal
::下面直接在本地push
adb wait-for-device
adb root
adb remount
adb shell mount -o rw,remount,rw /system
adb shell mount -o rw,remount,rw /product
adb push framework /system
adb shell sync
adb shell ls -al /system/framework/framework.jar
adb shell ls -al /system/framework/services.jar
adb shell ls -al /system/lib/libssljni.so
@pause
adb reboot