c 做网站 知乎,滁州建设网站公司,手机的page怎么转wordpress,风铃网站具体是做那方面的文章目录 一、 篇头二、 操作步骤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 Studio2.3 切到Project试图2.4 等待index结束2.5 下载缺失的JDK 1.82.6 导入完成 三、 导入AS的好处3.1 本文案例演示源码编译错误AS对比同文件其余地方的调用AS错误提示依赖AS做错误修正 一、 篇头
最近合AOSP蓝牙相关patch涉及appsframework等多个部分出现了编译不过的问题错误看得一头雾水想起来可以用Android Studio导入AOSP代码来进行排查透过AS的语法提示补全功能问题很容易就解决了于是记录一下分享给大家。
二、 操作步骤
2.1 编译AOSP AS工程文件
需要获得android.iml 和 android.ipr 这两个AS工程配置文件常规编译是不会生成的在编译服务器上android源码根目录执行如下命令
szhoubc01-R630:~/works/aw/android$ source build/envsetup.sh
szhoubc01-R630:~/works/aw/android$ lunch
szhoubc01-R630:~/works/aw/android$ mmm development/tools/idegen/
szhoubc01-R630:~/works/aw/android$ ./development/tools/idegen/idegen.sh执行结束后会在根目录下生成android.iml 和 android.ipr 这两个AS工程配置文件此时已可以直接导入但会导入几乎所有源码模块非常慢必须有目的的打开过滤掉一些不用的模块和目录。 如下除了 frameworks 模块和 packages 模块其他都给过滤掉打开 android.iml 文件搜下excludeFolder在后面加入需要过滤的目录
excludeFolder urlfile://$MODULE_DIR$/art /
excludeFolder urlfile://$MODULE_DIR$/bionic /
excludeFolder urlfile://$MODULE_DIR$/bootable /
excludeFolder urlfile://$MODULE_DIR$/build /
excludeFolder urlfile://$MODULE_DIR$/compatibility /
excludeFolder urlfile://$MODULE_DIR$/cts /
excludeFolder urlfile://$MODULE_DIR$/dalvik /
excludeFolder urlfile://$MODULE_DIR$/developers /
excludeFolder urlfile://$MODULE_DIR$/development /
excludeFolder urlfile://$MODULE_DIR$/device /
excludeFolder urlfile://$MODULE_DIR$/external /
excludeFolder urlfile://$MODULE_DIR$/docs /
excludeFolder urlfile://$MODULE_DIR$/hardware /
excludeFolder urlfile://$MODULE_DIR$/kernel /
excludeFolder urlfile://$MODULE_DIR$/libcore /
excludeFolder urlfile://$MODULE_DIR$/libnativehelper /
excludeFolder urlfile://$MODULE_DIR$/longan /
excludeFolder urlfile://$MODULE_DIR$/out /
excludeFolder urlfile://$MODULE_DIR$/pdk /
excludeFolder urlfile://$MODULE_DIR$/platform_testing /
excludeFolder urlfile://$MODULE_DIR$/prebuilts /
excludeFolder urlfile://$MODULE_DIR$/sdk /
excludeFolder urlfile://$MODULE_DIR$/system /
excludeFolder urlfile://$MODULE_DIR$/test /
excludeFolder urlfile://$MODULE_DIR$/toolchain /
excludeFolder urlfile://$MODULE_DIR$/tools /
excludeFolder urlfile://$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) ####szhoubc01-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)) {
//…… 略……