如何快速优雅地导入第三方Android项目

原创 cheny  2018-06-15 18:04  阅读 908 views 次 评论 10 条
摘要:

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

版权说明 : 《如何快速优雅地导入第三方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为随机码目录,意味着AS每次创建该目录,目录名可能都不相同,不要在意这点,反正Gradle最终是安装在随机码目录下。

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


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

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

本文地址:https://www.icheny.cn/archives/1136
关注我们:请关注一下微信公众号:扫描二维码乘月网的公众号,公众号:it_place
版权声明:本文为原创文章,版权归 cheny 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

  1. 老杜
    老杜 【农民】 @回复

    收藏先

  2. 小神仙
    小神仙 【农民】 @回复

    你好,我也是做开发的,最近也在做个网站,可否交换个友链http://www.lgwimonday.cn/

  3. boke112导航
    boke112导航 【农民】 @回复

    隔行如隔山,只能路过灌灌水 [阴险]

    • cheny
      cheny 【村长】【站长】2018-06-20 at 09:02  回复

      @boke112导航您老才是技术牛人 ,我水得很[赞]

  4. 新闻头条
    新闻头条 【农民】 @回复

    文章不错非常喜欢

  5. 区块链
    区块链 【农民】 @回复

    要是会开发APP就好

    • cheny
      cheny 【村长】【站长】2018-07-20 at 09:53  回复

      @区块链有的,已经出品了一款app,你可以看看

  6. 90之家
    90之家 【农民】 @回复

    你好,我也是做开发的,最近也在做个网站,可否交换个友链http://blog.hack-jiuling.cn/

    • cheny
      cheny 【村长】【站长】2018-07-31 at 15:32  回复

      @90之家请在留言板留言按格式申请哦 [OK]