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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

为nexus 5x编译android n固件

發布時間:2023/12/29 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为nexus 5x编译android n固件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作為安卓從業人員,我們經常希望可以單步調試framework代碼,可以方便的調試第三方應用。模擬器一般來說太慢,而且模擬器和官方sdk代碼一樣對應不上。最好的辦法就是自己為nexus手機編譯userdebug固件,本文以nexus 5x為例記錄編譯實踐。

下載aosp源碼

國內用戶建議使用清華鏡像,地址為https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ ,不贅述。
如果網絡不夠好,建議使用重試腳本,如

#!/bin/sh repo sync -j4 while [ $? -ne 0 ] do repo sync -j4 done

也可以參考http://blog.csdn.net/xia0pang/article/details/20281071 根據網速來判斷。
必要時可以使用repo sync –force-broken,可以在一個project下載失敗時繼續下載下一個,而不是失敗退出。

切換分支

針對每款nexus手機的固件,aosp中都有對應的tag,我們需要將源碼切換到對應的branch或者tag才可以。
參照https://source.android.com/source/build-numbers ,nexus 5x對應的最新細分版本為N4F26T,對應的分支為android-7.1.1_r24 。也就是說我可以將aosp源碼切換到這個分支。

repo切換分支,參考http://blog.csdn.net/turui/article/details/7190676
摘抄如下

// 查看可切換的分支 cd .repo/manifests git branch -a | cut -d / -f 3// 切換到gingerbread-release分支 repo init -b gingerbread-release repo sync (not needed if your local copy is up to date) repo start gingerbread-release --all // 查看當前的分支 repo branches

下載驅動

aosp源碼中并不包含廠商的閉源驅動,需要手動下載,地址為 https://developers.google.com/android/drivers
找到N4F26T對應的驅動,分別為
https://dl.google.com/dl/android/aosp/lge-bullhead-nmf26f-7bf6caec.tgz

https://dl.google.com/dl/android/aosp/qcom-bullhead-nmf26f-fa1a80d5.tgz
目前國內dl.google.com域名可以直接訪問,如果瀏覽器點擊下載鏈接遲遲沒有反應,可以復制鏈接然后使用wget下載。

下載解壓后均為.sh文件,放到aosp根目錄執行腳本即可,中間會要求輸入I ACCEPT同意協議。

編譯環境

我使用的是ubuntu 16.04,參照官網中ubuntu 14.04的要求,比如使用open-jdk8,安裝必要依賴包等。

編譯

source build/envsetup.sh lunch // 選擇aosp-bullhead-userdebug make -j4

注意我們自己編譯一般選擇userdebug固件,運行速度快而且方便調試。

這里列出兩個編譯時遇到的問題

  • Internal compiler error
    錯誤描述如下
FAILED: /bin/bash out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex.rsp java.lang.AssertionError: java.util.zip.ZipException: duplicate entry: jayce/android/webkit/LegacyErrorStrings.jayceat com.android.sched.vfs.WriteZipFS$ZipEntryOutputStream.writeEntryIfNeeded(WriteZipFS.java:350)...at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748) Caused by: java.util.zip.ZipException: duplicate entry: jayce/android/webkit/LegacyErrorStrings.jayce... 31 moreInternal compiler error (version 1.2-rc4 'Carnac' (298900 f95d7bdecfceb327f9d201a1348397ed8a843843 by android-jack-team@google.com)). java.util.zip.ZipException: duplicate entry: jayce/android/webkit/LegacyErrorStrings.jayce. Warning: This may have produced partial or corrupted output.

我的解決辦法是直接make clean然后重試

  • oom問題
    出錯如下

    解決辦法參考http://blog.csdn.net/loongembedded/article/details/70243355 ,增加jvm堆內存上限。
    具體做法為修改prebuilts/sdk/tools/jack-admin文件
JACK_SERVER_VM_ARGUMENTS="${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8-XX:+TieredCompilation -Xmx4096M}"JACK_SERVER_COMMAND="java-XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR$JACK_SERVER_VM_ARGUMENTS -Xmx4096M -cp$LAUNCHER_JAR $LAUNCHER_NAME"

各自添加-Xmx4086M

之后的編譯過程很順利,附圖

刷機

先在系統settings中打開oem鎖開關,執行adb reboot bootloader進入bl界面,然后執行fastboot flashing unlock解鎖。此時就可以開始刷機。
在源碼編譯完成后的終端執行

fastboot flashall -w

附刷機后圖片

總結

以上是生活随笔為你收集整理的为nexus 5x编译android n固件的全部內容,希望文章能夠幫你解決所遇到的問題。

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