使用WSL搭建环境需要特别注意的几点
如下几点需要在解压完“aosp-latest.tar”之后和repo sync之前操作。
- 设置aosp源码所在路径为大小写敏感,win10系统支持新建的子目录继承父目录的大小写敏感特性,所以只需要设置aosp根目录大小写敏感,参考命令如下(在cmd窗口执行,路径替换为自己实际的aosp路径):
fsutil.exe file SetCaseSensitiveInfo D:\07.workspace\aosp enable
-
设置D:\07.workspace\aosp的所有用户为“完全控制”权限
image.png
主要参考以下博文
Ubentu编译Android源码(AOSP)
win10搭建阅读Android源码环境
编译命令和过程如下
- 切换到aosp主目录执行初始化环境命令:
andy@andy-PC:/mnt/d/07.workspace$ cd aosp/
andy@andy-PC:/mnt/d/07.workspace/aosp$ source build/envsetup.sh
- 执行lunch并选择编译的目标版本,这里选择25,即“25. aosp_x86_64-eng”
说明:如果你的电脑是64位的话,选择25,因为x86版本的虚拟机运行比较快。不要编译arm 版本的了,运行起来太慢,而且运行不起来。
andy@andy-PC:/mnt/d/07.workspace/aosp$ lunch
You're building on Linux
Lunch menu... pick a combo:
1. aosp_arm-eng
2. aosp_arm64-eng
3. aosp_blueline-userdebug
4. aosp_bonito-userdebug
5. aosp_car_arm-userdebug
6. aosp_car_arm64-userdebug
7. aosp_car_x86-userdebug
8. aosp_car_x86_64-userdebug
9. aosp_cf_arm64_auto-userdebug
10. aosp_cf_arm64_phone-userdebug
11. aosp_cf_x86_64_phone-userdebug
12. aosp_cf_x86_auto-userdebug
13. aosp_cf_x86_phone-userdebug
14. aosp_cf_x86_tv-userdebug
15. aosp_coral-userdebug
16. aosp_coral_car-userdebug
17. aosp_crosshatch-userdebug
18. aosp_crosshatch_car-userdebug
19. aosp_flame-userdebug
20. aosp_sargo-userdebug
21. aosp_taimen-userdebug
22. aosp_walleye-userdebug
23. aosp_walleye_test-userdebug
24. aosp_x86-eng
25. aosp_x86_64-eng
26. arm_krait-eng
27. arm_v7_v8-eng
28. armv8-eng
29. armv8_kryo385-eng
30. beagle_x15-userdebug
31. beagle_x15_auto-userdebug
32. car_x86_64-userdebug
33. db845c-userdebug
34. fuchsia_arm64-eng
35. fuchsia_x86_64-eng
36. hikey-userdebug
37. hikey64_only-userdebug
38. hikey960-userdebug
39. hikey960_tv-userdebug
40. hikey_tv-userdebug
41. pixel3_mainline-userdebug
42. poplar-eng
43. poplar-user
44. poplar-userdebug
45. qemu_trusty_arm64-userdebug
46. silvermont-eng
47. uml-userdebug
48. yukawa-userdebug
49. yukawa_sei510-userdebug
Which would you like? [aosp_arm-eng] 25
============================================
PLATFORM_VERSION_CODENAME=S
PLATFORM_VERSION=S
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=generic
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-4.19.104-microsoft-standard-x86_64-Ubuntu-20.04-LTS
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=AOSP.MASTER
OUT_DIR=out
PRODUCT_SOONG_NAMESPACES=device/generic/goldfish device/generic/goldfish-opengl device/generic/goldfish device/generic/goldfish-opengl
============================================
- 执行编译命令make -j8
andy@andy-PC:/mnt/d/07.workspace/aosp$ make -j8
23:30:00 ************************************************************
23:30:00 You are building on a machine with 12.4GB of RAM
23:30:00
23:30:00 The minimum required amount of free memory is around 16GB,
23:30:00 and even with that, some configurations may not work.
23:30:00
23:30:00 If you run into segfaults or other errors, try reducing your
23:30:00 -j value.
23:30:00 ************************************************************
============================================
PLATFORM_VERSION_CODENAME=S
PLATFORM_VERSION=S
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=generic
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-4.19.104-microsoft-standard-x86_64-Ubuntu-20.04-LTS
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=AOSP.MASTER
OUT_DIR=out
PRODUCT_SOONG_NAMESPACES=device/generic/goldfish device/generic/goldfish-opengl device/generic/goldfish device/generic/goldfish-opengl
============================================
- 编译成功的日志打印和截图如下
说明:编译成功用时 (06:08:37 (hh:mm:ss)),这是在多次编译情况下成功的耗时,若首次的话(经过多次长时间的编译才成功,中间遇到了很多坑),时间应该会更长。。。
frameworks/base/services/usb/java/com/android/server/usb/UsbPortManager.java:50: info: Unresolved import: `android.hardware.usb.V1_2.PortStatus` [UnresolvedImport]
frameworks/base/services/usb/java/com/android/server/usb/UsbPortManager.java:51: info: Unresolved import: `android.hidl.manager.V1_0.IServiceManager` [UnresolvedImport]
frameworks/base/services/usb/java/com/android/server/usb/UsbPortManager.java:52: info: Unresolved import: `android.hidl.manager.V1_0.IServiceNotification` [UnresolvedImport]metalava detected access to files that are not explicitly specified. See /mnt/d/07.workspace/aosp/out/soong/.intermediates/frameworks/base/services/services-stubs.sources/android_common/services-stubs.sources-violations.txt for details.
[ 99% 2301/2319] Target Java: out/target/common/obj/APPS/Dialer_intermediates/classes-full-debug.jar
Note: Generating a Provider for com.android.dialer.glidephotomanager.impl.GlidePhotoManagerImpl. Prefer to run the dagger processor over that class instead.
Note: [1] Wrote GeneratedAppGlideModule with: []
[ 99% 2304/2319] R8: out/target/common/obj/APPS/Dialer_intermediates/dex/classes.dex
Stripped invalid locals information from 1 method.
In ./out/target/common/obj/APPS/Dialer_intermediates/classes.jar:android/support/v7/widget/Toolbar.class:
Methods with invalid locals information:
void android.support.v7.widget.Toolbar.onLayout(boolean, int, int, int, int)
Type information in locals-table is inconsistent. Cannot constrain type: INT for value: v419 by constraint OBJECT.
Some warnings are typically a sign of using an outdated Java toolchain. To fix, recompile the source with an updated toolchain.
[100% 2319/2319] Target vbmeta image: out/target/product/generic/vbmeta.img
#### build completed successfully (06:08:37 (hh:mm:ss)) ####
andy@andy-PC:/mnt/d/07.workspace/aosp$
image.png
网友评论