日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

baidu patchrom项目开发详细教程(Being updated)

發布時間:2023/12/10 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 baidu patchrom项目开发详细教程(Being updated) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

?

?

?

?

?

?

linux64位android開發環境

baidu patchrom項目開發

by: doswhy [百度云ROM官方項目組修訂]
by: colinchen 學習修改

?

?


******************************************************************************
******************************************************************************

1 準備工作 下載所需軟件(均為官方原版,只是離線下載到了百度網盤)

?


1.1 deepin_2013_zh-hans_amd64.iso
http://pan.baidu.com/s/1i3G8Xhz

1.2 jdk-6u38-linux-x64.bin
http://pan.baidu.com/s/1mgBdmR2

1.3 eclipse-jee-indigo-linux-gtk-x86_64.tar.gz
http://pan.baidu.com/s/1dDqYEI1

1.4 android-sdk_r22.6.2-linux.tgz
http://pan.baidu.com/s/1gd66IbD

1.5 bcompare-3.3.4.14431_amd64.deb
http://pan.baidu.com/s/1kTBit7L

?

?

******************************************************************************
******************************************************************************

2 軟件安裝 推薦使用 linuxdeepin 64 位,DeepWin安裝適合新手朋友,免去你的分區煩惱http://wiki.linuxdeepin.com/inde ... n%E5%AE%89%E8%A3%85提醒:請不要在root用戶下搭建以下開發環境和進行ROM的開發工作【如果只有root用戶,請新建個人用戶】

?


2.1 在當前用戶home目錄下新建android目錄:(jdk, sdk, eclipse安裝移動后都將放在這個目錄)
mkdir ~/android


2.2 軟件安裝(將下載的文件全部復制到桌面上,直接在桌面運行終端)

2.2.1 JDK安裝 下載jdk-6u38-linux-x64.bin

2.2.1.1 在jdk-6u38-linux-x64.bin所在目錄下,添加可執行權限,并運行該文件

chmod +x jdk-6u38-linux-x64.bin
./jdk-6u38-linux-x64.bin

2.2.1.2將生成的jdk1.6.0_38目錄移動到android目錄下:

mv jdk1.6.0_38 ~/android


2.2.2 安裝Eclipse 下載Eclipse Linux版壓縮版 eclipse-jee-indigo-linux-gtk-x86_64.tar.gz

2.2.2.1 解壓
tar -xzf eclipse-jee-indigo-linux-gtk-x86_64.tar.gz

2.2.2.2 將解壓得到的eclipse目錄移動到 android目錄下
mv eclipse ~/android

2.2.2.3 創建桌面鏈接(若不行,手動創建鏈接到桌面)
ln ~/android/eclipse ~/桌面/eclipse


2.2.3 環境變量的配置(把這個提前了,因為不先配置環境變量,下載Android SDK Platform-tools是會提示JAVA錯誤)

2.2.3.1打開/etc/profile文件,具體可使用如下命令:
sudo gedit /etc/profile

2.2.3.2 在最后添加下列內容:

?


# set android home
ANDROID_HOME=/home/colinchen/android

# set java environment
export JAVA_HOME=$ANDROID_HOME/jdk1.6.0_38
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATH
export

PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$ANDROID_HOME/android-sdk-linux/tools/:$ANDROID_HOME/android-sdk-linux/platform-tools/:$PATH

?

2.2.3.3 然后保存

source /etc/profile

2.2.3.4 查看java是否安裝成功

java -version

2.2.3.5 重啟

?

?

2.2.4 安裝Android sdk 下載android-sdk_r22.6.2-linux.tgz

2.2.4.1 解壓:
tar -xzf android-sdk_r22.6.2-linux.tgz

2.2.4.2 將解壓得到的android-sdk-linux目錄移動到 android目錄下
mv android-sdk-linux ~/android

2.2.4.3 進入~/android/android-sdk-linux/tools文件夾,運行程序android

./android

2.2.4.4 會彈出一個更新界面,這個界面會自動更新可以安裝的列表,大概需要幾分鐘,更新完成后,我們選擇Tools下的Android SDK Platform-tools 這個包,點擊install 1 package 安裝,因為adb目前放在這個包里面安裝完成后可以在~/android/android-sdk-linux/platform-tools/下看到adb 的應用至此adb下載完成。如果直接執行adb shell會提示你沒有權限,這就需要在root模式下啟動adb 服務了


2.2.5 安裝 bcompare 下載 bcompare-3.3.4.14431_amd64.deb

2.2.5.1 點擊安裝即可

2.2.5.2

bcompare用與文件的對比,命令如下:
兩項對比
bcompare framework-res/AndroidManifest.xml out/reject/framework-res/AndroidManifest.xml.reject

三項對比
bcompare autopatch/bosp/framework-res/AndroidManifest.xml framework-res/AndroidManifest.xml out/reject/framework-res/AndroidManifest.xml.reject

2.2.6 repo安裝

2.2.6.1 個人目錄下創建bin目錄,這是為了保存repo 等更新腳本的

mkdir -p ~/bin

2.2.6.2 安裝git

sudo apt-get install git-core

2.2.6.3 安裝curl

sudo apt-get install git-core curl

2.2.6.4 安裝repo, 通過curl下載repo并給于權限

curl http://git-repo.googlecode.com/files/repo-1.13 > ~/bin/repo

chmod a+x ~/bin/repo

2.2.6.5 也可以把 ~/bin/repo 加入到環境變量里面,終端輸入

sudo gedit /etc/profile

2.2.6.6 打開的文件添加

# add bin in path
export PATH=~/bin:$PATH

2.2.6.7 更改結束之后終端輸入

source /etc/profile

2.2.6.8 重啟

sudo reboot

?

******************************************************************************
******************************************************************************

3 配置usb識別android設備

?


3.1 adb的下載安裝

sudo apt-get install android-tools-adb

3.2 在/etc/udev/rules.d/目錄下創建51-android.rules文件

sudo touch /etc/udev/rules.d/51-android.rules:

3.3 終端輸入 lsusb

lsusb


3.4 會出現
Bus 001 Device 003: ID 24e3:7112
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub


3.5 編輯51-android.rules

sudo gedit /etc/udev/rules.d/51-android.rules

3.6 然后添加

SUBSYSTEM=="usb", ATTR{idVendor}=="24e3", ATTR{idProduct}=="7112", MODE="0600"

3.7 點擊保存然后給予權限
sudo chmod a+rx /etc/udev/rules.d/51-android.rules

3.8 接著終端輸入

sudo /etc/init.d/udev restart

3.9 關閉adb

sudo adb kill-server

[sudo] password for administrator: 輸入你的密碼

3.10 開啟adb

sudo adb start-server

3.11 出現
* daemon not running. starting it now on port 5037 ** daemon started successfully *

3.12 輸入

sudo adb devices

3.13 出現類似這樣,device這時已經識別到你的設備了.

List of devices attached 0123456789ABCDEF

?

******************************************************************************
******************************************************************************

4 同步源碼,創建開發工程


接下來就可以同步源碼了,以 mtk 4.2為例.詳情請看 Developer-Guide.pdf

?


4.1 創建baidurom

mkdir -p ~/baidurom

4.2 進入baidurom

手動進入colinchen@colinchen-Inspiron-M5110:~/baidurom$

?

4.3 同步coron-mtk-4.2(這里有很多分支,我同步的是mtk的4.2) 注:這里比耗時(因網速而定)請耐心等待

4.3.1 在baidurom文件夾中打開終端,輸入

repo init -u https://github.com/baidurom/manifest.git -b coron-mtk-4.2

4.3.2 同步完成后,輸入 (devices有一個repo sync 后就出現的文件夾,那是示例機型
)

repo sync

?

?

///
///

每回從這里開始


4.4 環境初始化


4.4.1 進入baidurom文件夾后執行

source build/envsetup.sh

4.4.2 就像這個

colinchen@colinchen-Inspiron-M5110:~/baidurom$ source build/envsetup.sh

?

4.5 構建一個新的開發工程make newproject,新建工程目錄(你的機型,比如榮耀3c h30_u10)

?

4.5.1 在 /home/colinchen/baidurom/devices/文件夾里新建h30_u10文件夾(機型)

mkdir -p devices/h30_u10

4.5.2 進入/home/colinchen/baidurom/devices/h30_u10/文件夾

cd devices/h30_u10


4.5.3 需要用到文件recovery.img 或 recovery.fstab,boot.img非必須 放入到 h30_u10文件夾里


4.5.4 進入 /home/colinchen/baidurom/devices/h30_u10/文件夾,然后執行

makeconfig # 該命令會識別手機參數,自動生成一個 Makfile 文件

4.5.5 構建本地的新機型工程

make newproject

# 該命令自動從手機拉包,并構建本地的新機型工程//手機連接電腦并開啟調試模式

?

?

?

?

******************************************************************************
******************************************************************************

5 適配patchrom

?

5.1 插樁代碼改動,自動 Patch

make patchall


具體說明

3.1). make patchall 自動 Patch
$ make patchall
# Patch 所有需要插樁的代碼
該命令將自動將百度云 ROM 的所有改動 Patch 到廠商的代碼中。如果廠商對 Android
原生改動較小,那就可以順利 Patch。否則,將會產生 Patch 的沖突。沖突文件以*.reject 為
后綴,保存在機型目錄下的 out/reject/子目錄中。
譬如 framework-res/AndroidManifest.xml 這個文件在自動 patch 的過程中產生了沖突,
那么沖突就會保存在 out/reject/framework-res/AndroidManifest.xml.reject 文件中。
Patchall 命令可以多次執行,不影響之前 patch 的內容。當需要重新 Patch 單個文件時,
只需要將這個文件切換回廠商原來的代碼,重新執行該命令即可。
執行完 make patchall 后,
會在機型目錄下,
生成一個 autopatch 目錄,
其結果如下所示。
6autopatch/
├── aosp/ # AOSP(Android Open Source Project)的反編譯代碼
├── bosp/ # BOSP(Baidu Open Source Project)的反編譯代碼
├── changelist/ # autopatch 所涉及到的改動文件列表
3.2). 解決合并沖突。
在解決沖突之前,需要理解三個目錄:
* 廠商的代碼,即 VENDOR。在機型根目錄下,開發者最終修改的都是廠商代碼;
* Android 原生代碼,即 AOSP。在 autopatch/aosp/目錄下;
* 百度云 ROM 代碼,即 BOSP。在 autopatch/bosp/目錄下。
沖突會在 reject 文件中以下面的形式標注出來:

<<<<<<< VENDOR
原廠的代碼塊
=======
需要改動的代碼塊
>>>>>>> BOSP


解決沖突一般分為三步:
第一步:確定沖突位置。對比機型根目錄下對應的廠商文件 out/reject 目錄下的沖突文
件。可以找到沖突的具體位置,每一個沖突都有編號, 從 Conflict 0 開始。

第二步:確定百度云 ROM 的改動。找到沖突位置后,對比 AOSP 和 BOSP 的代碼來找出
在沖突的位置處百度云 ROM 是如何修改的 AOSP 的。


bcompare用與文件的對比,命令如下:
兩項對比
bcompare framework-res/AndroidManifest.xml out/reject/framework-res/AndroidManifest.x ml.reject

三項對比
bcompare autopatch/bosp/framework-res/AndroidManifest.xml framework-res/AndroidManifest.xml out/reject/framework-res/AndroidManifest.xml.reject

?


第三步:確定沖突的解法。之所以會產生沖突,是因為廠商(VENDOR)也在 AOSP 上有改
動,一旦百度云 ROM 和廠商在 AOSP 改動的位置相同,沖突就產生了。對比廠商和 AOSP
的代碼,確定廠商(VENDOR)是如何改動 AOSP 的。
解決沖突就是對 BOSP 和 VENDOR 進行取舍,即保留 BOSP 或者 VENDOR。在取舍時,
需要注意寄存器變量是否能夠原來的上下文匹配。
如果寄存器變量使用錯誤,
就會造成編譯
或運行錯誤。
73.3) 機型全編譯 make
解決完沖突以后,可以通過以下命令開始編譯整個機型,如果編譯成功,將會生成一個
卡刷包和其他相關的 image(譬如 system.img,boot.img 等)。
$ make
# 全編譯生成一個最終的卡刷包
將編譯成功后的產出刷入手機,
當出現不能起機、
卡在開機動畫或者起機后出現某些應
用程序 Crash,則需要分析開機日志,解決辦法可以參考常見問題。

?

?

?

?

?

?

?

?

?


小助手:有些手機刷入適配包重啟后ADB無連接,親參照各種方式開啟adb http://bbs.rom.baidu.com/thread-135064-1-1.html

補充說明:一
persist.service.adb.enable=1
persist.sys.usb.config=adb
有些手機boot.img里面的default.prop廠商修改了好多,如沒有上面兩項或其實一項只需添加即可.
persist.service.adb.enable=1 這個其實主要就是讓手機默認開啟調試模式,可以找個卡刷包修改試一下
補充說明:二(主要用于補充說明一無效時即卡開機動畫且ADB無連接)
暴力的查看日志的方法:
---------------------------------------------------
解壓ota卡刷包,在recovery/etc/中的install-recovery.sh后面加上一句:
logcat >> /data/local/tmp/log
重新打包ota卡刷包并刷入手機,依然會卡在開機動畫,請無視,卡上一段時間后重啟進入REC模式
----------------------------------------------------
recovery.fstab里面找到data所在的分區位置(recovery.fstab的位置在vendor/RECOVERY/RAMDISK/etc/recovery.fstab)
假如data所在的那一行的內容如下:
/data ext4 /dev/block/platform/sdhci-tegra.3/by-name/UDA /data
然后REC模式下
adb shell
mount /dev/block/platform/sdhci-tegra.3/by-name/UDA /data
-----------------------------------------------------
看看有沒有 log 這個文件存在
ls /data/local/tmp
如果沒有那說明之前的操作有錯誤
-----------------------------------------------------
導出log
exit (退出adb shell)
adb pull /data/local/tmp/log log
-----------------------------------------------------
然后就可以在終端的當前目錄下看到 log 文件
復制代碼
將包push到sd卡中
adb push out/ota_ktouch.zip /mnt/sdcard/SD_CARD
復制代碼
重啟手機
adb reboot
復制代碼
重啟到Recovery界面
adb reboot recovery
復制代碼
抓取開機的日志信息(Log)
adb logcat -b radio -b system -b main | tee all.log
復制代碼
這樣既能夠把所有的開機日志保存在 all.log 這個文件中,又能夠在屏幕上實時的把日志打印出來。只導出錯誤地方
adb logcat *:E>log
復制代碼
進入手機的超級終端Terminal
adb shell
復制代碼
退出 adb shell
exit
復制代碼

?

轉載于:https://www.cnblogs.com/qinglinchen/p/3748519.html

總結

以上是生活随笔為你收集整理的baidu patchrom项目开发详细教程(Being updated)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。