编译 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 刷入此包

 

重启,进入系统

 

posted on 2019-11-02 02:02  jald  阅读(1923)  评论(0编辑  收藏  举报

导航