记一次离谱的AOSP编译经历

最近突发奇想,想给很多年前买的 Pixel 一代(sailfish)编译一个 AOSP 的系统。因为之前虽然经常编译 LineageOS,但是仔细一想还真没有给真机器编译过 AOSP 的系统。

准备阶段

查阅Google官网的文档发现 Pixel 一代所支持的最新版本是 android-10.0.0_r17,build ID 是 QP1A.191005.007.A3。这里我选择从 USTC 镜像源拉源代码,虽然我在北京,但是清华源基本处于一个不可用的状态,不知道是因为北邮校园网的问题还是啥。一如我当年在安徽大学(中科大对门)用过清华源的 pypi 镜像。

export REPO_URL=https://gerrit-googlesource.proxy.ustclug.org/git-repo

repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-10.0.0_r17

repo sync # 加 -c 可能会更快,但是我懒得加了,因为一晚上肯定拉完了

下载好之后,要添加一下驱动,在这 https://developers.google.com/android/drivers按build ID搜索一下,下载对应机型的,解压出来./extract-qcom-sailfish.sh./extract-google_devices-sailfish.sh 在源代码目录下执行一下即可。

至此,就准备好了。

编译

😭 Ubuntu 22.04

我用的是 Ubuntu 22.04,我看符合官网上 Ubuntu 18.04 or later 的要求我就直接开编译了,直接就是三板斧。

source build/envsetup.sh

lunch aosp_sailfish-userdebug

make -j$(nproc)

然后就给报了错,

******************************
You have tried to change the API from what has been previously approved.

To make these errors go away, you have two choices:
1. You can add '@hide' javadoc comments to the methods, etc. listed in the
errors above.

2. You can update current.txt by executing the following command:
make test-api-stubs-docs-update-current-api

To submit the revised current.txt to the main Android repository,
you will need approval.
******************************

14:26:06 ninja failed with: exit status 1

或者

FAILED: out/soong/.intermediates/frameworks/base/api-stubs-docs/android_common/check_last_released_api.timestamp
( rm -rf "out/soong/.intermediates/frameworks/base/api-stubs-docs/android_common/last-apicheck/srcjars" && mkdir -p "out/soong/.intermediates/frameworks/base/api-stubs-docs/android_common/last-apicheck/srcjars" && out/soong/host/linux-x86/bin/zipsync -d out/soong/.intermediates/frameworks/base/api-stubs-docs/android_common/last-apicheck/srcjars -l out/soong/.intermediates/frameworks/base/api-stubs-docs/android_common/last-apicheck/srcjars/list -f "*.java" out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/privacy.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/section.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/activitymanager.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/alarmmanager.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/notification.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/notification_channel.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/notification_channel_group.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/notificationmanager.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/pendingintent.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/profilerinfo.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/settings_enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/statusbarmanager.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/window_configuration.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/job/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/bluetooth/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/bluetooth/a2dp/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/bluetooth/hci/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/bluetooth/hfp/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/bluetooth/smp/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/content/activityinfo.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/content/clipdata.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/content/clipdescription.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/content/component_name.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/content/configuration.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/content/featureinfo.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/content/intent.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/content/locale.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/content/package_item_info.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/debug/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/graphics/pixelformat.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/graphics/point.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/graphics/rect.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/hardware/biometrics/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/hardware/sensor/assist/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/internal/locallog.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/internal/powerprofile.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/internal/processstats.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/media/audioattributes.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/net/network.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/net/networkcapabilities.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/net/networkrequest.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/backtrace.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/batterystats.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/batterytype.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/bundle.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/cpufreq.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/cpuinfo.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/data.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/header.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/incident.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/kernelwake.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/looper.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/message.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/messagequeue.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/metadata.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/pagetypeinfo.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/patternmatcher.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/persistablebundle.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/powermanager.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/procrank.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/ps.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/statsdata.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/system_properties.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/worksource.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/providers/settings.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/providers/settings/common.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/providers/settings/global.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/providers/settings/secure.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/providers/settings/system.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/activitymanagerservice.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/alarmmanagerservice.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/animationadapter.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/appwindowthumbnail.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/backup_chunks_metadata.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/face.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/fingerprint.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/forceappstandbytracker.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/intentresolver.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/jobscheduler.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/powermanagerservice.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/rolemanagerservice.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/statlogger.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/surfaceanimator.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/usagestatsservice.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/windowmanagerservice.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/windowmanagertrace.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/wirelesschargerdetector.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/connectivity/data_stall_event.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/job/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/location/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/adb.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/appwidget.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/battery.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/batterystats.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/diskstats.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/graphicsstats.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/netstats.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/network_watchlist.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/notification.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/package.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/print.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/procstats.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/procstats_enum.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/restricted_image.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/runtime.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/usb.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/connectivity/network_stack.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/devicepolicy/device_policy.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/devicepolicy/device_policy_enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/dnsresolver/dns_resolver.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/docsui/docsui_enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/intelligence/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/launcher/launcher.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/location/location_enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/mediametrics/mediametrics.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/storage/storage_enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/style/style_enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/telecomm/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/telephony/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/util/common.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/util/event_log_tags.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/util/log.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/view/display.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/view/displaycutout.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/view/displayinfo.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/view/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/view/remote_animation_target.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/view/surface.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/view/surfacecontrol.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/view/windowlayoutparams.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/wifi/enums.srcjar out/soong/.intermediates/frameworks/base/framework/android_common/gen/sysprop/system/apex/apexd/sysprop/ApexProperties.srcjar out/soong/.intermediates/frameworks/base/framework/android_common/gen/sysprop/system/libsysprop/srcs/android/sysprop/AdbProperties.srcjar out/soong/.intermediates/frameworks/base/framework/android_common/gen/sysprop/system/libsysprop/srcs/android/sysprop/CarProperties.srcjar out/soong/.intermediates/frameworks/base/framework/android_common/gen/sysprop/system/libsysprop/srcs/android/sysprop/ContactsProperties.srcjar out/soong/.intermediates/frameworks/base/framework/android_common/gen/sysprop/system/libsysprop/srcs/android/sysprop/CryptoProperties.srcjar out/soong/.intermediates/frameworks/base/framework/android_common/gen/sysprop/system/libsysprop/srcs/android/sysprop/DisplayProperties.srcjar out/soong/.intermediates/frameworks/base/framework/android_common/gen/sysprop/system/libsysprop/srcs/android/sysprop/SetupWizardProperties.srcjar out/soong/.intermediates/frameworks/base/framework/android_common/gen/sysprop/system/libsysprop/srcs/android/sysprop/TraceProperties.srcjar out/soong/.intermediates/frameworks/base/framework/android_common/gen/sysprop/system/libsysprop/srcs/android/sysprop/VoldProperties.srcjar out/soong/.intermediates/frameworks/base/core/res/framework-res/android_common/gen/R.jar && prebuilts/jdk/jdk9/linux-x86/bin/java -jar out/soong/host/linux-x86/framework/metalava.jar -encoding UTF-8 -source 1.8 @out/soong/.intermediates/frameworks/base/api-stubs-docs/android_common/check_last_released_api.timestamp.rsp @out/soong/.intermediates/frameworks/base/api-stubs-docs/android_common/last-apicheck/srcjars/list -bootclasspath out/soong/.intermediates/libcore/mmodules/core_platform_api/core.platform.api.stubs/android_common/javac/core.platform.api.stubs.jar:out/soong/.intermediates/libcore/core-lambda-stubs/android_common/javac/core-lambda-stubs.jar -classpath out/soong/.intermediates/frameworks/base/ext/android_common/turbine-combined/ext.jar:out/soong/.intermediates/frameworks/base/framework/android_common/turbine-jarjar/framework.jar:out/soong/.intermediates/frameworks/base/media/updatable_media_stubs/android_common/turbine-combined/updatable_media_stubs.jar:out/soong/.intermediates/frameworks/base/ext/android_common/turbine-combined/ext.jar:out/soong/.intermediates/frameworks/base/framework/android_common/turbine-jarjar/framework.jar:out/soong/.intermediates/frameworks/opt/net/voip/voip-common/android_common/turbine-combined/voip-common.jar -sourcepath "frameworks/base/core/java:frameworks/base/graphics/java:frameworks/base/location/java:frameworks/base/media/java:frameworks/base/media/mca/effect/java:frameworks/base/media/mca/filterfw/java:frameworks/base/media/mca/filterpacks/java:frameworks/base/drm/java:frameworks/base/opengl/java:frameworks/base/sax/java:frameworks/base/telecomm/java:frameworks/base/telephony/java:frameworks/base/wifi/java:frameworks/base/lowpan/java:frameworks/base/keystore/java:frameworks/base/rs/java" --no-banner --color --quiet --format=v2 --manifest frameworks/base/core/res/AndroidManifest.xml --hide-package com.android.okhttp --hide-package com.android.org.conscrypt --hide-package com.android.server --error UnhiddenSystemApi --hide RequiresPermission --hide MissingPermission --hide BroadcastBehavior --hide HiddenSuperclass --hide DeprecationMismatch --hide UnavailableSymbol --hide SdkConstant --hide HiddenTypeParameter --hide Todo --hide Typo --check-compatibility:api:released out/soong/.intermediates/prebuilts/sdk/last-released-public-api/gen/last-released-api.txt --check-compatibility:removed:released frameworks/base/api/removed.txt --merge-qualifier-annotations tools/metalava/manual --merge-qualifier-annotations libcore/ojluni/annotations/sdk && touch out/soong/.intermediates/frameworks/base/api-stubs-docs/android_common/check_last_released_api.timestamp && rm -rf "out/soong/.intermediates/frameworks/base/api-stubs-docs/android_common/last-apicheck/srcjars") || ( echo -e "\n******************************\nYou have tried to change the API from what has been previously released in\nan SDK. Please fix the errors listed above.\n******************************\n" ; exit 38 )
Killed
-e
******************************
You have tried to change the API from what has been previously released in
an SDK. Please fix the errors listed above.
******************************

17:27:08 ninja failed with: exit status 1

虽然但是,这俩报错随便 update api 一下就可以编译过了。但是但是但是,它刷进去就一直重启,adbd 都没起来,也看不到日志,试了很多次,甚至重新拉了源码,还是一样的效果。都快怀疑人生了,我就搜啊搜啊搜啊搜,终于这个世界上不止我一个倒霉蛋:

编译 aosp 并且刷入 pixel 后无限重启,各位有什么排查问题妙招 https://www.v2ex.com/t/893452

image.png

❓Docker + Ubuntu 18.04

不理解,但是实在是没活了。抱着试试看的心态,准备起个 docker 编译一手。

首先是 Dockerfile 如下:

FROM ubuntu:18.04
RUN apt-get update && apt-get install -y python3 git-core gnupg flex bison rsync build-essential zip curl zlib1g-dev libc6-dev-i386 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
RUN groupadd -g 1000 s1nk && useradd -u 1000 -g 1000 -m -s /bin/bash s1nk

构建镜像,创建容器并启动

docker build -t aosp-builder:18.04 .
docker run -it --rm -u 1000:1000 -v /home/s1nk/mnt_d/aosp_10:/home/aosp aosp-builder:18.04 /bin/bash

-u 1000:1000 设置uid和gid,是为了确保容器内用户与主机用户权限一致,因为我主机拉源码用的用户就是 s1nk(1000)。

然后继续,三板斧

source build/envsetup.sh

lunch aosp_sailfish-userdebug

make -j$(nproc)

没有报错!退出docker回到主机设置一下 ANDROID_PRODUCT_OUT 环境变量,刷入即可。

export ANDROID_PRODUCT_OUT=/home/s1nk/mnt_d/aosp_10/out/target/product/sailfish/

fastboot flashall -w

成功开机,有点说法的。不过我还是不理解… 有懂的哥们可以浇浇我🥺