since.2006  

最近拿到一台电信版Galaxy S3,看着满屏的天翼预装APP和阉割掉了Google GMS服务包感觉极其纠结,Google了一番幸好可以刷台湾亚太电信版S3系统并且自带了Google GMS服务包,以前一直用的是原生系统,既然刷机了干脆自制个精简版的系统试试?

三星Android手机不同型号和版本官方最新发布的ROM都可以在这里找到。

自制ROM的步骤(电脑操作系统为Ubuntu)概括为:

  1. 下载原始系统
  2. 提取出原始系统中文件
  3. 删除文件列表中不必要的APP
  4. 封装成自制系统
  5. 刷机

下载原始系统

这里根据手机型号找到合适的官方原生系统,如电信版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

删除文件列表中不必要的APP

进入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编辑器。:-)


Posted by hee at 17:09 PM | Permalink | 评论(0)

越狱后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

解决方法可以参见:

http://stackoverflow.com/questions/13817569/how-to-programatically-install-a-ipa-file-in-ios-6/15062538#15062538

http://stackoverflow.com/questions/14871748/how-do-i-change-my-applications-entitlements-to-com-apple-backboard-client

上述解决方法中有几点需要注意:

1. SDKSettings.plist文件的位置在xcode下各个版本是不同的。

2. 使用ldid之前,需要在xcode中先把Command Line Tools装好。

3. 如果下载文中提到的ldid进行签名,是不会成功的,也不会报错。(在这个地方纠结了几个小时)。

4. 能正常使用的ldid下载地址:https://github.com/downloads/rpetrich/ldid/ldid.zip

 

Posted by hee at 10:03 AM | Permalink | 评论(30)

越狱后的iOS可以实现像企业证书分发程序那样通过访问网页点击按钮一键安装APP,比如那些第三方应用市场“同步推”等等。

先决条件:

  1. 已越狱(Jailbreak)
  2. 越狱后已安装Appsync

步骤:

1. 新建html页面,加入以下内容(url中的app.plist就是下面新建的app.plist文件路径):

<a href="itms-services://?action=download-manifest&url=http://since2006.com/test/app.plist">点此安装</a>

阅读全文 "越狱后制作iOS程序在线安装功能" »

Posted by hee at 11:11 AM | Permalink | 评论(0)

有时不在一台机器上敲代码碰到需要真机调试的情况时,另一台机器由于没有安装证书而不能进行调试。映像中试过用从新申请证书的方法生成另外一张新证书但似乎一生成后原有的机器又不能调试了,最近发现一种极其简单的方法可以将一个证书在多台机器上使用(黑苹果中一样使用哦)。

  1. 打开有证书机器A的xcode -> Organizer
  2. 在A机器Organizer左边的TEAMS下可以看到已安装的证书,点击Export,设置密码和保存位置。
  3. 在另外一台机器B上打开xcode -> Organizer
  4. 在B机器Organizer左边的TEAMS下点Import,选择第2步导出的文件,输入密码。
  5. 测试,收工。

 

Posted by hee at 23:09 PM | Permalink | 评论(0)
正常情况下发布测试版给用户需要问到对方设备ID并添加到开发者证书里去感觉有点麻烦,如果是已越狱过的机器可以使用xcode制作ipa文件,并直接用itunes同步进去,这样方便多了。

  1. 将运行目标选为iOS Device
  2. Edit Scheme -> 选择 Run [App Name] -> Build Configuration下拉框中选择Release
  3. 生成编译文件,Product -> Build
  4. 在任意位置创建一个Payload目录
  5. 进入编译目录,目录这可以找到:XCode -> Preferences -> Locations -> Derived Data
  6. 找到Release-iphoneos目录,将[App Name].app复制到第4步创建的Payload目录下
  7. 压缩Payload目录并改名为.ipa
  8. 双击添加到iTunes
  9. 连接设备,同步进去


Posted by hee at 11:06 AM | Permalink | 评论(6)
真机调试提示:finished running <app name> on iPhone,控制台也没输出报错信息。出现这种情况多半是在高版本xcode下调试老的iOS设备(如iPhone 3G)。

新版xcode创建项目时,默认只支持armv7架构的设备。

ARMv7 = iPhone 3GS/4, iPod 3G, iPad

ARMv6 = iPhone 2G/3G, iPod 1G/2G

如果需要在老设备中调试,可以这样解决:

  1. 删除"info.plist"中"Required device capabilities"下的"armv7"项目
  2. 在"Build Settings"中"Architectures"下添加一项"armv6"

Posted by hee at 01:05 AM | Permalink | 评论(0)