当前位置: 首页 > 工具软件 > CyanogenMod > 使用案例 >

CyanogenMod 10.1源码下载和编译

宰父深
2023-12-01

说明:1)本流程以编译三星Galaxy Note II (N7100)的ROM为例来介绍编译流程

      2)假定CM10.1所在代码的根目录为/root/cm-10.1

 

一、CM-10.1源码下载

网上很多相关资料,参考

http://blog.163.com/zhou_411424/blog/static/1973621562012111782412775/

Repo工具下载好后开始取cm的源码

执行:repo init -u git://github.com/CyanogenMod/android.git -bcm-10.1-m cm-10.1.0-RC3.xml

初始化仓库后,接着执行repo sync来下载代码,

问题来了,半天下不动,最后还报错,解决办法在主机加入gmail账号的授权,步骤如下:

1.浏览器登录https://android.googlesource.com/new-password,并用gmail帐号登录;

2.点击网页上的“允许访问”,得到类似:

  

------涂鸦部分为个人gmail帐号-------
3.把得到授权后的username和password粘到~/.netrc文件里,如果没此文件,新建。
即加入下面部分:

再次执行repo sync  这次能下载了.....等到代码下载完成。

二、CM-10.1源码编译

cd /root/cm-10.1/vendor/cm

./get-prebuilts

cd ../..

source build/envsetup.sh

breakfast n7100       //注意这一步会链接网络并下载三星N7100的设备驱动和内核,具体体现在代码:device\samsung\n7100这个目录代码会自动生成

cd device\samsung\n7100

./extract-files.sh     //提示没有device\samsung\smdk4412-common目录

好吧继续寻找smdk4412-common这个目录

打开网址https://github.com/CyanogenMod

搜索smdk4412-common,搜到了一条,这就是我们要找的

cd device/samsung

git clone https://github.com/CyanogenMod/android_device_samsung_smdk4412-common-b cm-10.1

记得改目录名字

mv android_device_samsung_smdk4412-common smdk4412-common

好的,device\samsung\smdk4412-common这个目录的代码搞定

 

接下来开始编译

(如果要编译eng版本,需要执行choosecombo命令,一路回车下去即可)

make -j42>&1 | tee build.log   //网上有资料说先执行croot ,然后再brunch n7100来编译,实际测试过,也行。

中途发现报错:

build/core/product_config.mk:238: ***_nic.PRODUCTS.[[device/samsung/n8000/cm.mk]]:"hardware/samsung/exynos4x12.mk" does not exist。 停止。

大概意思就是少了hardware/samsung目录,cd hardware发现确实没有samsung目录,好吧!像上面寻找smdk4412-common目录一下,寻找samsung目录,搜索hardware_samsung,出现的第一条就是我们要找的,

cd hardware

git clone https://github.com/CyanogenMod/android_hardware_samsung-b cm-10.1

搞定。

 

接下来继续编译

make -j42>&1 | tee build.log

中途又报错:

找不到vendor/samsung/smdk4412-common/proprietary/sbin/cbd

Cdvendor/samsung/smdk4412-common/proprietary/sbin/ 发现确实是空目录,基本上smdk4412-common这个里面只有目录结构,没有文件,好吧,到网上去下载吧

路径:https://github.com/DonkeyCoyote/proprietary_vendor_samsung

Git clone https://github.com/DonkeyCoyote/proprietary_vendor_samsung

默认是4.3的分支。Ok,没问题。

记得改文件名!

 

接下来继续编译吧!

这次不再差目录了,说明三星有关的目录文件都齐了。。。

 

中途又报错:

target Dex:framework

make: ***[out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/noproguard.classes-with-local.dex]Killed

打包dex文件报错,内存不足造成,网上有很多解决方法,不过貌似不行

最后解决方法:重新编译make 2>&1 | tee build.log 

不要采用四线程.....

Ok,这次编译通过!

 

生成ROMzip

执行 make otapackage 2>&1 | tee ota.log

顺利的话,这步执行很快,十分钟搞定!会在out/target/product/n7100/目录下生成xxxx.zip包。

 

Ps:下次如果想单独编译某个模块,必须先在android根目录下执行以下命令来配置环境变量:

. build/envsetup.sh

breakfast n7100

choosecombo  //一路回车下去即可。

 

参考资料:http://www.tuicool.com/articles/FRza2q

         http://blog.sina.com.cn/s/blog_4ba5b45e0102ejbb.html


完整编译成功代码后,后续要单独编译某个模块,只需如下操作:

. build/envsetup.sh
breakfast n7100
choosecombo release cm_n7100 eng

 

三、解决信号强度显示问题

1、用上面步骤中生成的xxxx.zipROM包刷机,启动后发现信号强度显示还是有问题。

解决方法:找到6193.zip包,解压,替换手机内/system/lib/libril.so库,具体命令:

adb remount  //执行后输出 remount succeeded

adb push 6139目录/system/lib/libril.so/system/lib

或者

先拷贝到手机sd卡上,再通过三方应用Root Explorer拷贝至/system/lib目录。

 

重启手机后发现信号强度正常。

2、蓝牙开关失效,一直反复开启关闭的问题

解决方法:对比cm-10.1.0-RC3.xmlcm-10.1.xml两个版本的蓝牙应用测和框架侧代码,目录为

         packages/apps/Bluetooth

        frameworks/base/core/java/android/bluetooth

        也就是将cm-10.1.0-RC3版本的蓝牙应用测和框架侧代码更新至cm-10.1版本,改动不会太大。

修改之后,分别编译packages/apps/Bluetoothframeworks/base目录,分别生成Bluetooth.apkframeworks.jarpush到手机

对应的目录,然后重启手机,发现蓝牙问题解决。

 类似资料: