Android P编译错误

时间:2018-08-16 15:45:10

标签: android android-ndk

我正在编译Android P,但无法修复此错误:

x-androideabi/bin   -std=gnu99 -mthumb -Os   -Wall -Werror -Wno-sign-compare -fPIC -D_USING_LIBCXX   -Werror=int-to-pointer-cast -Werror=pointer-to-int-cast -Werror=address-of-temporary -Werror=return-type -Wno-tautological-constant-compare -Wno-null-pointer-arithmetic -Wno-enum-compare -Wno-enum-compare-switch -MD -MF /home/carlos/sources/androidexperience/out/target/product/gt510wifi/obj/STATIC_LIBRARIES/libclearsilverregex_intermediates/android/regex/bb_regex.d -o /home/carlos/sources/androidexperience/out/target/product/gt510wifi/obj/STATIC_LIBRARIES/libclearsilverregex_intermediates/android/regex/bb_regex.o external/busybox/android/regex/bb_regex.c"
external/busybox/android/regex/bb_regex.c:2931:12: error: unused variable 'num_regs' [-Werror,-Wunused-variable]
  unsigned num_regs = 0;
           ^
external/busybox/android/regex/bb_regex.c:5476:20: error: unused parameter 'preg' [-Werror,-Wunused-parameter]
    const regex_t *preg;
                   ^
2 errors generated.
[ 11% 6523/57956] -e Prepare config for busybox binary
find: ‘/home/carlos/sources/androidexperience/out/target/p

如果我使用-Werror可以解决第一个错误,但不能解决第二个错误。

使用-Wunused-parameter的错误

https://github.com/LineageOS/android_external_busybox/blob/cm-14.1/android/regex/bb_regex.c#L5405

有什么主意吗?

2 个答案:

答案 0 :(得分:0)

我今天在Android P中遇到了这个问题。 我在“ const regex_t * preg;”之前添加“ __unused”;并固定。

__unused const regex_t *preg;

答案 1 :(得分:0)

这是因为Android Pie采用了新策略:每个项目的警告都将被视为错误({-Wall -Werror会附加到每个C / C ++编译器命令行中)。只有变量ANDROID_WARNING_ALLOWED_PROJECTS中包含的那些项目才可以忽略警告。请注意,此变量由Soong控制。

解决方法是:打开build/soong/cc/config/global.go,然后将BusyBox的条目添加到列表WarningAllowedProjects中:

        // Directories with warnings from Android.bp files.
        WarningAllowedProjects = []string{
                "device/",
                "vendor/",
+               "external/busybox",
        }

保存,make clean,然后重建。