说明
应该是2016年之前的记录,之前没有写文档记录的习惯,都是随手记录的txt文件,所以没有图片、格式等。甚至现在看来有些地方逻辑不通(可能还因为年少轻狂,有些偏颇的话语),但是这些与现在的我不重要了,所以也不打算再复现、推理,重新编辑等,仅仅是在旧硬盘中发现,删除之前觉得可能还有点价值,记录下来吧。
均以小米2为环境测试。
10.2:
1:参见ubuntu文档目录的安卓源码编译,下载;cm官方的清单有些安卓分支没有了,需要改分支。
2:使用如下分支产生的问题,这个原本是好不容易找到的以前秋叶的cm10.2的代码,可是可能是时间久了,cm的代码再更新而这下面的代码没有更新过,所以再同步下来的cm源码和以前的已经不一样了,以前cm10是用的4.3,现在同步下来就是4.3.1:
============================================
以下是使用m1cha的device/xiaomi/aries和内核源码和vendor_xiaomi编译后屏幕正常了。
phone出错log:
E/AndroidRuntime( 1875): java.lang.RuntimeException: Unable to get provider com.android.phone.MSimIccProvider: java.lang.ClassNotFoundException: Didn’t find class “com.android.phone.MSimIccProvider” on path: DexPathList[[zip file “/system/app/Phone.apk”],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
之后对比别人的cm10.2发现问题出在init.rc上export BOOTCLASSPATH 中没有/system/framework/telephony-msim.jar,而init.rc文件是在system/core/rootdir,所有理论上应该修改这个init.rc就可以了,而我是直接下载cm官方的替换了。因为不清楚还有那些改动。
至于报的错很奇怪,因为com.android.phone.MSimIccProvider就在phone里面,原以为是proguard优化掉了代码,但是反编译后确实存在的。
再然后在上面两个问题解决的环境下,下载m1cha的hardware_qcom_audio-caf解决录音3秒问题。在这个环境下测试貌似cm官方hardware/qcom/audio-caf录音完全没有声音。
原来的秋叶随风提供的cm10.2的hardware/qcom/audio-caf好像也是录音完全没有声音。
未解决问题:
cm10.2使用fm收音机:
1:下载m1cha的android_packages_apps_fm,这个只有cm10.2分支。放在packages/apps/fm编译出运行出错,缺少依赖库libqcomfm_jni,之后把cm11的fm下载下来,是在hardware/qcom/fm里面有jni就是需要的,之后会报找不到类,那是确实qcom.fmradio.jar,还有个qcom.fmradio.xml;可以手动编译或者把这几个模块在device.mk中定义出来。qcom.fmradio.xml最后在手机/system/etc,qcom.fmradio.jar就在/system/framework,但是还是会找不到类,我的解决办法是把qcom.fmradio.jar加到BOOTCLASSPATH中,参见init.rc。是可以启动了,只是还是无法使用fm,弹出对话框让重试,应该还是底层代码有问题吧。
2:上面cm11的hardware/qcom/fm里面还有3个apk源码,fmapp,fmapp2,FMRecord,看Android.mk是使用fmapp2和FMRecord,fmapp2应该就是第2个版本的,只是fmapp2和fmapp都编译失败,java代码错误也没什么明显错误,提示更像java版本的问题,具体错误记不清类似泛型转换的错误。但是确实使用的java7,同样代码cm11也编译没问题。
3:对比cm11的device修改cm10.2:
在BoardConfig.mk添加了,忽略i add下面的注释,拷贝来的因为懒得再去除了:
I add FM
#AUDIO_FEATURE_DISABLED_FM :=
#BOARD_HAVE_QCOM_FM := true
#QCOM_FM_ENABLED := true
在device.mk添加
I add FM
PRODUCT_COPY_FILES +=
device/xiaomi/aries/init.aries.bt.sh:system/etc/init.aries.bt.sh
device/xiaomi/aries/init.aries.fm.sh:system/etc/init.aries.fm.sh
I add FM
fmradio support
#PRODUCT_PACKAGES += \
qcom.fmradio \
libqcomfm_jni \
FM2 \
CMFMRadio \
FMRecord
I add FM
transmitter isn’t supported
PRODUCT_PROPERTY_OVERRIDES +=
ro.fm.transmitter=false
在init.aries.rc添加
I add FM
service fm_dl /system/bin/sh /system/etc/init.aries.fm.sh
class late_start
user system
group qcom_oncrpc system
disabled
oneshot
复制init.aries.fm.sh。因为FM2编译失败,所以把FM2模块去掉,之后编译的系统一直卡在开机动画,看log一直是
D/AudioHardwareALSA( 181): qcom.audio.init is set to
D/AudioHardwareALSA( 181): Sleeping for 50 ms
I/ServiceManager( 563): Waiting for service media.audio_policy…
循环很多。可能是alsa错误阻塞线程了?
后续:
貌似秋叶的system/core加了一些功能和汉化?比如电源菜单中的热重启和cpu频率选项的汉化?不是很确定。
根据错误提示,把FM2模块的fm/fmapp2/src/com/caf/fmradio/FMTransmitterService.java中出错一行的Override注释掉可以编译通过了
//@Override
public void setEnabled(boolean enabled) {
}
但是还是卡在动画。
11.0:
源码下载略过,按说这个版本应该算官方支持的,lunch列表也有aries,但是breakfast aries是不会成功下载device和内核的,还是要自己手动下载。不知到是不是repo的问题。
另外local_mainfast里面配置都不生效,不确定是不是repo的问题。
还需要根据device/cm.dependencies下载
[
{
“repository”: “android_device_qcom_common”,
“target_path”: “device/qcom/common”
},
{
“repository”: “android_kernel_xiaomi_aries”,
“target_path”: “kernel/xiaomi/aries”
},
{
“repository”: “android_hardware_qcom_fm”,
“target_path”: “hardware/qcom/fm”
}
]
在cm的github上找android_device_qcom_common,下载后的目录device/qcom/common,如此。
vendor在m1cha的github下载。
java版本1.7,不然泛型问题还是什么的报错,不过我的java1.6,1.5都支持泛型了?
记得好像可以一次编译成功的,有报两个编译内核的错误,不影响,就是关闭模块的问题,具体看我的github上米2超频内核补丁的readme,包括了超频和编译内核。
应该没其他的问题了。