当前位置: 首页 > news >正文

查询网站入口西安今日头条最新新闻

查询网站入口,西安今日头条最新新闻,2003系统做网站,wordpress VIP系统文章目录 一、 篇头二、 操作步骤2.1 编译AOSP AS工程文件2.2 将AOSP导入Android Studio2.3 切到Project试图2.4 等待index结束2.5 下载缺失的JDK 1.82.6 导入完成 三、 导入AS的好处3.1 本文案例演示源码编译错误AS对比同文件其余地方的调用AS错误提示依赖AS做错误修正 一、 篇…

文章目录

    • 一、 篇头
    • 二、 操作步骤
      • 2.1 编译AOSP AS工程文件
      • 2.2 将AOSP导入Android Studio
      • 2.3 切到Project试图
      • 2.4 等待index结束
      • 2.5 下载缺失的JDK 1.8
      • 2.6 导入完成
    • 三、 导入AS的好处
      • 3.1 本文案例
          • 演示源码
          • 编译错误
          • AS对比同文件其余地方的调用
          • AS错误提示
          • 依赖AS做错误修正

一、 篇头

最近合AOSP蓝牙相关patch,涉及apps,framework等多个部分,出现了编译不过的问题,错误看得一头雾水,想起来,可以用Android Studio导入AOSP代码来进行排查,透过AS的语法提示,补全功能,问题很容易就解决了,于是记录一下,分享给大家。

二、 操作步骤

2.1 编译AOSP AS工程文件

  • 需要获得android.iml 和 android.ipr 这两个AS工程配置文件,常规编译是不会生成的
  • 在编译服务器上,android源码根目录,执行如下命令
szhou@bc01-R630:~/works/aw/android$ source  build/envsetup.sh 
szhou@bc01-R630:~/works/aw/android$ lunch 
szhou@bc01-R630:~/works/aw/android$ mmm development/tools/idegen/
szhou@bc01-R630:~/works/aw/android$ ./development/tools/idegen/idegen.sh

执行结束后,会在根目录下生成android.iml 和 android.ipr 这两个AS工程配置文件,此时已可以直接导入,但会导入几乎所有源码模块,非常慢,必须有目的的打开,过滤掉一些不用的模块和目录。

  • 如下,除了 frameworks 模块和 packages 模块,其他都给过滤掉
  • 打开 android.iml 文件,搜下excludeFolder,在后面加入需要过滤的目录
<excludeFolder url="file://$MODULE_DIR$/art" />
<excludeFolder url="file://$MODULE_DIR$/bionic" />
<excludeFolder url="file://$MODULE_DIR$/bootable" />
<excludeFolder url="file://$MODULE_DIR$/build" />
<excludeFolder url="file://$MODULE_DIR$/compatibility" />
<excludeFolder url="file://$MODULE_DIR$/cts" />
<excludeFolder url="file://$MODULE_DIR$/dalvik" />
<excludeFolder url="file://$MODULE_DIR$/developers" />
<excludeFolder url="file://$MODULE_DIR$/development" />
<excludeFolder url="file://$MODULE_DIR$/device" />
<excludeFolder url="file://$MODULE_DIR$/external" />
<excludeFolder url="file://$MODULE_DIR$/docs" />
<excludeFolder url="file://$MODULE_DIR$/hardware" />
<excludeFolder url="file://$MODULE_DIR$/kernel" />
<excludeFolder url="file://$MODULE_DIR$/libcore" />
<excludeFolder url="file://$MODULE_DIR$/libnativehelper" />
<excludeFolder url="file://$MODULE_DIR$/longan" />
<excludeFolder url="file://$MODULE_DIR$/out" />
<excludeFolder url="file://$MODULE_DIR$/pdk" />
<excludeFolder url="file://$MODULE_DIR$/platform_testing" />
<excludeFolder url="file://$MODULE_DIR$/prebuilts" />
<excludeFolder url="file://$MODULE_DIR$/sdk" />
<excludeFolder url="file://$MODULE_DIR$/system" />
<excludeFolder url="file://$MODULE_DIR$/test" />
<excludeFolder url="file://$MODULE_DIR$/toolchain" />
<excludeFolder url="file://$MODULE_DIR$/tools" />
<excludeFolder url="file://$MODULE_DIR$/vendor" />
  • 如下图所示:
    在这里插入图片描述

2.2 将AOSP导入Android Studio

  • 如下图,打开 Android Studio,选择 Open, 找到源码目录,点击 android.ipr,确定后开始导入
  • 导入时间不到十分钟
    在这里插入图片描述
    在这里插入图片描述

2.3 切到Project试图

  • 如下可见,左侧Project窗口内有两个目录是白色的,此正为此次实验没有排除的源码目录;其余黄色为已排除的目录
  • frameworks和packages目录

在这里插入图片描述

2.4 等待index结束

  • 大约10分钟

在这里插入图片描述

2.5 下载缺失的JDK 1.8

  • 选择Amazon的verison 1.8版本
    在这里插入图片描述

2.6 导入完成

在这里插入图片描述

三、 导入AS的好处

3.1 本文案例

patch 后出现编译错误,直接读源码,看不出如何修改,导入AS之后,即可看到解法

演示源码
  • 如下源码 getResources() 在同文件里,至少被使用6次,偏偏此1510行处报了错误
        @Overridepublic long getSupportedProfiles() {AdapterService service = getService();if (service == null) {return 0;}//error: non-static method getResources() cannot be referenced from a static contextif (getResources().getBoolean(com.android.internal.R.bool.config_support_a2dp_dynamic_sink_source)) {long mask = Config.getSupportedProfilesBitMask();if (SystemProperties.getBoolean("persist.bluetooth.a2dp.sink", false)) {mask = mask & (~BluetoothProfile.A2DP);} else {mask = mask & (~BluetoothProfile.A2DP_SINK);}return mask;} else {return Config.getSupportedProfilesBitMask();}}
编译错误
  • 注意:AdapterService.java:1510
packages/apps/Bluetooth/src/com/android/bluetooth/btservice/AdapterService.java:1510: error: non-static method getResources() cannot be referenced from a static contextif (getResources().getBoolean(com.android.internal.R.bool.config_support_a2dp_dynamic_sink_source)) {^
1 error
18:07:24 ninja failed with: exit status 1#### failed to build some targets (22 seconds) ####szhou@bc01-R630:~/works/aw/android$ 
AS对比同文件其余地方的调用
  • getResources()在相同源码文件中,有7处类似调用,其余地方均未报错
  • getResources().getBoolean()在相同源码文件中,有3处类似调用
  • 大致只到解法要给它弄个对象,但如果不实用AS提示,还真不会写……

在这里插入图片描述

AS错误提示
  • 导入AS后,1510行确实看到错误
  • error: non-static method getResources() cannot be referenced from a static context

在这里插入图片描述

依赖AS做错误修正
  • 使用AS的代码补全、方法提示功能,很快可以通过获得content对象的方式
 //…… 略……
if (service.getApplicationContext().getResources().getBoolean(com.android.internal.R.bool.config_support_a2dp_dynamic_sink_source)) {
//…… 略……

在这里插入图片描述

http://www.mmbaike.com/news/42660.html

相关文章:

  • 网站如果不在公安局备案怎样专门做推广的公司
  • 网易做网站吗产品市场营销策划方案
  • 济南公司做网站的价格sem推广软件哪家好
  • 龙岗做网站永久免费的培训学校管理软件
  • 设计师赚钱的网站山西网站seo
  • 全栈网站开发流程图百度的客服电话是多少
  • 网站设置密码进入sem是指什么
  • 深圳博彩软件网站建设seo网络营销课程
  • 网站建设好不好深圳百度推广
  • 杭州网站建设哪家好腾讯控股第三季度营收1401亿
  • 网站开发和运维区别网站优化要做哪些
  • ip网站架设google免费入口
  • 南阳公司做网站武汉百度开户代理
  • 成都园林景观设计公司排名专业搜索引擎seo合作
  • 资源网站推广搜一搜站长工具
  • 网站排名推广软件苏州seo优化
  • 如何规避电子政务网站建设教训16种营销模型
  • 深圳南山 网站建设怎样在百度打广告
  • 开发网站怎样注册公司论文收录网站
  • 免费网站模板 怎么用百度做广告推广怎么样
  • 网站搭建找谁给网站做seo的价格
  • 网站去公安局备案吗中国企业500强最新排名
  • 有域名怎么免费建站百度收录怎么做
  • 注册域名的网站有哪些源码交易平台
  • 烟台市建设工程质量检测网站电商网站
  • 网站图片怎么做优化高端网站定制开发
  • 淘宝客必须建网站吗国外搜索引擎排行榜
  • wamp个人网站开发来源免费建站的网站哪个好
  • 河北百度seo点击软件网站怎样优化seo
  • 上海网站开发技术最好公司电话重庆seo推广