cm12 for 三星n7100编译

学习了这么多其他人的博客,终于编译成功了。技术小白前来分享,有不到位的希望大牛们指正。开源的意义在于分享。本文主要为遇到的错误解决

http://blog.sina.com.cn/s/blog_4ba5b45e0102ejbb.html这篇文章对我的帮助很大,感谢作者
源码是别人给的,所以直接开始编译
cm12编译
1.
对本地库的操作:
android要求的库
更新 sudo yum update
sudo yum install mesa-libGL-devel
sudo yum install libstdc++.so.6
sudo yum install gcc, yum install gcc-c++
sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
由于以上是对于unbunte的安装,fedora里会显示有些包没有。所以又看了fedora官网提供的android编译环境
https://fedoraproject.org/wiki/HOWTO_Setup_Android_Development
yum install glibc.i686 glibc-devel.i686 libstdc++.i686 zlib-devel.i686 ncurses-devel.i686 libX11-devel.i686 libXrender.i686 libXrandr.i686
2.
首先:下载
kernel http://www.github.com/cyanogenmod/android_kernel_samsung_smdk4412
device http://www.github.com/cyanogenmod/android_device_samsung_n7100
下载 android_device_samsung_n7100 到/cm12/device/samsung/目录
Put the kernel in kernel/samsung/smdk4412并且命名为kernel
3.
要求openjdk7,fedora21只提供openjdk8
修改build/core/main.mk
改为requires_openjdk := false
具体:
For building Android, your best bet is to just install the Oracle JDK 7. I downloaded jdk-7u80-linux-x64.tar.gz and put in /opt/oracle/java/.
Then you can just edit build/core/main.mk and force for all cases
requires_openjdk := false
Note that even if you get OpenJDK 1.7 installed on Fedora it returns 'java -version' differently than Ubuntu and you'll have to change the build/core/main.mk check for the version to look for "openjdk" instead of "java" at the beginning of the version.
Using the Oracle JDK is fine, though. It is used for all host types that are not Linux.
4.
错误
build/core/main.mk:118: You are building on a case-insensitive filesystem.
build/core/main.mk:119: Please move your source tree to a case-sensitive filesystem.
build/core/main.mk:120: ************************************************************
build/core/main.mk:121: *** Case-insensitive filesystems not supported. Stop.
solution
Remove this from build/core/main.mk, then compile:
ifneq ($(HOST_OS),windows)
ifneq ($(HOST_OS)-$(HOST_ARCH),darwin-ppc)
# check for a case sensitive file system
ifneq (a,$(shell mkdir -p $(OUT_DIR) ; \
echo a > $(OUT_DIR)/casecheck.txt; \
echo B > $(OUT_DIR)/CaseCheck.txt; \
cat $(OUT_DIR)/casecheck.txt))
$(warning ************************************************************)
$(warning You are building on a case-insensitive filesystem.)
$(warning Please move your source tree to a case-sensitive filesystem.)
$(warning ************************************************************)
$(error Case-insensitive filesystems not supported)
endif
endif
endif
It will disable the case-sensitivity check.
5.
ake: *** 没有规则可以创建“/home/pengfei/work/Android/cm12/out/target/product/n7100/system/bin/gpsd”需要的目标“vendor/samsung/n7100/proprietary/system/bin/gpsd”。 停止
solution
https://github.com/TheMuppets/proprietary_vendor_samsung/tree/cm-12.0
下载n7100和smdk4412-common
直接拷贝到相应的 /vendor/samsung/ 目录下
6.
错误
build/core/product_config.mk:238: *** _nic.PRODUCTS.[[device/samsung/n8000/cm.mk]]: "hardware/samsung/exynos4x12.mk" does not exist。 停止。
** Don't have a product spec for: 'cm_n8000'
** Do you have the right repo manifest?
No such item in brunch menu. Try 'breakfast'
solution
解决办法:缺少samsung硬件基础库。
https://github.com/CyanogenMod/android_hardware_samsung 下载后将里面的文件替换到 hardware/samsung/下面。

7.
[root@localhost android-cm-10.2]# breakfast n8000
including vendor/cm/vendorsetup.sh
build/core/product_config.mk:238: *** _nic.PRODUCTS.[[device/samsung/n8000/cm.mk]]: "device/samsung/n80xx-common/n80xx-common.mk" does not exist。 停止。
Device n8000 not found. Attempting to retrieve device repository from CyanogenMod Github (http://github.com/CyanogenMod).
^X^CTraceback (most recent call last):
File "build/tools/roomservice.py", line 76, in
result = json.loads(urllib.request.urlopen(githubreq).read().decode())
File "/usr/lib64/python2.6/socket.py", line 354, in read
data = self._sock.recv(rbufsize)
File "/usr/lib64/python2.6/httplib.py", line 542, in read
s = self.fp.read(amt)
File "/usr/lib64/python2.6/socket.py", line 383, in read
data = self._sock.recv(left)
File "/usr/lib64/python2.6/ssl.py", line 215, in recv
return self.read(buflen)
File "/usr/lib64/python2.6/ssl.py", line 136, in read
return self._sslobj.read(len)
KeyboardInterrupt
build/core/product_config.mk:238: *** _nic.PRODUCTS.[[device/samsung/n8000/cm.mk]]: "device/samsung/n80xx-common/n80xx-common.mk" does not exist。 停止。
** Don't have a product spec for: 'cm_n8000'
** Do you have the right repo manifest?
由于n8000的很多驱动是基于 n80xx-common 驱动包的,所以需要预先下载 n80xx-common 驱动包,这也是为何 n8000 驱动包那么小的缘故。
https://github.com/CyanogenMod/android_device_samsung_n80xx-common
这里面将 n80xx-common 驱动包下载下来,放到 cm-10/device/samsung/n80xx-common 这个目录下,这个目录本身是没有的,需要新建。
chmod +x android-cm-10.2/device/samsung/n80xx-common/extract-files.sh
https://github.com/CyanogenMod/android_device_samsung_n7100/tree/cm-12.0https://github.com/CyanogenMod/android_device_samsung_smdk4412-common
下载后放到
device/samsung/
8.
一直显示这个错误
make: *** No rule to make target `out/target/product/n7000/kernel', needed by `out/target/product/n7000/boot.img'看看
或者cannot load kernel out/target/product/n7000/kernel
solution
我觉得是因为首先是没有编好内核。
而没能编出来内核是因为我忽略了这一步./extract-files.sh,认为是给电脑编,不需要连接手机,原谅我是小白。
这个脚本的主要作用是将手机中的驱动so库pull出来。
这期间还需要手机的root,国内网站的包刷了,总fail,
这个网站的包能用,下载CF-Auto-Root和Odin 3.09
http://www.ibtimes.co.uk/root-galaxy-note-2-n7100-all-android-4-4-2-kitkat-firmware-1446111
9.
root之后进行./extract-files.sh,依然报错: adbd cannot run as root in production builds
root不彻底
http://stackoverflow.com/questions/25271878/android-adbd-cannot-run-as-root-in-production-buildshttp://forum.xda-developers.com/showthread.php?t=1687590

The problem is that, even though your phone is rooted, the 'adbd' server on the phone does not use root permissions. You can try to bypass these checks or install a different adbd on your phone or install a custom kernel/distribution that includes a patched adbd.
Or, a much easier solution is to use 'adbd insecure' from chainfire which will patch your adbd on the fly. It's not permanent, so you have to run it before starting up the adb server (or else set it to run every boot). You can get the app from the google play store for a couple bucks:
https://play.google.com/store/apps/details?id=eu.chainfire.adbd&hl=en
Or you can get it for free, the author has posted a free version on xda-developers:
http://forum.xda-developers.com/showthread.php?t=1687590
Install it to your device (copy it to the device and open the apk file with a file manager), run 'adb insecure' on the device, and finally kill the adb server on your computer:
% adb kill-server
And then restart the server and it should already be root.
这段英文讲的很详细,大概ia就算第二个网站可以免费下到adb insecure,下到以后直接复制到手机的文件夹里,以便可以直接从手机操作,点击安装起来。运行这个软件,点击两个钩:enable insecure adbd enable at boot.之后要在电脑上面adb kill-server。再重新连接adb shell su。
再进到目录/device/samsung/n7100下,./extract-files.sh。
下面看看怎么编内核
总体流程是这个样子的:
$ cd ~/cm12
$ source build/envsetup.sh
$ breakfast n7100
$ cd /device/samsung/n7100
$ ./extract-files.sh。。。。。。做这步的时候,手机要root。
回到/cm12$ croot
http://ju.outofmemory.cn/entry/226866 这篇文章非常详细并且正确
按照文中所说:进入kernel目录下面,kernel/samsung/smdk4412
make ARCH=arm cyanogenmod_n7100_defconfig
make ARCH=arm menuconfig
cp .config arch/arm/configs/cyanogenmod_n7100_defconfig
make mrproper。。。。。这步不能丢
回到根目录mka bootimage

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值