Flyme6系统适配教程(Patchrom)
國內目前開放patchrom源碼的只剩Flyme了,不知道這條路還能走多久。
先來說下幾個基本的概念
patchrom
這個簡單理解下:通過一種技術將第三方定制的系統功能代碼反編譯成smali注入到將要適配的機器官方rom中(cm aosp miui nubiaUI 360os等) ,這里改變的主要是調整框架層framework的代碼 讓他適應上級的應用層。
1.因為不修改kernel層和硬件抽象層代碼盡可能的保留了原官方系統的特新以及穩定性。Flyme官網下載目錄下的小米5手機的Flyme6 就很好的保留了官方系統的特性(miui相機,Home輕觸返回等等)
2.提供OTA升級服務,優化用戶體驗
3.跨CUP適配,我么知道魅族MTK為主。通過patchrom的方式適配,很好的解決了不同產商CPU芯片的差異。保證了兼容性
AOSP
Android Open-Source Project 就是Android 開放源代碼項目,我們所說的原生ROM就是在此基礎上編譯適配的。可以說所有的安卓手機都搭載了安卓原生ROM(當然你也可以說萬物基于MIUI,手動滑稽) patchrom最理想的方式就是在原生ROM上進行插樁適配。
嗯。。。要說起來太多了,我們直奔主題。遇到不懂得可以谷歌百度或者直接問我 ==
準備工作(適配環境搭建)
這里推薦ubuntu14.04+ jdk1.8
1.安裝JDK
sudo apt-get install openjdk-8-jdk2.安裝依賴
sudo apt-get update && sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk3.0-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev openjdk-8-jre openjdk-8-jdk pngcrush schedtool libxml2 libxml2-utils xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev lib32ncurses5-dev gcc-multilib maven tmux screen w3m ncftp liblz4-tool pngquant rsync3.repo搭建
mkdir ~/bin PATH=~/bin:$PATH curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo這是Flyme開源代碼的倉庫 源碼采用repo方式同步
https://github.com/FlymeOS/
開源項目的分支命名與Android版本對應,目前支持Android 6.0的機型適配,分支名為:marshmallow-6.0
目錄結構如下所示:
FlymeOS
+– manifest 項目清單
+– tutorials 教程文檔
+– plugins 擴展插件,用于擴展已有功能
+– build 編譯環境,用于構建和編譯機型
+– tools 適配工具
+– flyme Flyme相關,內容定期更新
+– release 官方發布的ROM包
+– overlay 資源覆蓋
+– devices 機型目錄
+– base 官方提供的默認機型
+– your_device 待開發者適配的機型
其中加粗的為一級目錄
下載代碼
mkdir ~/Flyme6 $ cd ~/Flyme6 repo init -u https://github.com/FlymeOS/manifest.git -b marshmallow-6.0 repo sync -c -j4如果連接一直失敗或下載代碼過慢,則使用以下命令:
repo init --repo-url git://github.com/FlymeOS/repo.git \-u https://github.com/FlymeOS/manifest.git \-b marshmallow-6.0 --no-repo-verify repo sync --no-clone-bundle -c -j4下載完代碼以后, 在開源項目根目錄, 執行以下命令初始化開發環境:
source build/envsetup.sh
創建一個新的機型工程的目錄(以demo為例), 后續的移植都在機型目錄完成。
mkdir -p devices/demo
cd devices/demo
按照如下步驟,完成一個新機型的適配:
flyme config # 生成機型配置文件Makefile
flyme newproject # 生成新機型目錄
flyme patchall # 自動插樁
flyme fullota # 生成適配完成的ROM包
- 沖突處理
自動插樁可能會造成代碼合并沖突。沖突會以下面的形式標注出來, 開發者需要在廠商的文件中手工解決這些沖突。
<<<<<<< VENDOR
原廠的代碼塊
Flyme的代碼塊
BOSP
*版本升級
可以跟隨官方發布的最新ROM包,將已經是適配完成的機型升級到最新版本:
flyme cleanall flyme upgrade我們鼓勵開發者為開源社區作出貢獻。利用Github的Pull-Request機制,便可將內容變更發送給Flyme官方審閱。
下次分析沖突解決的常用辦法
總結
以上是生活随笔為你收集整理的Flyme6系统适配教程(Patchrom)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 树形目录结构的实现(包含
- 下一篇: java对一个无序列表进行分组