編譯 lineageos 14.1 on OnePlus3


breakfast oneplus3

命令的主要作用是

1.執行 vendorsetup.sh

2. variant 默認設置為 userdebug

3. 根據機型判斷 調用  lunch  cm 或是 lineage

 

breakfast ()
{
    target=$1;
    local variant=$2;
    CM_DEVICES_ONLY="true";
    unset LUNCH_MENU_CHOICES;
    add_lunch_combo full-eng;
    for f in `/bin/ls vendor/cm/vendorsetup.sh 2> /dev/null`;
    do
        echo "including $f";
        . $f;
    done;
    unset f;
    if [ $# -eq 0 ]; then
        lunch;
    else
        echo "z$target" | grep --color=auto -q "-";
        if [ $? -eq 0 ]; then
            lunch $target;
        else
            if [ -z "$variant" ]; then
                variant="userdebug";
            fi;
            if ! check_product lineage_$target && check_product cm_$target; then
                echo "** Warning: '$target' is using CM-based makefiles. This will be deprecated in the next major release.";
                lunch cm_$target-$variant;
            else
                lunch lineage_$target-$variant;
            fi;
        fi;
    fi;
    return $?
}

 

 

命令:brunch oneplus3

本質是調用mka 命令

mka

mka () 
{
    local T=$(gettop);
    if [ "$T" ]; then
        case `uname -s` in
            Darwin)
                make -C $T -j `sysctl hw.ncpu|cut -d" " -f2` "$@"
            ;;
            *)
                mk_timer schedtool -B -n 10 -e ionice -n 7 make -C $T -j$(grep "^processor" /proc/cpuinfo | wc -l) "$@"   //調用make命令
            ;;
        esac;
    else
        echo "Couldn't locate the top of the tree.  Try setting TOP.";
    fi
}

 

使用mmm 或 mmma 或 mm 或 mma 編譯失敗

使用 make 模塊名 卻可以成功

 

 

 

--------

獲取boot.img system.img 等鏡像

首先需要手機root權限

查看 /dev/.....

 

1. recover.img 和 boot.img 是一種文件類型,用 unpackbootimg 解包img ,mkbootimg 制作img (項目位置 aosp安卓源碼的 /system/core/mkbootimg 目錄下),解包后用  cat ramdisk文件 | cpio -i 的方式再解包 ramdisk ( 打包所需要的參數要和解包后的參數文件中給出的要一致,打包參數為16進制,需要再參數值前加 0x 前綴)

2. system.img userdata.img 是另一類文件類型

 

寫入:

制作好的 boot.img 用 adb push 放到 /sdcard ,然后重啟進入twrp,安裝鏡像即可

或者 先將 /dev/null > /dev/分區對應塊設備 ,然后將img > 寫入塊設備

 

查看分區和塊設備的對應關系:

低版本系統: /dev/mtd

高版本系統:

 

 

-----

以下為流水賬

-----

 

 

Android_Id

當設備在第一次啟動時,系統會隨機產生一個64位的數字,然后以16進制的形式保存在設備上,且API提供了獲取這一參數的方法:

Settings.System.getString(context.getContentResolver(), Settings.System.ANDROID_ID)

當設備重新初始化或者刷機的時候,會被重置

1.不同的設備可能會產生相同的android_id。
2.有的廠商設備無法獲取android_id,會返回null。
3.對於CDMA的設備,ANDROID_ID和TelephonyManager.getDeviceId() 的值相同。
4.不同的android系統版本穩定性不同。

 

//低版本穩定,高版本不穩定

295a4fbf716094ee

 

IMEI

手機序列號 15-17 位,一般為15,雙卡雙待有2IMEI

用於在移動電話網絡中識別每一部獨立的手機等移動通信設備,相當於移動電話身份證。序列號共有15~17位數字,前8位(TAC)是型號核准號碼(早期為6位),是區分手機品牌和型號的編碼。接着2位(FAC)是最后裝配號(僅在早期機型中存在),代表最終裝配地代碼。后6位(SNR)是串號,代表生產順序號。最后1位(SP)一般為0,是檢驗碼,備用。國際移動設備識別碼一般貼於機身背面與外包裝上

 

第一部分 TACType Allocation Code,類型分配碼,由8位數字組成(早期是6位),是區分手機品牌和型號的編碼,該代碼由GSMA及其授權機構分配。其中TAC碼前兩位又是分配機構標識(Reporting Body Identifier),是授權IMEI碼分配機構的代碼,如01為美國CTIA35為英國BABT86為中國TAF

第二部分 FACFinal Assembly Code,最終裝配地代碼,由2位數字構成,僅在早期TAC碼為6位的手機中存在,所以TACFAC碼合計一共8位數字。FAC碼用於生產商內部區分生產地代碼。

第三部分 SNRSerial Number,序列號,由第9位開始的6位數字組成,區分每部手機的生產序列號。

第四部分 CDCheck Digit,驗證碼,由前14位數字通過Luhn算法計算得出。也稱為10”Mod 10算法 它不是一種安全的加密哈希函數,設計它的目的只是防止意外出錯而不是惡意攻擊。

  1. 從校驗位開始,從右往左,偶數位乘2(例如,7*2=14),然后將兩位數字的個位與十位相加(例如,101+0=1141+4=5);
  2. 把得到的數字加在一起(本例中得到67);
  3. 將數字的和取模10(本例中得到7),再用10去減(本例中得到3),得到校驗位。

 

第五部分 SVNSoftware Version Number,軟件版本號,區分同型號手機出廠時使用的不同軟件版本,僅在部分品牌的部分機型中存在.(有的話就是2) 

 

 

TAC-FAC-SNR-CD-SVN

設備品牌和型號 – 裝配地代碼 – 序列號

2RBI 分配機構標識 6位品牌和型號  -  2位數字(生產商內部編碼)) - 6位序列號數字 –  1位數字Luhn驗證碼    –  2位數字(一般不存在)軟件版本號)

 

 

86  123456 1234561

 

1.新格式

8 + 6 + 1 = 15  ( 15 + 2 = 17)

TT  TTTTTTSSSSSSC (SS)

 

2.老格式

6 + 2 + 6 + 1 = 15   (15 + 2 = 17)

TTTTTTFFSSSSSSC (SS)

 

 

 

硬件序列號(SERIAL)

Build.SERIAL

可能不存在

WTK7N16923005607

 

 

 

指紋

Build.FINGERPRINT

由設備的多個信息拼接合成。

honor/FRD-AL00/HWFRD:6.0/HUAWEIFRD-AL00/C00B171:user/release-keys

 

 

 

 

手機號碼

IMSI

WIFI-MAC

WIFI-Name

安卓系統版本    Build.VERSION.SDK_INT      Build.VERSION.RELEASE

ROM固件    Build.TIME 固件推出日期       Build.getRadioVersion() 獲取無線電固件版本     Build.VERSION.BASE_OS 基帶版本

手機型號    Build.HARDWARE    Build.BOARD 主板      Build.MANUFACTURER 產品/硬件的制造商       Build.MODEL 型號     Build.PRODUCT 產品的名稱       Build.DISPLAY 構建id號

手機品牌    Build.MANUFACTURER 產品/硬件的制造商      Build.HOST (可能可以由用戶修改,主機名字)

CPU型號    /device/cpu/*

手機制造商   Build.MANUFACTURER 產品/硬件的制造商

GPS定位

通話記錄模擬、手機短信模擬、等各類安卓手機系統信息的修改工具

 

 

 

在不需要用戶權限的前提下,網上最完美的方案是將android_id和硬件序列號,如果其中任意一種失效就使用另外一種

 

 

 

其他可能使用的信息

4.Build.TIME 固件推出日期 示例:1477442228000
5.Build.VERSION.INCREMENTAL 源碼控制版本號 示例: C00B171
6.Build.getRadioVersion() 獲取無線電固件版本 示例:21.210.03.00.031,21.210.03.00.031
7.Build.HARDWARE 硬件名稱 示例:hi3650
8.Build.VERSION.SECURITY_PATCH 用戶可見安全補丁level(這里我得到的是日期,可能是補丁修復的時間)示例:2016-10-01
9.當前設備是12/24時制:Settings.System.getString(context.getContentResolver(), Settings.System.TIME_12_24) 示例:null(有的手機可以獲取)
10.Build.VERSION.SDK_INT SDK版本號 (一般講是與系統版本號一一對應的) 示例:23
11.Build.SUPPORTED_32_BIT_ABIS 支持32位ABIs的列表(數值)示例:[armeabi-v7a,armeabi]
12.Build.SUPPORTED_64_BIT_ABIS 支持64位ABIs的列表(數值)示例:[arm64-v8a]
13.Build.BOOTLOADER 系統啟動程序版本號 示例:unknown
14.Build.VERSION.RELEASE 用戶可見版本 示例: 6.0

  1. Build.SUPPORTED_ABIS 支持ABIs的列表(數值)示例:[arm64-v8a,armeabi-v7a,armeabi]

16.Build.BOARD 主板 示例:FRD-AL00

17.Build.BRAND 系統定制商 示例:honor

  1. Build.CPU_ABI CPU指令集 示例:arm64-v8a
  2. Build.CPU_ABI2 CPU指令集2 示例:空值
  3. Build.DEVICE 設備參數 示例:HWFRD

21.Build.HOST 示例:huawei-RH2288H-V2-12L

  1. Build.ID 修訂版本列表 示例:HUAWEIFRD-AL00

23.Build.MANUFACTURER 產品/硬件的制造商 示例:HUAWEI

  1. Build.MODEL 示例:FRD-AL00

25.Build.PRODUCT 產品的名稱 示例:FRD-AL00

26.Build.TAGS 描述Build的標簽(Comma-separated tags describing the build, like "unsigned,debug".) 示例:release-keys

  1. Build.TYPE 描述Build的類型(The type of build, like "user" or "eng".) 示例:user

28.Build.USER 描述Build的USER 示例:jslave

  1. Build.DISPLAY A build ID string meant for displaying to the user 示例:FRD-AL00C00B171
    30.Build.VERSION.CODENAME 當前開發代號,或者字符串“REL”(如果是正式的發布版本) 示例: REL

31.Build.VERSION.BASE_OS 基帶版本 The base OS build the product is based on. 示例:空值

32.自定義字符串或自定義數組



 

 

 

 

 

 

 

ROM

 

Android系統文件系統分區

Boot system recovery data cache misc

 

Sd卡文件系統分區

Sd

Sd-ext

 

/boot

啟動分區,包括kernelramdisk(如proc等文件系統的結構包含在這(整個根文件系統))

刷機包中有/boot 的寫入,代表會修改kernelramdisk

Boot.img

 

/system

包含android系統kernel外的部分,framwork包含在這里HAL的驅動是否包含在這里呢?(vendor

System.img

 

/data

用戶應用程序的安裝分區,如 /data/data/app*

Userdata.img

 

/cache

緩存

 

/misc

包含一些開關配置,CID ,運營商區域IDUSB配置,硬件設置等(那VENDRO相關的信息會存在這里嗎?)

如果它已損壞或丟失,設備的某些功能將無法正常運行。

 

/sdcard

Sd

 

/sd-ext

Data2ext app2sd 可以支持把應用安裝到此分區所在的sd卡上

 

/recovery

例如 Twrp安裝在這里

 

 

 

 

 

 

 

 

LinageOS

第三方的開源ROM,支持機型比較多

 

安裝:

  1. 解鎖手機bootloader(官方工具支持)
  2. 通過bootloader刷第三方 twrp recover (通過fastboot /recover img
  3. 通過twrp linageOS對應機型的ROM img文件

 

升級:

  1. 設置里點更新系統
  2. PC端用linageOS官方出的升級腳本 push_update
  3. 手機進入sidloadRecovery模式),在pc adb sideload 加載要刷的zip

 

降級:

和重新安裝系統一樣

 

 

 

 

 

 

 

 

 

下載 linageOS 14.1 源碼

 

Gitrepo 都下好

但是 repo init 的時候提示一個錯誤

 

於是單獨clone repo 下載

git clone -v https://gerrit-googlesource.lug.ustc.edu.cn/git-repo

結果還是失敗

Cloning into 'git-repo'...

fatal: unable to access 'https://gerrit-googlesource.lug.ustc.edu.cn/git-repo/': Failed to connect to gerrit-googlesource.lug.ustc.edu.cn port 443: Connection refused

 

后來將地址換為

git clone https://mirrors.tuna.tsinghua.edu.cn/git/git-repo

 

然后將 當前目錄下的 git-repo 文件夾重新命名為 repo 移動到當前目錄的.repo

然后執行

repo init -u https://github.com/LineageOS/android.git -b cm-14.1

 

最然中間報了個錯

curl: (22) The requested URL returned error: 404 Not Found

Server does not provide clone.bundle; ignoring.

remote: Enumerating objects: 5286, done.

 

但最后

成功了!

 

這種莫名奇妙的換url,而且也不知道新的url換成了什么,感到十分困惑

而且 googlesource repo mirrors.tuna repo 下載后是不一樣的。。。

 

 

接下來用

~/bin/repo sync

 

還是提示很多失敗

error: Cannot fetch device/common from https://android.googlesource.com/device/common


fatal: unable to access 'https://android.googlesource.com/platform/prebuilts/gcc/darwin-x86/arm/arm-eabi-4.8/': Failed to connect to android.googlesource.com port 443: Connection refused

 

估計是科(ke)學(xue)上(shang)網(wang)的問題

 

android.googlesource.com 

換成國內鏡像

 

打開.repo/manifest.xml,將

  <remote  name="github"

           fetch=".."

           review="review.lineageos.org" />

 

改成

  <remote  name="github"

           fetch="https://github.com/" />

 

  <remote  name="lineage"

           fetch="https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/"

           review="review.lineageos.org" />

  <remote  name="aosp"

           fetch="https://android.googlesource.com"

改成

  <remote  name="aosp"

           fetch="https://aosp.tuna.tsinghua.edu.cn"

  <default revision="..."

           remote="github"

改成

  <default revision="..."

           remote="lineage"

 

 

 

最后運行

repo sync --no-clone-bundle

 

正常了

 

 

 

 

編譯一加3T 手機 CM 14.1 ROM

 

 

源碼下載好后,需要將特定手機型號的驅動等特有代碼准備好

 

參考http://www.kokojia.com/article/17859.html

方法1. 使用腳本從手機中提取出驅動(是哪些?原理是?)

 

參考 https://www.cnblogs.com/jiaoxiake/p/6875864.html

方法2. 從網上下現有的驅動

找到設備相關代碼

https://github.com/TheMuppets/proprietary_vendor_oneplus/tree/cm-14.1/oneplus3

該倉庫下的 cm14.1分支中的 oneplus3 文件夾

 

參考 https://www.jianshu.com/p/44f359c40ceb

方法3. LineageOS卡刷包中獲取。

 

 

步驟1. 下載linageOS公共部分代碼

 

考慮到需要的驅動也許和特定版本的ROM是匹配的(兼容性問題),所以選擇在github上下載cm14.1分支的驅動,而不去提取手機中的(我手機上是高於7.1的版本的系統)

選擇方法2

 

首先執行

source build/envsetup.sh

breakfast oneplus3    //  breakfast "device name"這里是同步機型的信息以及內核文件

就會開始從LineageOS 下載設備相關內核等源碼

 

<manifest>

  <project name="LineageOS/android_device_oneplus_oneplus3" path="device/oneplus/oneplus3" remote="github" />

  <project name="LineageOS/android_device_oppo_common" path="device/oppo/common" remote="github" />

  <project name="LineageOS/android_kernel_oneplus_msm8996" path="kernel/oneplus/msm8996" remote="github" />

  <project name="LineageOS/android_vendor_nxp-nfc_opensource_frameworks" path="vendor/nxp-nfc/opensource/frameworks" remote="github" />

  <project name="LineageOS/android_vendor_nxp-nfc_opensource_libnfc-nci" path="vendor/nxp-nfc/opensource/libnfc-nci" remote="github" />

  <project name="LineageOS/android_vendor_nxp-nfc_opensource_Nfc" path="vendor/nxp-nfc/opensource/Nfc" remote="github" />

</manifest>

這一步主要下載kernelVendordevice 等文件夾下的文件

這里的remote屬性指定的是 .repo/manifest.xml 中定義的遠程倉庫,如

<remote  name="github"

           fetch="https://github.com/" />

 

接着,根據網絡情況等意外因素出現各種問題

 

問題1.

下載到一半網絡問題導致卡住

Fetching project LineageOS/android_hardware_broadcom_wlan

 

 

問題2.

443

fatal: unable to access 'https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android_frameworks_minikin/': Failed to connect to mirrors.tuna.tsinghua.edu.cn port 443: Connection refused

manifest.xml 里的 linage 倉庫地址改成 github上的,不用鏡像服務器試試

文件不存在?

 

產生問題3.

fatal: unable to access 'https://github.com/LineageOS/android_packages_providers_ContactsProvider/': Operation timed out after 0 milliseconds with 0 out of 0 bytes received

鏈接超時?

 

問題4.

設備特有代碼

^Cerror: Cannot fetch LineageOS/android_device_qcom_common from https://github.com/LineageOS/android_device_qcom_common

aborted by user

如果網絡問題比較嚴重,而每次執行上面命令或 repo sync 都會檢測已經同步過的倉庫,會非常耗費時間

 

可以手動下載需要的依賴倉庫中的文件到指定目錄

方式:

依賴鏈的頭可以從第一個倉庫中找到

android_device_oneplus_oneplus3 中的 lineage.dependencies

[

 

  {

 

    "repository": "android_device_qcom_common",

 

    "target_path": "device/qcom/common"

 

  },

 

  {

 

    "repository": "android_packages_resources_devicesettings",

 

    "target_path": "packages/resources/devicesettings"

 

  }

 

]

 

Repository 是依賴的其他倉庫

device/qcom/common 是從該倉庫下載文件放到的目錄

 

其他倉庫也能依賴另外的倉庫,所以打開被依賴倉庫的時候也需要看有沒 lineage.dependencies 存在

 

還有一種情況是aosplineageOS 依賴的項目無法下載下來,可能是鏡像中不存在這個文件

手動到github lineage中下載

 

問題5.

fatal: unable to access xxxxxxxx gnutls_handshake() failed: Error in the pull function.

https相關的tls握手問題。

但是為什么會失敗?

 

問題 6.

fatal: unable to access 'https://github.com/LineageOS/android_frameworks_opt_telephony/': GnuTLS recv error (-9): A TLS packet with unexpected length was received.

解決

用openssl 替換 gnutls 重新編譯git

重新編譯git

ubuntu16.04需要

點擊系統右上角,系統設置-軟件&更新-並啟用源代碼

然后點確定更新

 

然后運行

sudo apt-get build-dep git

輸入 yes

 

Mkdir gitopenssl

Cd gitopenssl
apt-get source git

 

在debian/control 文件中

替換所有 libcurl4-gnutls-dev libcurl4-openssl-dev

 

在debian/rules文件中

刪除 "TEST =test" 行

 

執行

sudo apt-get install libcurl4-openssl-dev

安裝依賴的openssl

 

sudo dpkg-buildpackage -rfakeroot –b 

構建安裝包

 

可能提示的錯誤

dpkg-checkbuilddeps: error: Unmet build dependencies: libcurl4-openssl-dev

dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting

dpkg-buildpackage: warning: (Use -d flag to override.)

解決:

在執行完 sudo apt-get build-dep git

之后執行 sudo apt-get install libcurl4-openssl-dev

 

 

完成后可能提示

gpg: skipped "Leonidas S. Barbosa <leo.barbosa@canonical.com>": No secret key

gpg: dpkg-sign.jvQVk_ef/git_2.7.4-0ubuntu1.6_amd64.changes: clearsign failed: No secret key

 

dpkg-buildpackage: error: failed to sign .changes file

 

簽名問題,不用管。

返回上級目錄,會看到

git_2.7.4-0ubuntu1.6_amd64.deb

 

運行dpkg -i  ./git_2.7.4-0ubuntu1.6_amd64.deb

安裝

 

再次 repo sync

結果還是有很多報錯

 

fatal: unable to access 'https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android_packages_apps_EmergencyInfo/': Unknown SSL protocol error in connection to mirrors.tuna.tsinghua.edu.cn:443

fatal: unable to access 'https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/cve_tracker/': SSL read: error:00000000:lib(0):func(0):reason(0), errno 104

fatal: unable to access 'https://github.com/LineageOS/android_packages_apps_WundergroundWeatherProvider/': Failed to connect to github.com port 443: Connection refused

 

沒有去追根求底,只想趕快解決

各種網絡問題。手動一個個下吧。。。

下好了並解壓,根據 manifest.xml 中配置的path 放到對應目錄

 

 

aosplineageOS的機型無關代碼同步好了后

 

步驟2. 下載設備相關部分代碼

 

2.1同步設備公開代碼

把當前用於同步的 repo 文件復制到  ~/bin/repo

接下來運行

 

Breakfast oneplus3

這條命令會把一些機型相關代碼的倉庫同步下來(並且會在.repo/local_manifests/roomservice.xml中添加所需要依賴的項目),並且會用到 ~/bin/repo 文件

 

 

2.2同步設備私有庫

Github中有一個 TheMuppets 賬號,在這賬號下的倉庫集里搜 oneplus3 ,找到對應倉庫,然后做如下操作

倉庫中有一個清單的項目,里面提供了所有的清單,你只需要將對應你機型的廠商vendor的代碼添加到LineageOS/.repo/local_manifests/roomservice.xml文件中就行了

<project name="TheMuppets/proprietary_vendor_oneplus"  path="vendor/oneplus"  remote="github" revision="cm-14.1" />

加好后文件內容如下:

<?xml version="1.0" encoding="UTF-8"?>

<manifest>

  <project name="TheMuppets/proprietary_vendor_oneplus" path="vendor/oneplus" remote="github" revision="cm-14.1">

</manifest>

 

 

 

然后執行 repo sync

同步過程還是太多網絡問題了

所以參考:

https://www.cnblogs.com/daimadebanyungong/p/7765218.html

使用腳本來下載(下載了很久很久,很多次)

 

但是注意:這個腳本用流量判斷是否卡住,但是 repo sync 2個階段 1:網絡下載 2:在每個下好的子目錄中進行 checkout 操作

所以說用這個腳本只能解決階段1的問題,而進入了階段2可能會誤殺進程

如果看到進行到階段2,就可以手動停止使用這個腳本,然后手動執行一次 repo sync 等他執行到

Checking out project LineageOS/android_vendor_qcom_opensource_cryptfs_hw

Checking out project LineageOS/android_vendor_qcom_opensource_dataservices

Checking out project LineageOS/android_vendor_qcom_opensource_dpm

Checking out project LineageOS/android_vendor_qcom_opensource_time-services

Syncing work tree: 100% (587/587), done.

 

這里 按回車 才真正完成所有的同步

 

另外 下載階段完成的日志會是這樣:

Checking out project LineageOS/android_device_qcom_sepolicy

Checking out project device/sample

Fetching projects: 100% (587/587)

Fetching projects: 100% (587/587), done.  

 

 

 

如果需要用lineage 自帶腳本從真實設備中抽取文件

Adb不識別usb設備的處理辦法:

https://blog.csdn.net/u013398960/article/details/72511309

 

 

 

開始編譯

 

Croot

brunch oneplus3

 

 

遇到錯誤:

warning: string 'user_image_take_photo' has no default translation.

warning: string 'user_nickname' has no default translation.

packages/apps/EmergencyInfo/res/layout/preference_category_material_settings.xml:33: error: Error: No resource found that matches the given name (at 'fontFamily' with value '@*android:string/config_headlineFontFamilyMedium').

 

packages/apps/EmergencyInfo/res/layout/preference_category_material_settings.xml:33: error: Error: No resource found that matches the given name (at 'textColor' with value '@color/emergency_contacts_text_color').

 

packages/apps/EmergencyInfo/res/layout/restricted_popup_menu_item.xml:35: error: Error: No resource found that matches the given name (at 'layout_width' with value '@dimen/config_restricted_icon_size').

 

packages/apps/EmergencyInfo/res/layout/restricted_popup_menu_item.xml:35: error: Error: No resource found that matches the given name (at 'layout_height' with value '@dimen/config_restricted_icon_size').

 

[ 80% 27308/33878] Building bootanimation

ninja: build stopped: subcommand failed.

build/core/ninja.mk:151: recipe for target 'ninja_wrapper' failed

make: *** [ninja_wrapper] Error 1

make: Leaving directory '/android/los/tuna-cm-14.1'

 

#### make failed to build some targets (02:03:22 (hh:mm:ss)) ####

 

 

單獨進packages/apps/EmergencyInfo/ 目錄用

git reset –hard

git pull lineage cm-14.1

更新了一次

結果還是不行

@*android:string/config_headlineFontFamilyMedium 是系統資源

在系統資源下找不到,@color/emergency_contacts_text_color 這類應該是app自定義的資源,更新后還是搜不到。不知解決思路是什么。

直接將整個EmergencyInfo刪除(從名字粗略的看,怕是日后地震預警之類的用不了了吧,這次編譯只是給開發機用於開發,不是日常生活用)。

繼續編譯

 

 

最后

 

running:  java -Xmx2048m -Djava.library.path=/android/los/tuna-cm-14.1/out/host/linux-x86/lib64 -jar /android/los/tuna-cm-14.1/out/host/linux-x86/framework/signapk.jar -w build/target/product/security/testkey.x509.pem build/target/product/security/testkey.pk8 /tmp/tmpA8djqM /android/los/tuna-cm-14.1/out/target/product/oneplus3/lineage_oneplus3-ota-9a1b472753.zip

done.

[100% 7996/7996] build bacon

Package Complete: /android/los/tuna-cm-14.1/out/target/product/oneplus3/lineage-14.1-20190811-UNOFFICIAL-oneplus3.zip

make: Leaving directory '/android/los/tuna-cm-14.1'

 

#### make completed successfully (57:53 (mm:ss)) ####

 

 

編譯成功了

 

把/android/los/tuna-cm-14.1/out/target/product/oneplus3/ lineage-14.1-20190811-UNOFFICIAL-oneplus3.zip 放到sd

進入twrp recover 刷入此包

 

重啟,進入系統

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM