丨版权说明 : 《如何快速优雅地导入第三方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的主要原因之一。
- 最新
- 最热
只看作者