cm10.2和cm11源码问题集合

说明

应该是2016年之前的记录,之前没有写文档记录的习惯,都是随手记录的txt文件,所以没有图片、格式等。甚至现在看来有些地方逻辑不通(可能还因为年少轻狂,有些偏颇的话语),但是这些与现在的我不重要了,所以也不打算再复现、推理,重新编辑等,仅仅是在旧硬盘中发现,删除之前觉得可能还有点价值,记录下来吧。

均以小米2为环境测试。
10.2:
1:参见ubuntu文档目录的安卓源码编译,下载;cm官方的清单有些安卓分支没有了,需要改分支。
2:使用如下分支产生的问题,这个原本是好不容易找到的以前秋叶的cm10.2的代码,可是可能是时间久了,cm的代码再更新而这下面的代码没有更新过,所以再同步下来的cm源码和以前的已经不一样了,以前cm10是用的4.3,现在同步下来就是4.3.1:

--------------------------- 部分编译时期产生的错误解决办法参见ubuntu文档目录的安卓源码编译,下面说下编译后存在的问题: 1:录音3秒。 2:屏幕花屏,就是frame更新时就花屏,静止时颜色失真。 3:phone一直停止,导致不停弹出对话框无法操作,删除phone.apk可以进系统,除了没有基带,无法使用电话相关的功能其他算是都正常。 ----------------

============================================
以下是使用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,包括了超频和编译内核。

应该没其他的问题了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值