android源码编译笔记--踩坑

错误:ninja: build stopped: subcommand failed.

解决:

打开 prebuilts/sdk/tools/jack-admin

找到 JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR     $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"

修改为 JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp $LAUNCHER_JAR $LAUNCHER_NAME"

重启jack-server

$ ./prebuilts/sdk/tools/jack-admin stop-server 
$ ./prebuilts/sdk/tools/jack-admin start-server
 

make clean这个命令最好少用,不然在Make的时候又是5小时的编译

make clean 命名在修改了art源码的时候需要加入,不然编译出来了system/lib 里面的so不变(fart源码编译)

单独编译system.img 在根目录下source build/envsetup.sh   ,lunch ,make systemimage -j4

ubuntu18.04.5 编译android_10_r33报错:

[100% 47/47] out/soong/.bootstrap/bin/soong_build out/soong/build.ninja
FAILED: out/soong/build.ninja
out/soong/.bootstrap/bin/soong_build -t -l out/.module_paths/Android.bp.list -b out/soong -n out -d out/soong/build.ninja.d -globFile out/soong/.bootstrap/build-globs.ninja -o out/soong/build.ninja Android.bp
Killed
14:41:13 soong bootstrap failed with: exit status 1

解决:

虚拟机ram不够,分配成16GB和2*4处理器最好,然后swap分区2G加到20G(一般ubuntu 18.04分配的是 2g)

参考:

ubuntu swap分区加大

报错:

ubuntu18.04.5无法安装libesd0-dev

解决:

1 sudo vim /etc/apt/sources.list  //在行尾添加如下两行的内容
2 deb http://us.archive.ubuntu.com/ubuntu/ xenial main universe
3 deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main universe

然后重新更新软件源下载

在进行源码同步的时候,南方最好用中科大的源,北方用清华的源

清华:

https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest

中科大: 

git://mirrors.ustc.edu.cn/aosp/platform/manifest


android 10在配置selinux访问策略文件后,编译报错:

[  4% 3/74] build out/target/product/taimen/obj/ETC/built_plat_sepolicy_intermed
FAILED: out/target/product/taimen/obj/ETC/built_plat_sepolicy_intermediates/built_plat_sepolicy
/bin/bash -c "(ASAN_OPTIONS=detect_leaks=0 out/host/linux-x86/bin/checkpolicy -M -C -c 		30 -o out/target/product/taimen/obj/ETC/built_plat_sepolicy_intermediates/built_plat_sepolicy out/target/product/taimen/obj/ETC/built_plat_sepolicy_intermediates/base_plat_policy.conf ) && (cat   system/sepolicy/private/technical_debt.cil >> out/target/product/taimen/obj/ETC/built_plat_sepolicy_intermediates/built_plat_sepolicy ) && (out/host/linux-x86/bin/secilc -m -M true -G -c 30  out/target/product/taimen/obj/ETC/built_plat_sepolicy_intermediates/built_plat_sepolicy -o out/target/product/taimen/obj/ETC/built_plat_sepolicy_intermediates/built_plat_sepolicy -f /dev/null )"
neverallow check failed at out/target/product/taimen/obj/ETC/built_plat_sepolicy_intermediates/built_plat_sepolicy:11640 from system/sepolicy/public/property.te:352
  (neverallow base_typeattr_461 base_typeattr_462 (property_service (set)))
    <root>
    allow at out/target/product/taimen/obj/ETC/built_plat_sepolicy_intermediates/built_plat_sepolicy:18299
      (allow system_app mysystem_prop (property_service (set)))
    <root>
    allow at out/target/product/taimen/obj/ETC/built_plat_sepolicy_intermediates/built_plat_sepolicy:18303
      (allow system_app mysystem_prop (property_service (set)))

Failed to generate binary
Failed to build policydb
[  5% 4/74] build out/target/product/taimen/obj/ETC/userdebug_plat_sepolicy.cil_
FAILED: out/target/product/taimen/obj/ETC/userdebug_plat_sepolicy.cil_intermediates/userdebug_plat_sepolicy.cil
/bin/bash -c "(ASAN_OPTIONS=detect_leaks=0 out/host/linux-x86/bin/checkpolicy -M -C -c 		30 -o out/target/product/taimen/obj/ETC/userdebug_plat_sepolicy.cil_intermediates/userdebug_plat_sepolicy.cil.tmp out/target/product/taimen/obj/ETC/userdebug_plat_sepolicy.cil_intermediates/userdebug_plat_policy.conf ) && (cat   system/sepolicy/private/technical_debt.cil   >> out/target/product/taimen/obj/ETC/userdebug_plat_sepolicy.cil_intermediates/userdebug_plat_sepolicy.cil.tmp ) && (out/host/linux-x86/bin/secilc -m -M true -G -c 30  out/target/product/taimen/obj/ETC/userdebug_plat_sepolicy.cil_intermediates/userdebug_plat_sepolicy.cil.tmp -o /dev/null -f /dev/null ) && (mv out/target/product/taimen/obj/ETC/userdebug_plat_sepolicy.cil_intermediates/userdebug_plat_sepolicy.cil.tmp out/target/product/taimen/obj/ETC/userdebug_plat_sepolicy.cil_intermediates/userdebug_plat_sepolicy.cil )"
neverallow check failed at out/target/product/taimen/obj/ETC/userdebug_plat_sepolicy.cil_intermediates/userdebug_plat_sepolicy.cil.tmp:11818 from system/sepolicy/public/property.te:352
  (neverallow base_typeattr_470 base_typeattr_471 (property_service (set)))
    <root>
    allow at out/target/product/taimen/obj/ETC/userdebug_plat_sepolicy.cil_intermediates/userdebug_plat_sepolicy.cil.tmp:18881
      (allow system_app mysystem_prop (property_service (set)))
    <root>
    allow at out/target/product/taimen/obj/ETC/userdebug_plat_sepolicy.cil_intermediates/userdebug_plat_sepolicy.cil.tmp:18885
      (allow system_app mysystem_prop (property_service (set)))

Failed to generate binary
Failed to build policydb
[  6% 5/74] build out/target/product/taimen/obj/ETC/plat_sepolicy.cil_intermedia
FAILED: out/target/product/taimen/obj/ETC/plat_sepolicy.cil_intermediates/plat_sepolicy.cil
/bin/bash -c "(ASAN_OPTIONS=detect_leaks=0 out/host/linux-x86/bin/checkpolicy -M -C -c 		30 -o out/target/product/taimen/obj/ETC/plat_sepolicy.cil_intermediates/plat_sepolicy.cil.tmp out/target/product/taimen/obj/ETC/plat_sepolicy.cil_intermediates/plat_policy.conf ) && (cat   system/sepolicy/private/technical_debt.cil   >> out/target/product/taimen/obj/ETC/plat_sepolicy.cil_intermediates/plat_sepolicy.cil.tmp ) && (out/host/linux-x86/bin/secilc -m -M true -G -c 30  out/target/product/taimen/obj/ETC/plat_sepolicy.cil_intermediates/plat_sepolicy.cil.tmp -o /dev/null -f /dev/null ) && (mv out/target/product/taimen/obj/ETC/plat_sepolicy.cil_intermediates/plat_sepolicy.cil.tmp out/target/product/taimen/obj/ETC/plat_sepolicy.cil_intermediates/plat_sepolicy.cil )"
neverallow check failed at out/target/product/taimen/obj/ETC/plat_sepolicy.cil_intermediates/plat_sepolicy.cil.tmp:11818 from system/sepolicy/public/property.te:352
  (neverallow base_typeattr_470 base_typeattr_471 (property_service (set)))
    <root>
    allow at out/target/product/taimen/obj/ETC/plat_sepolicy.cil_intermediates/plat_sepolicy.cil.tmp:18881
      (allow system_app mysystem_prop (property_service (set)))
    <root>
    allow at out/target/product/taimen/obj/ETC/plat_sepolicy.cil_intermediates/plat_sepolicy.cil.tmp:18885
      (allow system_app mysystem_prop (property_service (set)))

Failed to generate binary
Failed to build policydb
14:53:26 ninja failed with: exit status 1

主要是因为策略冲突了,一边允许一边不允许,所以删除不允许的那部分就行了

解决:

删除system/sepolicy/public/property.te:352中的neverallow策略,就是:

compatible_property_only(`
  # Neverallow coredomain to set vendor properties
  neverallow {
    coredomain
    -init
    -system_writes_vendor_properties_violators
  } {
    property_type
    -apexd_prop
    -audio_prop
    -bluetooth_a2dp_offload_prop
    -bluetooth_audio_hal_prop
    -bluetooth_prop
    -bootloader_boot_reason_prop
    -boottime_prop
    -bpf_progs_loaded_prop
    -config_prop
    -cppreopt_prop
    -ctl_adbd_prop
    -ctl_bootanim_prop
    -ctl_bugreport_prop
    -ctl_console_prop
    -ctl_default_prop
    -ctl_dumpstate_prop
    -ctl_fuse_prop
    -ctl_gsid_prop
    -ctl_interface_restart_prop
    -ctl_interface_start_prop
    -ctl_interface_stop_prop
    -ctl_mdnsd_prop
    -ctl_restart_prop
    -ctl_rildaemon_prop
    -ctl_sigstop_prop
    -ctl_start_prop
    -ctl_stop_prop
    -dalvik_prop
    -debug_prop
    -debuggerd_prop
    -default_prop
    -device_logging_prop
    -dhcp_prop
    -dumpstate_options_prop
    -dumpstate_prop
    -exported2_config_prop
    -exported2_default_prop
    -exported2_radio_prop
    -exported2_system_prop
    -exported2_vold_prop
    -exported3_default_prop
    -exported3_radio_prop
    -exported3_system_prop
    -exported_bluetooth_prop
    -exported_config_prop
    -exported_dalvik_prop
    -exported_default_prop
    -exported_dumpstate_prop
    -exported_ffs_prop
    -exported_fingerprint_prop
    -exported_overlay_prop
    -exported_pm_prop
    -exported_radio_prop
    -exported_secure_prop
    -exported_system_prop
    -exported_system_radio_prop
    -exported_vold_prop
    -exported_wifi_prop
    -extended_core_property_type
    -ffs_prop
    -fingerprint_prop
    -firstboot_prop
    -device_config_activity_manager_native_boot_prop
    -device_config_reset_performed_prop
    -device_config_boot_count_prop
    -device_config_input_native_boot_prop
    -device_config_netd_native_prop
    -device_config_runtime_native_boot_prop
    -device_config_runtime_native_prop
    -device_config_media_native_prop
    -dynamic_system_prop
    -gsid_prop
    -heapprofd_enabled_prop
    -heapprofd_prop
    -hwservicemanager_prop
    -last_boot_reason_prop
    -system_lmk_prop
    -log_prop
    -log_tag_prop
    -logd_prop
    -logpersistd_logging_prop
    -lowpan_prop
    -lpdumpd_prop
    -mmc_prop
    -net_dns_prop
    -net_radio_prop
    -netd_stable_secret_prop
    -nfc_prop
    -overlay_prop
    -pan_result_prop
    -persist_debug_prop
    -persistent_properties_ready_prop
    -pm_prop
    -powerctl_prop
    -radio_prop
    -restorecon_prop
    -safemode_prop
    -serialno_prop
    -shell_prop
    -system_boot_reason_prop
    -system_prop
    -system_radio_prop
    -system_trace_prop
    -test_boot_reason_prop
    -test_harness_prop
    -theme_prop
    -time_prop
    -traced_enabled_prop
    -traced_lazy_prop
    -vendor_default_prop
    -vendor_security_patch_level_prop
    -vold_prop
    -wifi_log_prop
    -wifi_prop
  }:property_service set;
')

修改为:

compatible_property_only(`
  # Neverallow coredomain to set vendor properties
')

然后编译会报错,

SELinux: The following public types were found added to the policy without an entry into the compatibility mapping file(s) found in private/compat/V.v/V.v[.ignore].cil, where V.v is the latest API level.
mysystem_prop
这是因为只在system/sepolicy/public/property.te和 system/sepolicy/prebuilts/api/29.0/public/property.te中修改了,26、27、28中没有修改,需要在/system/sepolicy/private/compat/26.0、/system/sepolicy/private/compat/27.0、/system/sepolicy/private/compat/28.0的28.0.ignore.cil中添加mysystem_prop

/*

[  0% 3/2890] build out/target/product/taimen/obj/ETC/sepolicy_neverallows_inter

FAILED: out/target/product/taimen/obj/ETC/sepolicy_neverallows_intermediates/plat_pub_policy.cil

/bin/bash -c "(ASAN_OPTIONS=detect_leaks=0 out/host/linux-x86/bin/checkpolicy -C -M -c 30 -o out/target/product/taimen/obj/ETC/sepolicy_neverallows_intermediates/plat_pub_policy.cil out/target/product/taimen/obj/ETC/sepolicy_neverallows_intermediates/plat_pub_policy.conf ) && (out/host/linux-x86/bin/build_sepolicy -a out/host/linux-x86/bin filter_out        -f out/target/product/taimen/obj/ETC/sepolicy_neverallows_intermediates/reqd_policy_mask.cil -t out/target/product/taimen/obj/ETC/sepolicy_neverallows_intermediates/plat_pub_policy.cil )"

system/sepolicy/public/file.te:505:ERROR 'syntax error' at token 'fingerprintd' on line 14365:

# /data/system/xsettings/

type frdinject_data_file,file_type,data_file_type,core_data_file_type,mlstrustedobjecttype fingerprintd, domain;

checkpolicy:  error(s) encountered while parsing configuration

[  0% 6/2890] build out/target/product/taimen/obj/ETC/sepolicy_neverallows_inter

FAILED: out/target/product/taimen/obj/ETC/sepolicy_neverallows_intermediates/pub_policy.cil

/bin/bash -c "(ASAN_OPTIONS=detect_leaks=0 out/host/linux-x86/bin/checkpolicy -C -M -c 30 -o out/target/product/taimen/obj/ETC/sepolicy_neverallows_intermediates/pub_policy.cil out/target/product/taimen/obj/ETC/sepolicy_neverallows_intermediates/pub_policy.conf ) && (out/host/linux-x86/bin/build_sepolicy -a out/host/linux-x86/bin filter_out      -f out/target/product/taimen/obj/ETC/sepolicy_neverallows_intermediates/reqd_policy_mask.cil -t out/target/product/taimen/obj/ETC/sepolicy_neverallows_intermediates/pub_policy.cil )"

system/sepolicy/public/file.te:505:ERROR 'syntax error' at token 'fingerprintd' on line 14365:

# /data/system/xsettings/

type frdinject_data_file,file_type,data_file_type,core_data_file_type,mlstrustedobjecttype fingerprintd, domain;

checkpolicy:  error(s) encountered while parsing configuration

17:33:06 ninja failed with: exit status 1

 */

 //语法错误。type frdinject_data_file,file_type,data_file_type,core_data_file_type,mlstrustedobject 少了; 改为 type frdinject_data_file,file_type,data_file_type,core_data_file_type,mlstrustedobject;

报错:

error: Added package android.xfrd [AddedPackage]
Aborting: Found compatibility problems checking the public API against the API in /home/aun/android10-r1/frameworks/base/api/current.txt
-e 
******************************
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 api-stubs-docs-update-current-api

      To submit the revised current.txt to the main Android repository,
      you will need approval.
******************************
加入package没有更新api,在编译之前执行make api-stubs-docs-update-current-api -j4

报错:

原因:添加了函数和cpp、.h文件没有在android.bp中说明

解决:在android.bp中添加:

srcs: [
        "daemon/main.cpp",
        //add start
        "daemon/shell_socket_service.cpp",
        //add end
    ],

 

  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值