一个G1 的问题引发对Linux命令总结——超级终端裸装apk程序

转载于:http://blog.csdn.net/ostrichmyself/article/details/5305547

同事有一个g1, 不能从Market中下载任何应用程序, 导致安装app的程序都无法下载, 因此任何程序都不能安装。 后来查了一些资料, 实现了从超级终端下, 将.apk文件安装到了g1上,顺便也学习了一下androd 管理应用程序的原理, 以及一些常用的命令。相信这类从实践中的总结,不至于让学习变得比较枯燥。

g1 的应用程序管理

g1 下,应用程序分为两类:

一类是google自己开发的应用程序,如gmail, google map, gtalk的客户端程序。 这些随官方rom安装到system/app目录下。

一类是从Market下载的程序,或者是从xxxx论坛下载下来的野程序。这些将安装到data/app目录下。

可以做如下测试:

#cd /system/app

#ls

将看到rom自带的程序

#cd /data/app

#ls

将看到自己安装的程序

(上述命令可能会要求root权限)

在g1的"settings"中,有一个选项为“sd卡和手机存储”, 点进去之后, 其“手机内部存储”的信息,跟安装app的关系是非常密切的。 每安装一个,手机存储将减少一些。这个信息,也可以从命令行看得到:

#busybox df

其中有个选项是描述应用程序的占用情况的, 找到:

/dev/block/mtdblock5 xxxxx xxxxxxxxxxxx /data

这里面有手机的空间信息, 可用空间,跟从"settings"中看到的是一致的。 这个也就证明了, 我们的apk文件,究竟躲到哪里去了。

既然我们知道,安装app的实质,就是将.apk 文件扔到/data/app目录下, 所以我们没有gui类型的安装工具,从命令行,就可以直接吧问题搞定。下面是步骤。

1. 将.apk复制到/data/app目录下

2. 修改该apk的属性, 群组属性,以及访问属性

问题解决!

与此相关的命令是1. 复制命令 2. 修改文件的群组命令 3. 修改文件的访问属性

复制命令:

Linux的复制命令是CP, 后面跟的是源文件, 然后是目标文件夹, 如:

Cp file1 directory

当然,如果要copy整个文件夹,则需要带参数, cp -r, 其他的可以通过查看帮助文档。

通过上述方式,不难把G1的应用程序全都copy出来:

cp -r /data/app /sdcard

(由于是连接,所以应该为: cp -r /system/sd/app /sdcard 连接只能从原始位置拷贝)

相当轻松的把自己安装的程序copy出来了, 很多Market上面的付费软件,通过该方式, 弄出来,简直轻而易举了。

同样,如果你对google内置的程序,如gmail, YouTube,gtalk这类有兴趣, 同样可以copy出来反编译:

cp -r /system/app /sdcard/

当然,目前的反编译技术还是很烂的。估计对理解apk帮助不大。 纯属好玩。

修改访问权限以及群组:

Linux文件访问有两个维度, 第一,文件的所有者和所有群组,第二文件的访问权限。

Linux通过两维关系,目的是为了控制用户对文件访问的管理。

如,对于一个文件,它对应了一个owner,也对应了一组特定用户, 所以可以对他们设置权限。这样管理权限就非常方便。

通过 ls -l命令可以看到Linux文件的群组和权限,比如:

drwxr-xr-x 3 ostrich ostrich 4096 Apr 4 2009 Tracing

  drwxr-xr-x 表示:目录ower有rwx权限; 目录的ower群组有r-x权限 其他用户有r-x权限

数字3表示链接数,标明其他的地方,可以链接到这个目录来

  ostrich ostrich 表示:所有者是ostrich ,owner组是ostrich 。(前面的是用户,后面的是组)
  4096是大小,目录的大小和文件系统有关系,文件的话,大小就是文件真实的大小。

后面的是时间和目录名称。

回到我们的G1, /data/app目录下的文件, 显示大致为:

-rw-r--r-- 1 1000 1000 .....

copy过来的apk,显示为:

-rw-r--r-- 1 0 0 .....

为了保持系统的一致行,需要修改ower以及群组: 1000表示的用户为system, 可以通过如下方式修改:

chown system.system xxx.apk

小圆点隔开了用户和群组,表示用户和群组都为system.

由于访问权限无需修改, 所以这里就不需要再用chmod命令来修改了。

关于用户管理的知识,这篇文章总结得还是比较细致的:


你可能感兴趣的:(linux命令)