Android 源码编译报错,如下:
看图可以发现是缺少 constraint-layout 引起的错误。这里有一种情况是,其它同事电脑可以编译通过,而自己的电脑编译通不过。原因如下:
constraint-layout 这个jar包是在存放在源码下一个叫 Launcher3的模块里面(别的公司不一定是这样),只有编译了Launcher3之后其它的模块才能使用。自己和同事虽然是用同一套源码,但不同的项目,配置文件有细微的差别,导致自己的电脑没有编译Launcher3模块,所以报错。
上图是笔者负责项目的 mk 文件,AutoHome是项目Launcher。AutoHome 编译文件Android.mk如下图:
红框里的 LOCAL_OVERRIDES_PACKAGES 变量可以使其表示的模块不加入编译,到这里就真相大白了。。。
原因是找出来了,那怎么修改才能不报错呢?
有两种方法:
第一种:注释掉 auto_dual.mk 文件里的 PRODUCT_PACKAGES += AutoHome 这一行
注释后就不会编译AutoHome模块,不会执行AutoHome 编译文件Android.mk,自然就不执行LOCAL_OVERRIDES_PACKAGES := MtkLauncher3 Home Launcher2 Launcher3 这一行代码了,这样Launcher3就会编译。
第二种(没测试):直接注释掉AutoHome 编译文件Android.mk 里的 LOCAL_OVERRIDES_PACKAGES := MtkLauncher3 Home Launcher2 Launcher3
这样就会编译Launcher3了,不过这样注释后编译的系统就有两个Launcher 了。。。