**丨**版权说明 : 《如何快速优雅地导入第三方Android项目》于当前CSDN博客和乘月网属同一原创,转载请说明出处,谢谢。

最近有很多朋友都在向我抱怨导入第三方项目遇到各种各样的问题,有的人怀疑这些项目有问题,有的人则不惜修改Android Studio(下文简称:AS)或jdk的一些底层配置。鉴于此,作此文统一回答。

其实好好想想:谁会没事干上传些有问题的项目呢?你有做过多少项目需要修改AS或jdk的底层配置呢?这反映了你对AS的Android项目结构的认识较浅或平时导入第三方项目爬坑的总结较少哈。本文只针对AS导入第三方Android项目,至于Eclipse?方法虽有,但求别再折腾了,赶紧换AS吧。


了解AS项目主要构建要素

项目 构建要素 构建项目费时费力指数
1、Gradle gradle构建资源包,gradle tools构建插件 ★★★★★
2、buildTools Android构建工具包 ★★★★
3、sdk compileSdk,targetSdk ★★★★
4、support lib 如:support-v4,appcompat-v7 ★★
5、第三方lib 如:图片解析库glide,网络解析库okhttp

分析

其实构建Android项目本身并不麻烦,也不太耗时,主要是因为如果AS本地没有安装过目标项目指定版本的这些要素,AS就会现场下载,安装这些要素,然后再去构建目标项目。如果中间出现下载或解压或安装错误,你不知道怎么去解决,那真的要怀疑人生了。

如何优雅?

1.先下载AS项目压缩包解压好,或者从git和svn下载项目文件,再准备用AS导入项目

请注意:先准备好要导入的项目,不要急着AS直接导入。现在AS很强大,本身支持git和svn导入项目,但请不要这么做,除非你确定它们能很好的导入

2.对照已有的AS项目修改目标项目关于这些要素的版本号

你可能明白我的意思了,如果本地有了这些版本的要素,那就不用下载了,是不是?

本文以开源库CySharedElementTransition为目标项目例子,下载地址:https://github.com/ausboyue/CySharedElementTransition,先下载压缩包,再解压。

打开已有的项目,查看gradle构建资源包版本:

gradle为gradle-4.6-all.zip版本包,那么请把目标项目的gradle-wrapper.properties文件内容里的版本gradle-4.4-all.zip改为gradle-4.6-all.zip

同理对照着修改buildTools,sdk,support lib,第三方lib版本

Ok,作出以上修改,差不多就可以安心的用AS导入目标项目了。

值得注意的是:第三方lib版本能不修改最好不要去修改,第一他们几乎不会影响下载和编译速度,第二,他们每个版本的api代码可能不一样,修改后项目出现某类某方法找不到等等错误,你懂的。

写到最后

你以为就这样结束了?作为五星指数的Gradle可谓麻烦众多,容我再唠叨2点:

1. Gradle构建工具插件和Gradle版本有着一定的版本对应关系,看下表:

Gradle插件版本 要求的Gradle版本范围
1.0.0 - 1.1.3 2.2.1 - 2.3
1.2.0 - 1.3.1 2.2.1 - 2.9
1.5.0 2.2.1 - 2.13
2.0.0 - 2.1.2 2.10 - 2.13
2.1.3 - 2.2.3 2.14.1+
2.3.0+ 3.3+
3.0.0+ 4.1+
3.1.0+ 4.4+
com.android.tools.build:gradle:版本号 https://services.gradle.org/distributions/gradle-版本号-all.zip

所以在修改gradle版本时请注意两者版本的对应关系,以免出现问题。

2. 如果你真的不想改动第三方项目的gradle版本,而本地没有安装过该版本

这里介绍一个很简单粗暴的方法,仍以CySharedElementTransition为例,项目gradle版本为4.4,本地没有安装该版本的Gradle,先导入CySharedElementTransition,AS一直卡在gradle中(其实是在下载4.4版本的Gradle),这时候直接通过任务管理器或其它方式强制关闭AS,然后进入Gradle编译包的安装目录,windows默认在用户目录下C:\Users\Cheny\.gradle\wrapper\dists\,如下图:

AS在导入项目进入gradle中时,如果本地没有目标版本的Gradle编译包就会自动为其创建安装目录gradle-4.4-all\9br9xq1tocpiv8o6njlyu5op1,其中9br9xq1tocpiv8o6njlyu5op1为Gradle插件通过算法(md5+base36组合算法,不是本文重点)生成的目录名,Gradle编译包最终会安装在该目录下。

然后自行通过某雷,某DM,浏览器等下载器下载目标版本的压缩包,https://services.gradle.org/distributions/gradle-4.4-all.zip(https://services.gradle.org/distributions/gradle-版本号-all.zip),下载完毕后将压缩包复制到安装目录下,目录下的其它文件全部删除(包括.lck、.ok和.part等文件):

打开AS,打开CySharedElementTransition或重新导入CySharedElementTransition即可自动解压安装目标版本Gradle包,构建要素的第一项算是完成了。

总结:说来说去,都是离不开“下载”两个字,毕竟是国外的IDE,如果能开上代理网络,或许这些问题都能迎刃而解了。当然,能不下载就别去下载,这样可以有效避免下载过多几乎不用的gradle和sdk等资源,这些问题是导致很多人的c盘慢慢爆满了,AS,sdk达到十几甚至几十g的主要原因之一。

如何快速优雅地导入第三方Android项目相关推荐

  1. 导入一个android项目需要改什么意思,导入别人的Android Studio项目前要修改的文件...

    AS在导入项目过程中会检查项目中所需的gradle版本 sdk版本等本地是否有, 没有的话就会从官网下载, 众所周知要想从谷歌官网下载东西在我朝是十分困难的.所以需要修改成本地有的.主要改三个个 第一 ...

  2. android程序导入虚拟机,android项目打包成apk应用程序后部署到虚拟机上测试

    一:打包成apk包 这个比较简单,如下 右键点击项目--> export -->  android Project -->  选择密钥等信息  --> 填写密钥信息  --&g ...

  3. Eclipse导入android项目出现很多错误

    Eclipse导入android项目出现很多错误 [问题描述]       使用Eclipse导入别人正确的android项目,会出现很多未知的错误.如下面的AndroidTest项目,在别人的Ecl ...

  4. 编译Android项目的时候提示非法字符:“\ufeff”的解决方法

    当编译一个新导入进Android studio的项目编译后提示非法字符:"\ufeff"的错误提示时,只需要将将字符改为GBK,然后再转化为UTF-8即可解决. 问题原因: 刚导入 ...

  5. Android Studio导入第三方类库的方法

     Android Studio导入第三方类库的方法 本人也刚刚开始尝试做android app的开发,听说android studio是Google支持的android 应用开发工具,所以想应该肯 ...

  6. Android消息通信之无所不能的第三方开源项目EventBus

     Android消息通信之无所不能的第三方开源项目EventBus 在Android开发中,消息通信在开发过程中是比较重要但比较略微繁琐的过程,比如,Activity与Fragment之间的消息通 ...

  7. android studio 导入第三方库的记录

    android studio 导入第三方库的记录.jar包 和 库 一.jar包 1.jar包的话很简单,首先换成project模式,将你要用的jar包复制到lib下面.如图 2.然后右键选择Add ...

  8. Android中导入第三方jar

    右键工程, Build path, Java build path,选择libraries 在右边的按钮中点击"Add Library" 选择"User library& ...

  9. Android Studio中导入第三方库

    之前开发Android都是使用的eclipse,近期因为和外国朋友Timothy一起开发一款应用,他是从WP平台刚切换使用Android的,使用的开发环境时Android Studio,为了便于项目的 ...

最新文章

  1. linux i18n修改,中文版英文版体现
  2. caffe 提取特征并可视化(已测试可执行)及在线可视化
  3. window linux IPC ftok BY_HANDLE_FILE_INFORMATION
  4. c python 内存冲突_Python在计算内存时应该注意的问题?
  5. INET Sockets Tour: ioctl()
  6. [CODEVS 1036]商务旅行
  7. 20190911:(leetcode习题)计数质数
  8. Java 技术体系(JDK 与 JRE 的关系)、POJO 与 JavaBeans
  9. 树莓派c语言和笔记本,将树莓派变成笔记本电脑的5种方法
  10. 2021-2027全球及中国油田钻机行业研究及十四五规划分析报告
  11. 基于FPGA的脉冲压缩设计(Matlab+vivado)
  12. Excel 用 vba 批量插入/提取批注
  13. mysql实现翻页功能
  14. 小米全系列手机 刷机总贴
  15. Kafka从零开始 (Kafka是什么?)
  16. 2.3、JavaScript 数据类型 - 数字类型
  17. 有赞基于Flutter的移动端跨平台App架构实践
  18. Android百度地图测距功能
  19. 第七届蓝桥杯JavaA组国(决)赛部分真题
  20. Word 自带公式转为mathtype格式

热门文章

  1. 微信域名weixin.com天价成交!是腾讯吗?
  2. mcinabox运行库下载_mcinabox下载-mcinabox运行库(启动器)官网最新版(附使用教程)v0.1.0-完全实况...
  3. foxmail导入csv邮箱联系人乱码
  4. 内网服务通过frp内网穿透映射到公网
  5. 『PyTorch』学习笔记 2 —— 模型 Finetune
  6. 计算机设备机房防静电标准,机房防静电地板设计标准是什么?
  7. Paper:《YOLOv4: Optimal Speed and Accuracy of Object Detection》的翻译与解读
  8. Cannot deserialize instance of `java.util.ArrayList<java.lang.Object>` out of VALU
  9. LINUX杂谈与系统编程
  10. 小傻蛋的妹妹跟随小甲鱼学习Python的第十六节016