最近拿到一台电信版Galaxy S3,看着满屏的天翼预装APP和阉割掉了Google GMS服务包感觉极其纠结,Google了一番幸好可以刷台湾亚太电信版S3系统并且自带了Google GMS服务包,以前一直用的是原生系统,既然刷机了干脆自制个精简版的系统试试?
三星Android手机不同型号和版本官方最新发布的ROM都可以在这里找到。
自制ROM的步骤(电脑操作系统为Ubuntu)概括为:
在这里根据手机型号找到合适的官方原生系统,如电信版Galaxy S3 SCH-I939,注意Region栏目,APT为台湾电信亚太版本,CTC就是中国电信版本。
提取系统文件需要用到ex4_utils,其作用是提取和打包三星.img格式文件。
解压系统文件,可以得到:cache.img, hidden.img, modem.bin, recovery.img, system.img, boot.img
tar xvf xxx.tar.md5
转换三星.img格式为Linux可读取的.img格式
./simg2img system.img newsystem.img
挂载转换过的img格式
// 新建一个临时挂载文件夹
mkdir temp
// 将newsystem.img挂载到临时文件夹
mount -o loop newsystem.img temp
进入temp/app/目录,可以看到很多.apk文件,这里就是系统预装的APP啦,删除那些预装的天翼APP吧。嘿嘿……
可以去google搜索三星系统精简列表得到一份可安全删除的apk文件列表。
想要添加自己的apk到rom中去预装也很简单,将apk拷贝到temp/app目录下即可(如果apk中lib目录有.so文件,需要解压缩出来放到temp/lib目录下)。
如果在ubuntu图形界面下删除apk,会碰到权限问题提示没有权限删除文件,要用root登录才能删除,有个小技巧就是直接在终端下运行:
$sudo nautilus
打开的新窗口就是root权限了。
将整理好的temp文件夹打包回三星的.img镜像文件
./mkuserimg.sh -s temp system.img ext4 tempdir 1536M
打包成自己的系统rom
tar cvf 自己ROM的名称.tar cache.img hidden.img modem.bin recovery.img system.img boot.img
三星可以使用odin进行刷机,XDA论坛上各版本下载地址点这里。
试用了一天,感觉良好。系统快了,后台服务少了,电池使用时间长了。;)
其实写这么多,只为测试下新的Markdown编辑器。:-)
越狱后iOS可以以编程方式安装其它IPA程序(像AppStore一样)。在iOS5中可以直接调用MobileInstallationInstall进行安装,但到iOS6中调用此方法后台会报错,提示:
required to have an entitlement named "com.apple.private.mobileinstall.allowedSPI" with an array containing "Install" to call command Install
解决方法可以参见:
上述解决方法中有几点需要注意:
1. SDKSettings.plist文件的位置在xcode下各个版本是不同的。
2. 使用ldid之前,需要在xcode中先把Command Line Tools装好。
3. 如果下载文中提到的ldid进行签名,是不会成功的,也不会报错。(在这个地方纠结了几个小时)。
4. 能正常使用的ldid下载地址:https://github.com/downloads/rpetrich/ldid/ldid.zip
越狱后的iOS可以实现像企业证书分发程序那样通过访问网页点击按钮一键安装APP,比如那些第三方应用市场“同步推”等等。
先决条件:
步骤:
1. 新建html页面,加入以下内容(url中的app.plist就是下面新建的app.plist文件路径):
<a href="itms-services://?action=download-manifest&url=http://since2006.com/test/app.plist">点此安装</a>
有时不在一台机器上敲代码碰到需要真机调试的情况时,另一台机器由于没有安装证书而不能进行调试。映像中试过用从新申请证书的方法生成另外一张新证书但似乎一生成后原有的机器又不能调试了,最近发现一种极其简单的方法可以将一个证书在多台机器上使用(黑苹果中一样使用哦)。
新版xcode创建项目时,默认只支持armv7架构的设备。
ARMv7 = iPhone 3GS/4, iPod 3G, iPad
ARMv6 = iPhone 2G/3G, iPod 1G/2G
如果需要在老设备中调试,可以这样解决: