ContactsProvider系统源码导入配置AndroidStudio编译环境
一、配置AndroidStudio SDK的环境
- AndroidStudio配置使用自定义SDK
AndroidStudio项目需要调用的API是我们自己framework增加的API时,由于默认使用的官方SDK.因此会找不到对应的API.
解决方案是: 替换AndroidStudio SDK中的SDK为我们系统编译出来的SDK
- 1.在我们系统源码linux中执行make sdk 生成android.jar文件.
路径: repo/out/target/common/obj/PACKAGING/android_jar_intermediates/android.jar
- 2.将linux中android.jar替换掉AndroidStudio SDK中sdk\platforms\android-27\android.jar文件
Tips:通过如上方式配置后的AS环境就不需要导入自己系统编译生成framework.jar,也就不需要通过下面这种方式配置优先加载我们自己framework.jar在allprojects中添加以下代码:allprojects {repositories {jcenter()}gradle.projectsEvaluated {tasks.withType(JavaCompile) {options.compilerArgs.add('-Xbootclasspath/p:app\\ext_libs\\framework.jar')}}Xbootclasspath/p:path – 让jvm优先于默认的bootstrap去加载path中指定的class-Xbootclasspath是设定在指定路径中装载系统运行时类我们一般会用到下面两个参数:-Xbootclasspath/a:path,先搜索缺省路径在搜索path中的路径-Xbootclasspath/p:path,先搜索path中的路径在搜索缺省路径
二、导入android系统源码到AndroidStudio(ContactsProvider系统源码)
- 1.创建AndroidStudio工程的项目
AS中 New Project:
Application name定义为ContactsProvider
Package name定义为ContactsProvider系统源码中AndroidManifest.xml里相同包名
- 2.在AS工程中导入ContactsProvider系统源码
将ContactsProvider系统源码中src、res、AndroidManifest.xml目录覆盖AS工程中对应目录
三、解决导入系统源码后的AS工程的报错
如下图,通过分析ContactsProvider系统源码中的Android.mk文件发现,需要关联动态库ext、telephony-common 静态库android-common、com.android.vcard、guava
在out/target/common/obj/JAVA_LIBRARIES/目录下查找如上需要的库
- ext库,如下图
将out/target/common/obj/JAVA_LIBRARIES/ext_intermediates/classes.jar 拷贝到AS工程libs目录下,并命名为:ext.jar
- android-common库,如下图
将out/target/common/obj/JAVA_LIBRARIES/android-common_intermediates/classes.jar 拷贝到AS工程libs目录下,并命名为:android-common.jar
telephony-common库
com.android.vcard库
guava库
在AS工程中依赖libs中的库文件
如下图,将动态库telephony-common.jar通过compileOnly的方式进行依赖,而静态库使用implementation的方式进行依赖
参考如上方式,将libs中的库全部依赖
Tips:Android Studio3.0后依赖方式关键字变更(括号中为2.x版本的关键字):implementation (compile) // 依赖的库将会参与编译和打包(依赖不会传递,和以下两者推荐使用implementation,implementation会使编译速度有所增快)api(compile) // 依赖的库将会参与编译和打包(依赖可以传递)compileOnly(provided) // 只在编译时有效,不会参与打包 runtimeOnly(apk) // 只在生成apk的时候参与打包,编译时不会参与,很少用testImplementation(testCompile) // 只在单元测试代码的编译以及最终打包测试apk时有效debugImplementation(debugCompile) // 只在debug模式的编译和最终的debug apk打包时有效releaseImplementation(releaseCompile) // 仅仅针对Release 模式的编译和最终的Release apk打包
- 最后一个报错,缺失EventLogTags.java,在源码中搜索 找到对应的类,复制到AS工程中所对应的包下(ContactsProvider\app\src\main\java\com\android\providers\contacts\EventLogTags.java),如下图
最后,Build APk 即可生成非系统签名的apk,将其进行系统签名即可push使用
Tips:将Eclipse或AndroidStudio已经编出来的apk手动配置系统签名:创建SignApk文件夹,把需要重新签名的apk和platform.x509.pem、platform.pk8、signapk.jar文件拷贝到该目录下对应文件在linux所在路径:platform.x509.pem、platform.pk8: build/target/product/securitysignapk.jar: out/host/linux-x86/frameworksignapk源码路径: build/tools/signapk最后执行以下命令生成系统签名后的apkjava -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk
配置好的ContactsProvider代码下载
相关链接直达:
Android系统源码SystemUI导入eclipse编译
Android系统源码Settings导入eclipse
AndroidStudio导入系统源码DeskClock编译生成系统签名apk
ContactsProvider系统源码导入配置AndroidStudio编译环境
ContactsProvider系统源码导入配置AndroidStudio编译环境相关推荐
- Android系统源码导入Android studio
1,下载Android源码 网上很多文章,多半都是在清华或者某个大学的镜像地址下载,repo init...巴拉巴拉的,这里repo就是git的封装,怎么下载怎么运行,不多说了,百度一下.下载哪个版本 ...
- (八)JAVA springcloud ssm b2b2c多用户商城系统源码:配置中心服务化和高可用
server端改造 1.添加依赖 <dependencies><dependency><groupId>org.springframework.cloud</ ...
- 微信小程序代驾系统源码(含未编译前端,二开无忧) v2.5
简介: 如今有越来越多的人在网上做代驾,打造一个代驾平台,既可以让司机增加一笔额外的收入,也解决了车主酒后不能开发的问题,代驾系统基于微信小程序开发的代驾系统支持一键下单叫代驾,支持代驾人员保证金功能 ...
- 【转】Android 4.3源码的下载和编译环境的安装及编译
原文网址:http://jingyan.baidu.com/article/c85b7a641200e0003bac95a3.html 告诉windows用户一个不好的消息,windows环境下没法 ...
- Android AOSP基础(四)Source Insight和Android Studio导入系统源码
本文首发于微信公众号「刘望舒」 关联系列 Android AOSP基础系列 Android系统启动系列 前言 在上一篇文章Android AOSP基础(三)Android系统源码的整编和单编中,我们对 ...
- Android FrameWork学习(二)Android系统源码调试
点击打开链接 通过上一篇 Android FrameWork学习(一)Android 7.0系统源码下载\编译 我们了解了如何进行系统源码的下载和编译工作. 为了更进一步地学习跟研究 Android ...
- Android AOSP基础(三)Android系统源码的整编和单编
本文首发于微信公众号「刘望舒」 关联系列 Android AOSP基础系列 Android系统启动系列 前言 在上一篇文章Android AOSP基础(二)AOSP 源码下载 中,我们顺利的将AOSP ...
- android系统源码中添加app源码(源码部署移植)
涉及到系统定制,需要在系统中加入自己的apk工程,但是上网找了很多资料都是不够全面的,或者看了还是没搞懂,我自己也是一点点摸索过来的,花了不少的时间,也是踩了不少的坑,因此特开一文,帮助大家渡河. 申 ...
- 【Android RTMP】RTMPDumb 源码导入 Android Studio ( 交叉编译 | 配置 CMakeList.txt 构建脚本 )
文章目录 安卓直播推流专栏博客总结 一. RTMP 协议 二. RTMP 协议使用 三. RTMPDump 源码下载 四. RTMPDump 源码交叉编译 五. RTMPDump 源码导入 Andro ...
- Android FrameWork学习(一)Android 7 0系统源码下载 编译
最近计划着研究下 Android 7.0 的系统源码,之前也没做过什么记录,这次正好将学习的内容记录下来,方便以后复习巩固. 既然要学习我们的系统源码,那我们第一步要做的就是下载源码并进行编译了. # ...
最新文章
- 查看eclipse安装了哪些插件
- 关于PyTorch中的register_forward_hook()函数未能执行其中hook函数的问题
- 招聘 | 浙大杨杰课题组-博士后与科研助理-医学AI/NLP
- 【Java面试系列】Linux面试题
- Origin: 软件申请+续期指引
- 【毕业设计】基于单片机的智能饮水控制系统 - 物联网 嵌入式 stm32 c51
- WPF TextBlock Trimming
- 焦距、光圈和景深的关系and实拍图像
- 阿里云储道深度解析存储系统设计——NVMe SSD性能影响因素一探究竟
- HTML学习日记-第二篇
- Coder之路,平凡才是唯一的答案
- txt、csv、trc、log格式转换成asc
- html实现动态花瓣凋落
- 使用python-requests爬虫模拟登陆中国海洋大学教务处网站
- 学PPT,我们一定要ldquo;好色rdquo;
- 厉害了!几行代码搞定机器学习模型
- 彩色cad怎么转为黑白pdf?
- [QT操作XML]QT读写XML文件,QT修改XML文件
- 基于微信小程序的家政服务预约系统设计与实现毕业设计毕设开题报告参考
- 计算机画大熊猫教学设计,大班美术画大熊猫的教学设计