修改编译Android 11源码时发现报can‘t find symble的错误

在/home/wq/android_11_source_repo/packages/apps/Contacts/src/com/android/contacts/activities/ContactSelectionActivity.java

加入了一句

        getWindow().addSystemFlags(android.view.WindowManager.LayoutParams
            .SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);

编译时发现报找不到SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS的错误。 

找打定义SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS的文件:/home/wq/android_11_source_repo/frameworks/base/core/java/android/view/WindowManager.java。发现符的定义如下:

        /**
         * Flag to indicate that any window added by an application process that is of type
         * {@link #TYPE_TOAST} or that requires
         * {@link android.app.AppOpsManager#OP_SYSTEM_ALERT_WINDOW} permission should be hidden when
         * this window is visible.
         * @hide
         */
        @SystemApi
        @RequiresPermission(permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS)
        public static final int SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS = 0x00080000;

发现这个api需要一个权限,在/home/wq/android_11_source_repo/packages/apps/Contacts/src/com/android/contacts/AndroidManifest.xml加入了权限,

    <uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS" />

编译依然报找不到符号的错误。

最后发现要把/home/wq/android_11_source_repo/packages/apps/Contacts/src/com/android/contacts/Android.bp的sdk_version: "current"改为sdk_version: "system_current"

--- a/Android.bp
+++ b/Android.bp
@@ -32,6 +32,6 @@ android_app {
         proguard_flags_files: ["proguard.flags"],
     },
 
-    sdk_version: "current",
+    sdk_version: "system_current",
     min_sdk_version: "21",
 }

查了一下这两个sdk_version的区别:system_current标志启用系统 SDK API/符号,而current根据源树的 android 版本使用当前预构建的公共 SDK。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值