编译CM10 for W22PRO的相关过程记录

先说一下git的操作好了,这个git其实我也是今年刚开始用,之前都是用svn的(subversion其实也不太会……说来这些版本控制工具我都记不住指令啊……)。

因为蓝魔W22PRO用的是Amlogic MX(meson6)方案,而Christiantroy已经专心耕耘艾诺精灵2很久了,他在github上的很多项目,只要有jellybean-aml分支的基本就是需要fetch拿来用的。不过有一点问题的就是,最近这位大哥在搞CM10.1去了,repo都没有更新上游(CyanogenMod)的改动,所以其它的部分如果用CyanogenMod的上游代码就会造成一些问题。还好有强大的git帮我们合并这些更改。

首先进入一些需要为Amlogic修改的目录(因为我已经做了这项工作了,减轻了各位的压力,大家直接fetch我的那些github项目就好了),git checkout jellybean-aml 确保在jellybean-aml这个分支里面,然后git remote -v看一下有没有上游CyanogenMod的repo,没有的话得先git remote add NAME git://XXXXXX 添加一个NAME远程仓库(这些全部大写的字母都是可以自行变动的),然后git fetch NAME把源码下载到本地,只需简单的一个git pull NAME jellybean就能把NAME仓库的jellybean分支合并到当前分支(jellybean-aml)了!如果有冲突的话会提示的,一般不会有冲突会自动merge并做一个ref节点,如果你没有自己开项目就这样好了。如果有的话(比如我),就需要git push MINE提交这次变动到自己的远程仓库(MINE)。再说一下啦,我已经做过这项工作了,短期内大家直接取我的项目源码就可以了。

上面讲了那么多git的废话……下面讲一下编译。

如果你还没有W22PRO的源码,请上我的非官方项目clone下来到合适的位置(如果你这不知道就不要看这篇文章了,谢谢……)

cd /PATH_TO_CM/
 . build/envsetup.sh
 lunch
 make -j4

老掉牙的几个步骤……lunch菜单选择cm_w22pro-userdebug那个就好了(输入数字回车),make -j4表示用四个线程并行编译。

在我的笔电上每次从头完整的编译要2~3个小时。我的硬件配置?AMD 四核 2.0GHz,4G RAM(显然有点小,为了避免内存消耗完毕而出错终止,强烈建议创建一个swap分区或者swap文件,大小至少1G,建议4G以上)。

还没有开始编译的记住了,放CM/Android源代码的那个分区建议40G以上,而且必须是EXT2/3/4或者BtrFS、XFS之类的Linux分区!

编译蓝魔W30的CM10之源码准备

大体参考CM的Wiki: http://wiki.cyanogenmod.org/wiki/Galaxy_Nexus_%28GSM%29:_Compile_CyanogenMod_9_%28Linux%29

提示一下就是repo这个脚本需要翻墙才能下载成功。

下面简单写一下终端操作的笔记:

#获取CM10的代码
repo init -u git://github.com/CyanogenMod/android.git -b jellybean
repo sync
#获取三星Galaxy S III的源码(因为W30的CPU和Galaxy S III是一样的,这里偷懒直接用CM的脚本获得相关源码)
. build/envsetup.sh && breakfast i9300
#获取CM的预编译文件
vendor/cm/get-prebuilts

好了,现在要做的就是这么多了。接下来就是对Galaxy S III的设备源码部分进行修改,使之匹配W30, 当然,要新开一个目录,等我初步完成后会在github上托管的,到时候还会回来更新本篇文章。 W30开源项目 (fork & play!)

还需要获取三星的部分专利源码,找了半天,终于在GitHub找到了一个项目有的,

git clone git://github.com/TheMuppets/proprietary_vendor_samsung.git -b jellybean

同步这个项目后,把里面的文件夹都放在vendor/samsung/下面,然后修改vendor/samsung/smdk4412-common/proprietary/Android.mk这个文件,把ifneq ($(filter i9300 n7100 n8000 n8013,$(TARGET_DEVICE)),)改成ifneq ($(filter i9300 n7100 n8000 n8013 w30,$(TARGET_DEVICE)),) ,也就是在filter后面加上w30,不然的话不能正确调用一些共享依赖库会编译出错。

制作蓝魔W13PRO兼容包笔记

因为没有W13PRO的机器,靠论坛的朋友测试,制作了五次兼容包才成功。下面简单说一下心得什么的。

底包都是Christiantroy为艾诺精灵II制作的固件(CM10和AOKP),兼容包里面的东西是取自之前夜游(wisunny)编译的AOKP(尝试过官方固件的东西,根本开机都不行。。。),想研究的话,大家可以拆开我的兼容包,对照本笔记还是很有帮助的。

首先要解决的是内核,直接拿夜游的boot.img就可以了,我尝试解开boot.img结果发现失败了,还不知道怎么回事,可能做过什么加密之类的吧。

其次让我们进入system目录下吧,lib下的libhardware_legacy.so这个文件是和WiFi的驱动加载有关的,这个文件决定了开启关闭WiFi要加载和卸载的驱动模块,因为底包的WiFi驱动都是dhd.ko,而W13PRO用的WiFi驱动是wlan.ko!

usr/idc下面那个pixcir168.idc文件是和触摸屏有关的,也必须带上。

lib/modules下都是对应内核的模块,直接从夜游AOKP里取的,etc文件夹下的东西大家看一下就明白了,只是提一下里面be_movie和be_photo是SONY Bravia Engine,不算“兼容”的内容,应该算做“补丁”部分。

bin下面的set_display_mode.sh是很关键的,设置屏幕分辨率的,如果数值不对会造成显示画面太小或者太大。

回到第一层,META-INF/com/google/android/updater-script这个脚本文件包含了刷机时要做的事情,如果有人修改了补丁包重新打包,记得要看看该更改权限的地方有没有更改。最外面的addition脚本文件则是针对build.prop进行修改的,用的是sed这个强大的文字处理工具,其实我也不太懂sed,边Google学边写的。

最后说一下刷GApps失败的问题,估计是万恶的system分区(UBI格式)没有被成功加载,所以我解包重新修改了updater-script的相关函数。

另外要提到的就是/sbin/下可能并没有sh这个文件或者其软链接,因此脚本文件的首行的#!/sbin/sh应该改成#!/system/bin/sh,以免脚本文件根本无法执行。

下载地址神马的上蓝魔之家去看我的帖子

Android手机平板上设置Exchange收发Hotmail(Outlook)邮件

现在微软的邮件服务已经升级到outlook.com了,不过原来的hotmail还暂时保持了服务。

不喜欢Hotmail的客户端怎么办呢……用Android自带的“电子邮件”这个应用就可以了。

  • 新建一个Exchange用户
  • 域用户名那一栏填写“XXXX@outlook.com”或者”XXXX@hotmail.com”就可以了(不包含引号)
  • 密码填邮箱密码
  • 服务器地址填  m.hotmail.com

可以啦,其他的不用改动,然后设置一下要同步的内容,我是只勾选同步电子邮件,毕竟日历这些我还是靠Google提供的服务完成的。

蓝魔W22PRO的CyanogenMod 9发行注记

首发在蓝魔之家了:http://www.ramosfans.com/thread-39349-1-1.html (含最新版的下载地址)。

本文属于发行注记。

1.欢迎使用CM9 for W22PRO

CyanogenMod是地球上广为人知的Android开发团队,具有超强的社区协作和开放源代码的精神!基于CM代码并加以修改以适用于蓝魔W22PRO的非官方版由@librehat编译制作完成。

秉承着开源精神,相关代码均托管在GitHub上。你可以访问https://github.com/librehat 查看@librehat在GitHub上的各个项目。

2.CM9 for W22PRO的亮点

  • 支持EXT4分区格式
  • 支持OTG外接蓝牙
  • 支持openVPN和l2tp VPN
  • 加入了大量驱动模块
  • 修正组合条隐藏的功能
  • 利用Amlogic的代码实现多媒体硬解播放
  • 高速平滑的触摸体验,完整的旋转动画
  • SONY Bravia Engine
  • 完美继承CM9的各种特性

3.性能与续航

  • 最高频率提升到1.5GHz
  • init.rc的优化与改良
  • 默认CPU调节模式为Conservative
  • 改善表现的同时保证了正常使用达一天的续航时间

4.反馈

推荐在蓝魔之家的反馈专帖后跟帖反馈,当然你也可以在我的推他这里反馈。

5.刷机要点

最佳刷机办法是按照这个帖子制作镜像卡,然后将CM9压缩包解开,用CM9里面的update.zip替换制作好的镜像卡根目录下的同名文件。镜像刷机办法是最保险最安全的(据机油称)。

其次可以直接将压缩包解压,文件放在TF卡根目录进行常规卡刷

此外可以参考如何避免内置存储器以及个人数据被清除。(从官方固件刷到CM9请勿这样操作,仅适合CM9的旧版本升级到CM9的新版本)

6.多种分区格式支持

  • FAT32
  • NTFS
  • EXT4

7.OTG功能

  • OTG键盘
  • OTG鼠标(目前存在反转问题)
  • OTG外接U盘等存储器
  • OTG手柄
  • OTG外接GPS(未测试)
  • OTG外接蓝牙

8.全屏隐藏组合条

设置->系统->组合条,可以设置使底部组合条隐藏。如果修改了build.prop中的ro.disable_permanent_hidebar=0使其永远隐藏的话,注意需提前使用改键位的工具让音量键充当返回键的功能。

9.本地和网络的多媒体解码

  • 支持H.264 High Profile解码(PPS高清源播放)
  • 支持优酷HD超清播放(目前优酷的编码方式不是HP不能硬解)
  • 支持多种格式的720P、1080P硬解播放(MKV等格式的完美硬解,RMVB格式的1080P需通过第三方播放软件软解播放)
  • 充分利用CPU的NEON和VFPv3特性

10.来自CM9的特性

  • 绚丽的开机动画
  • Apollo音乐播放器和DSP音效管理器
  • 通知栏的自定义
  • 支持CM9的主题系统
  • Trebuchet桌面启动器
  • 改进的支持WebGL的浏览器(直接访问y.qq.com就能在线听歌)
  • 其他代码上的改善和程序的优化等

11.与官方固件的主要差别

  • 去除了“媒体播放器”,改用amlogic的lib库使视频播放器实现硬解
  • 不再支持硬解版的Flash Player插件
  • 外放音量显著变大
  • SD卡和内置存储器的挂载点变动
  • 屏幕旋转等有了动画效果(更为完整的Android体验)

在Linux下修复半砖的蓝魔W22PRO

今天刷其它机器的刷机包,不出所料直接“半砖”(屏幕黑掉而已,连接电脑还是有adb的,机身有发热,说明并未彻底死掉)。

结合之前发布的变砖修复工具和镜像就能恢复的。可是不想重启到Windows下弄,怎么办呢?装一个qemu-img就可以解决了~以Fedora Linux 17为例:

su -c 'yum install qemu-img -y'

然后在终端下执行:

qemu-img convert -O raw W22pro_ICS.w22ref.20120906.vhd w22pro.raw

接着把TF卡插在读卡器连接电脑(本例中Linux识别TF卡为/dev/sdc)

su -c 'dd if=w22pro.raw of=/dev/sdc'

等待终端提示写入完成,接下来的步骤和Windows下一样,修改文件、复制aml_autoscript等等。

弄好修复卡后,插入平板,按住音量-键和电源键不动大概10秒,会看到W22PRO MX双核之类的Logo出现然后就可以松手了,一直等其自动完成。

 

P.S. 修复镜像下载见蓝魔之家论坛帖子

少年,在Android平板上编程吧(Python篇)

  1. 在Play商店搜索安装DroidEdit,当然你要是下载盗版的DroidEdit Pro我也无所谓。
  2. 然后下载并安装Python3ForAndroid (是时候从Python2转到Python3了)
  3. 确认平板联网,在平板上打开Python3forAndroid,等它获取最新的版本后,点击Install按钮然后会自动下载一些压缩包并解压安装好Python3 for Android(我装了之后Python的版本是3.2.2)
  4. Play商店安装Terminal(Linux下用终端习惯了,不装这个还真不爽)
  5. 下载bash (XDA帖子附件) ,解压,将里面的bash用R.E.管理器复制到/system/bin/下,并修改权限使其可执行。
  6. 打开Terminal,设置终端shell使用bash而不是系统内置的sh
  7. 如果有空,可以安装一个完整版的busybox,替换/system/xbin下的阉割版,并用alias命令让chmod、cp、mv、ls等常用的Linux命令改成完整的busybox版而不是Android阉割版。
  8. 最后一步比较重要,关系到能否在终端下简单的运行Python命令,下载我给的这个文件(盛大网盘已死)
  9. adb push python3 /system/bin
  10. 然后用R.E.管理器修改python3权限使其可执行

在Terminal里测试python3命令吧,如果出现下图所示界面就成功了。图已破,推他已死。

51-android.rules详解

贴出我的51-android.rules(/etc/udev/rules.d/下)

SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4e22", SYMLINK+="android_adb", MODE="0666"

主要说说里面idVendor和idProduct的值,其它的照抄就可以了,但是这两个值和你的Android设备有关,我这里的设备是蓝魔W22PRO。

设备打开USB调试,插上USB连接到你的Linux PC,在终端里输入lsusb

你可以找到类似于下面这一行的输出结果:

Bus 001 Device 008: ID 18d1:4e22 Google Inc. Nexus S (debug)

这里ID后面18d1就是idVendor的值,而4e22就是idProduct的值。

当然,你要是问怎么确定Android设备是哪一行这种没营养的问题……那好,你不会连USB之前lsusb然后连接后再lsusb看看啊?

注记:这是本人亲测在Fedora 17通过的,网上看到的一些我用了都没效果,希望这篇文字对各位有点作用,至于编完这个文件要chmod +x这些应该不用说了吧?对了,udev要重载规则,然后adb的server也要重启一下(重新插拔usb的话就不用重启adb了)。

补充:

udev规则重载通过下面这条命令:

sudo udevadm control --reload-rules