关于Zipalign的介绍和使用方法

Android 1.6 SDK中包含了一个用于优化APK的新工具zipalign。它提高了优化后的Applications与Android系统的交互效率(俗话:“要致富先修路”,Android小组重新为Applications与Android系统之间搭建了一条高速公路),从而可以使整个系统的运行速度有了较大的提升。Android小组强烈建议开发者在发布新Apps之前使用zipalign优化工具,而且对于已经发布但不受限于系统版本的Apps,建议用优化后的APK替换现有的版本。在下面的内容中将从三个方面介绍zipalign:

zipalign如何优化
如何使用zipalign
使用zipalign的理由
根据官方文档的描述,Android系统中Application的数据都保存在它的APK文件中,同时可以被多个进程访问,安装的过程包括如下几个步骤:

Installer通过每个apk的manifest文件获取与当前应用程序相关联的permissions信息
Home application读取当前APK的Name和Icon等信息。
System server将读取一些与Application运行相关信息,例如:获取和处理Application的notifications请求等。
最后,APK所包含的内容不仅限于当前Application所使用,而且可以被其它的Application调用,提高系统资源的可复用性。
zipalign优化的最根本目的是帮助操作系统更高效率的根据请求索引资源,将resource-handling code统一将Data structure alignment(数据结构对齐标准:DSA)限定为4-byte boundaries。如果第一次接触有关Data structurealignment的内容,强烈建议搜索更多与其相关的内容来充分理解这样做的最终目的,这也是理解zipalign工作原理的关键。如果不采取对齐的标准,处理器无法准确和快速的在内存地址中定位相关资源。

目前的系统中使用fallbackmechanism机制处理那些没有应用DSA标准的应用程序,这的确大大的方便了普通开发者无需关注繁琐的内存操作问题。但是相反,对于这样的应用程序将给普通用户带来一定的麻烦,不但影响程序的运行的效率,而且使系统的整体执行效率下降和占用大量不必要的内存资源,甚至消耗一定的电池资源(battery life)。

在Android 1.6 SDK中提供了三种应用Align操作的方法:

使用ADT:
从 ADT 0.9.3版本开始,可以通过export wizard自动对发布的applicationpackages执行align操作。设置方法:鼠标右键点击Project,然后选择”Android Tools” > “ExportSigned Application Package…”。或者可以直接在AndroidManifest.xml中设置。
使用 Ant:
对于API Level 大于等于4的Application Packages可以直接通过Ant build script来Align优化。但对于API Level小于4的情况,只能采取手动Align优化。
默认下应用Ant build script运行Debug packages(API Level >= 4)时,将自动执行Align优化。
针对Release packages。当使用Ant build script执行Align优化时,首先需要拥有足够的信息来Sign packages。当完成Signing之后, 才能执行Align优化。通过官方文档了解如何Sign Packages。
手动执行Align优化:
利用tools文件夹下的zipalign工具。首先调出cmd命令行,然后执行:zipalign -v 4 source.apk androidres.apk。这个方法不受API Level的限制,可以对任何版本的APK执行Align优化。
同时可以利用zipalign工具检查当前APK是否已经执行过Align优化。命令:zipalign -c -v 4 androidres.apk
再一次提醒开发者,立刻应用zipalign工具强制优化已经发布的application packages,并让你的用户使用最新的版本。

update-script脚本语法说明

转载自:http://bbs.angodroid.com/thread-559-1-1.html
update-script脚本语法说明(根据android源代码中的recovery.c进行的定义):

 

1.copy_dir
语法:copy_dir <src-dir> <dst-dir> [<times**p>]
<src-dir>表示原文件夹,<dst-dir>表示目的文件夹,[<times**p>]表示时间戳
作用:将<src-dir>文件夹中的内容复制到<dst-dir>文件夹中。<dst-dir>文件夹中的原始内容将会保存不变,除非<src-dir>文件夹中有相同的内容,这样<dst-dir>中的内容将被覆盖
举例:copy_dir PACKAGE:system SYSTEM:(将升级包中的system文件夹复制到手机中)

2.format
语法:format <root>
<root>表示要格式化的分区
作用:格式化一个分区
举例:format SYSTEM:(将手机/system分区完全格式化)
注意:格式化之后的数据是不可以恢复的

3.delete
语法:delete <file1> [… <fileN>]
<file1> [… <fileN>]表示要格式化的文件,可以是多个文件用空格隔开
作用:删除文件1,2到n
举例:delete SYSTEM:app/Calculator.apk(删除手机systen文件夹中app中的Calculator.apk文件)

4.delete_recursive
语法:delete_recursive <file-or-dir1> [… <file-or-dirN>]
<file-or-dir1> [… <file-or-dirN>]表示要删除的文件或文件夹,可以使多个,中间用空格隔开
作用:删除文件或者目录,删除目录时会将目录中的所有内容全部删除
举例:delete_recursive DATA:dalvik-cache(删除/data/dalvik-cache文件夹下的所有内容)

5.run_program
语法:run_program <program-file> [<args> …]
<program-file>表示要运行的程序,[<args> …]表示运行程序所加的参数
作用:运行终端程序
举例:run_program PACKAGE:install_busybox.sh(执行升级包中的install_busybox.sh脚本)

6.set_perm
语法:set_perm <uid> <gid> <mode> <path> [… <pathN>]
<uid>表示用户名称,<gid>表示用户组名称,<mode>,表示权限模式,<path> [… <pathN>]表示文件路径,可以使多个,用空格隔开
作用:设置单个文件或目录的所有者和权限,像linux中的chmod、chown或chgrp命令一样,只是集中在了一个命令当中
举例:set_perm 0 2000 0550 SYSTEM:etc/init.goldfish.sh(设置手机system中的etc/init.goldfish.sh的用户为root,用户组为shell,所有者以及所属用户组成员可以进行读取和执行操作,其他用户无操作权限)

7.set_perm_recursive
语法:set_perm_recursive <uid> <gid> <dir-mode> <file-mode> <path> [… <pathN>]
<uid> 表示用户,<gid>表示用户组,<dir-mode>表示文件夹的权限,<file-mode>表示文件的权限,<path> [… <pathN>]表示文件夹的路径,可以多个,用空格分开
作用:设置文件夹及文件夹中的文件的所有者和用户组
举例:set_perm_recursive 0 0 0755 0644 SYSTEM:app(设置手机system/app文件夹及其中文件的用户为root,用户组为root,app文件夹权限为所有者可以进行读、写、执行操作,其他用户可以进行读取和执行操作,其中的文件的权限为所有者可以进行读写操作,其他用户可以进行读取操作

8.show_progress
语法:show_progress <fraction> <duration>
<表示一个小部分> <表示一个小部分的持续时间>
作用:为下面进行的程序操作显示进度条,进度条会根据<duration>进行前进,当操作时间是确定的时候会更快
举例:show_progress 0.1 0(显示进度条当操作完成后前进10%)

9.symlink
语法:symlink <link-target> <link-path>
<link-target>表示链接到的目标,<link-path>表示快捷方式的路径
作用:相当于linux中的ln命令,将<link-target>在<link-path>处创建一个软链接,<link-target>的格式应为绝对路径(或许相对路径也可以),<link-path>为“根目录:路径”的形式
举例:symlink /system/bin/su SYSTEM:xbin/su(在手机中system中的xbin中建立一个/system/bin/su的快捷方式)

三星 SSSWITCH 0.9-1.x 设置

SSSWITCH的新版的菜单界面和0.85相比发生了新的变化,作者VOKU本意是简化菜单树形结构,方便大家,结果反而成了E文有困难同学的累赘,特作此文,结合自己当前的设置,希望给大家一点帮助.

一.启动:老规矩,虚拟模拟器里输入 ssscfg 回车,出现提示文字后回车一次取得授权并会出现主菜单
二.新主菜单:
1 Standard settings (标准设置)主要作用为开启/关闭各主要功能模块(如CPU频率设置,自动内存管理功能,内存锁定功能)。
输入 1 回车后进入 回出现如下10个子菜单。
注:如下图菜单,当你看到下面1-6选项菜单开头字母为ENABLE的,就表示这个选项你当前是DIABLE关闭状态。反之若开头字母是DISABLE,则当前该选项功能为开启状态
大家只要输入下列1-10菜单前面的序号,再按回车,即可改变当前选项的开启/关闭状态(1-6项);或者运行SSSWITCH自带的预置参数(7-9项)
1.ENABLE(或DISABLE) cpu setings (开启或关闭CPU设置 )
2.ENABLE(或DISABLE) KERNEL cpu setings if screen is on (开启或关闭?屏幕唤醒状态 CPU内核设置 )?
3.ENABLE(或DISABLE)lock apps in memory(开启或关闭 锁定APP程序至内存功能)
4.ENABLE(或DISABLE)memory settings(开启或关闭自动内存管理功能 不喜欢SSSWITCH的自动内存管理的朋友可以在这里禁用)
5.ENABLE(或DISABLE)3G/edge speed(开启或关闭3G/EDGE加速?使用联通3G卡的朋友可以尝试关闭这个看看有没有助益,默认是开启的。。。)
6.ENABLE(或DISABLE)I/O SPEED(开启或关闭I/O加速功能 这个是0.8.7开始的新功能,增加I/O任务调度的读取任务速度)
昏哥线——————–
7.LOAD PRESET CPU PROFILES (运行CPU设置预置模式??这个可以忽略。默认就好 )
8.LOAD PRESET MEMORY PROFILES(运行内存管理预置模式 这个随意 内存自定义数值乱了的时候可以运行这个恢复)
9.LOAD PRESET lock apps in memory SETTINGS(运行锁定程序到内存的预置模式??这个我个人不推荐 )
10.LOAD PRESET AUDIO/VIDIO PROFILES(运行?声音/视频参数预置模式 这个我从来不用,声音卡的可以尝试)
昏哥线——————–
ENTER RETURN TO MAIN MENU (输入回车返回主菜单)

2??ADVANCED SETTINGS (高级设置)–主要作用为自定义调整各功能模块具体参数值(前提是你在标准设置下预先启用ENABLE了该模块)
输入 2 回车后进入 会出现如下5个子菜单
大家可键入各菜单的序号 进入并设置参数
1.customize cpu settings when screen is ON??(自定义屏幕唤醒时CPU设置 这个就是调整手机唤醒时的最高/最低工作频率及相关电压,默认就好,新版延续了0.8.5的参数 很完美)
2.customize cpu settings when screen is OFF (自定义屏幕关闭时CPU设置 这个就是调整手机关闭时的最高/最低工作频率及相关电压,默认就好,新版延续了0.8.5的参数 很完美
3.customize memory settings(自定义自动内存管理阀值。如何设置可以看0.8.5设置教程,新版SSSWITCH这次多了一次设置,会先出现手机唤醒时候的自动内存管理阀值自定义,共8项?我依旧是 8 12 16 12 12 82 90 98),输入完后接着会出现手机屏幕关闭状态下的自动内存管理阀值自定义,这个阀值我建议大家就一路回车,保持默认值就好,这个默认值我试用下来很不错)
这次新版增添了屏幕关闭下的RAM阀值定义,应该是为了防止手机睡眠下有些不想关闭进程被杀掉。现在在屏幕唤醒状态下使用灵敏的自动内存参数保持RAM。屏幕关闭下使用保守的自动内存参数防止进程误杀,双管其下。作者VOKU提供了一个很不错的内存控制方式
4.customize I/O settings (自定义i/o设置预读加速功能 I/O算法还是保留默认吧,一路回车会出现一个新选项 CUSTMIZE READ-AHEAD FOR ALL?这个是加速系统内置存储读取文件速度
的,默认是1 512K,我比较了下,有时文件管理器浏览文件时会微卡,我目前选择了256K,一切正常,建议大家选择2 256K,再回车下去,就是SD-READAHED(SD读取加速)了,这个我一直觉得坑爹,还是选128K,默认是1024K貌似。
5.customize swap setings (自定义SWAP设置 这个就是调整SWAPNESS(SWAP交换率的 具体设置参照拙贴0.8.5教程 不赘述?我目前是选6?60%交换率,因为这个是LINUX默认值)

3 THEME /APP (主题/桌面程序)–主要作用为切换大家喜爱的主题/桌面程序/电子邮件端口
输入 3 回车后进入 会出现 3个子菜单
1.SWITCH theme(切换主题)
2.SWITCH luncher (切换 桌面程序)
3.SWITCH E-MAIL CLIENT(切换电子邮件端口)
这个功能我不太用,喜欢的同学可以去玩玩,

4 INFO/BACKUP (信息/备份)–这个选项大家可以查看到手机当前的各SSSWITCH功能模块参数模式/状态。也可以把当前的设置备份到SD卡,以便日后恢复
输入 4 回车后进入 会出现 3个子菜单
1.DISPLAY CURRENT SETTINGS (显示当前设置,大家可以在这里看到自己的自定义参数设置有没有设置成功)
2.DISPLAY STATISTICS(显示(系统)状态)这个没什么必要,大家打开一些系统信息软件就可以查看当前手机RAM多少/ROM剩余多少/SD卡剩余多少什么的
3.save/view/load SSSWITCH settings on sd card(保存当前设置到SD卡/查看/恢复 在SD卡的SSSWITCH设置) 打过仙剑98的,SAVE/LOAD**,大家都懂的呵呵

5 APPLY CHANGES AND EXIT?(保存设置并退出)?大家所有的自定义参数设置完后,请记得回车返回主菜单,输入 5 保存设置,否则白搭。这个就是0.8.5的第 10 选项!不
赘述了。

在 三星I5700 上手动安装openvpn

      因为三星没有完美的I5700 v#p#n的驱动,导致I5700没办法使用自带的v#p#n只能使用OPENv#p#n。每次OPENv#p#n安装之后都无法连接到最后总提示FATAL:ifconfig failed:can’t excute the extenal program.在各个论坛上发帖寻求帮助也无果,只能自己搜索了.还好,找到了手动安装的方法(前提是你的ROM内核必须自带 tun.ko 模块否则无法使用openv#p#n,则需要自己编译 tun.ko )

首先把用数据线连接电脑,打开CMD,进入ADB SHELL 目录,然后执行:

adb remount /system
adb push openv#p#n /system/xbin/
adb shell
mkdir /system/xbin/bb
ln -s /system/xbin/ifconfig /system/xbin/bb/ifconfig
ln -s /system/xbin/route /system/xbin/bb/route
ln -s /system/xbin/busybox /system/xbin/ifconfig
reboot

P.S: openv#p#n可以在此连接下载:http://www.hifact.com/openv#p#n