mac如何去mac无格式粘贴贴

如何把安卓软件装到系统分区里_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
如何把安卓软件装到系统分区里
上传于|0|0|文档简介
&&让你玩通安卓系统
。。如何把安卓软件装到系统分区里
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢如何完全备份android系统上的system分区和data分区
安卓的备份在很多场合下可能会用到,下面这个python的脚本,可以用来备份整个的data分区:将所有data分区的文件和目录打包到data.zip,并生成recovery的专用edify脚本到update-script.sh。当然,简单的修改下脚本的备份路径就可以备份system分区了,如果再加上几行代码,就可以备份boot,recovery,uboot等等分区,不过这要根据不同的分区来写不同的备份代码:
import sys
from os.path import join
from os import path
import zipfile
from zipfile import ZipFile
def packdir(dir,z,dirinfo,emptydirs,linkinfo):
dirs = os.listdir(dir)
if not dirs:
emptydirs.append(dir)
for d in dirs:
absdir = join(dir,d)
if not path.islink(absdir) and (path.isdir(absdir) or path.isfile(absdir)):
emptydirs.append(dir)
for d in dirs:
absdir = join(dir,d)
st = os.lstat(absdir)
info = [st.st_uid,st.st_gid,st.st_mode]
if path.islink(absdir):
info.append(absdir)
linkdir = os.readlink(absdir)
linkinfo[linkdir] = info
elif path.isdir(absdir):
dirinfo[absdir] = info
packdir(absdir,z,dirinfo,emptydirs,linkinfo)
elif path.isfile(absdir):
dirinfo[absdir] = info
os.utime(absdir,(,))
z.write(absdir)
print 'file type unknow %s'%(absdir,)
zi = ZipFile('data.zip','w',zipfile.ZIP_DEFLATED)
dirinfo = {}
emptydirs = []
linkinfo = {}
packdir('/data',zi,dirinfo,emptydirs,linkinfo)
f = open('update-script.sh','wb');
f.write('ifelse(is_mounted("/data"),unmount("/data"),0);\n')
f.write('format("ext4", "EMMC", "/dev/block/data", "0", "/data");\n')
f.write('mount("ext4", "EMMC", "/dev/block/data", "/data");\n')
f.write('package_extract_dir("data", "/data");\n')
mkdir_cmd = 'run_program("/sbin/busybox","mkdir","-p","'
mkdir_cmd += '","'.join(emptydirs)
mkdir_cmd += '");\n'
f.write(mkdir_cmd)
for key in dirinfo.keys():
info = dirinfo[key]
info = list(info)
info.append(key)
info = tuple(info)
set_perm = 'set_perm(%d, %d, %d, "%s");\n'%info
f.write(set_perm)
for key in linkinfo:
info = linkinfo[key]
info = tuple(info)
symlink = 'symlink("%s", "%s");\n'%(key,info[3])
set_perm = 'run_program("/sbin/busybox","chown","-h","install:install","%s");\n'%(info[3],)
f.write(symlink)
f.write(set_perm)
f.write('unmount("/data");')
update_script='update-script.sh'
os.utime(update_script,(,))
zi.write(update_script)
zi.close()
如何运行:
先要有root权限,另外,该脚本的运行依赖于python-for-android。
然后要将该脚本打包到apk里,或者在adb shell上通过命令行的方式执行。6245人阅读
Android(43)
Android设备上,一般都会存在一块eMMC存储芯片来存放系统和用户数据,甚至部分的引导程序。
一般设备出厂时,各个厂商都会将这块存储芯片分成很多的分区,每个分区内存放不同的内容。具体分区的布局每个厂商或者芯片供应商都会不一样。
可以通过下面的命令来查看目前系统中到底有多少分区:
cat /proc/partitions
这条命令会显示系统中的所有分区,以及每个分区的大小是多少个block,还有主设备号和次设备号等信息。在Google Nexus 6设备上,命令的显示结果如下:
major下的数字代表这个分区所在设备的主设备号,同样minor下的数字代表次设备号。而#blocks下的数字代表这个分区占用了多少块。name下的字符串代表了这个分区的名字。
啰嗦一句,可以通过下面的命令查看当前系统中所有设备的主设备号:
cat /proc/devices
在Google Nexus 6设备上,命令的显示结果如下:
可以看到,系统中有这么多个块设备,179对应的就是mmc,259对应的是blkext。
如果想知道每个挂载到文件系统上的分区大小和使用情况的信息,可以像普通Linux一样使用df命令:
不过df命令只显示了在文件系统上的挂载点,并没有显示对应的块设备是哪个,这点可以通过使用mount命令来弥补:
df和mount命令的结果相结合,可以得到更加完整的信息,比如对于/system来说,其块设备是/dev/block/platform/msm_sdcc.1/by-name/system,文件系统使用的是ext4,大小是1.9G,当前已使用了1.6G,等等。
如果想看某些分区的别名信息,对于高通平台上来说,可以通过下面的命令:
ls -al /dev/block/platform/msm_sdcc.1/by-name
在Google Nexus 6设备上,命令的显示结果如下:
这些信息可以帮助发现每个分区到底是用来干什么的,比如/dev/block/mmcblk0p41这个分区就是用来存放/system的。
有了这些信息,就可以使用dd命令,将感兴趣的分区全部倒出来进行分析。比如,如果想将TrustZone相关的tz分区倒出到sdcard上,可以使用下面的命令:
dd if=/dev/block/platform/msm_sdcc.1/by-name of=/sdcard/tz.img&pre&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:263114次
积分:3145
积分:3145
排名:第10395名
原创:64篇
评论:157条
(1)(2)(1)(2)(2)(2)(4)(4)(4)(2)(4)(4)(4)(4)(4)(2)(1)(1)(3)(8)(6)

我要回帖

更多关于 mac无格式粘贴 的文章

 

随机推荐