【移动应用开发技术】老项目迁移AndroidStudio3.0遇到的坑_第1页
【移动应用开发技术】老项目迁移AndroidStudio3.0遇到的坑_第2页
【移动应用开发技术】老项目迁移AndroidStudio3.0遇到的坑_第3页
【移动应用开发技术】老项目迁移AndroidStudio3.0遇到的坑_第4页
【移动应用开发技术】老项目迁移AndroidStudio3.0遇到的坑_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】老项目迁移AndroidStudio3.0遇到的坑

AndroidStudio3.0刚刚发布两天(版本控的我~),便迫不及待的升级了,升级前也明白这次的版本跨度较大,老项目可能存在很多的问题,没成想还是从中午折腾到了晚上十点.不过结果还不错,成功的跑起来了项目.列出踩过的坑,希望后面要升级的小伙伴遇到类似的问题可以做个参考;1.升级安装升级方法:1.直接用自带的更新工具操作步骤:>菜单栏>Help>CheckforUpdates..(前提网络要绝对的畅通,你懂的)2.手动的下载新的版本下载地址/studio/archive.html#android-studio-3-0?utm_source=&utm_medium=website(国内可以访问)升级完成后,打开原有项目,在经过一段时间到indexing后如果你的项目可以运行,OK,恭喜你,接下来的内容,你可以选择忽略,因为你的项目很nice,啥问题没有(我不相信你啥问题都没有~毕竟我踩了这么多的坑);

如果项目存在配置的问题,那么便可能产生如下问题:2.问题1.配置了腾讯的资源文件压缩插件导致的异常我的项目在indexing后出现的第一个问题

看到这个异常我的第一反应就是项目中配置了腾讯的资源文件压缩插件,果断移除;移除步骤:

1.在项目级别的build.gradle也就是最外层的build.gradle文件中的dependencies节点中,移除

2.在应用级别的build.gradle的顶部移除

3.第二条中提到build.gradle文件中相关的资源压缩配置需要一并的移除;

上述操作完后,同步代码,该问题KO;2.一直卡在Refreshing项目第一条中的问题解决后,我出现了

这种提示,在正常的流程中,如果不出现第一个问题,会首先出现这个提示,意思是升级现在项目的编译插件,相信之前升级过AS版本的同学在第一次运行新版本的时候见过这个提示,直接点击update按钮就行了.如果不想接着踩坑那么点击Dont'treminmdmeagaingforthisproject按钮就可以了,它代表你还是用之前版本的插件来运行当前项目,也就不会出现后面一大串的问题;这里直接点击update按钮;

点击之后如果你网络不畅通的话就会一直的之所以会这样,是因为

点击该按钮后实际上做了两件事情在主项目的build.gradle文件中的dependencies节点中更改了

在项目目录中的gradle>perties文件中的distributionUrl字段更改了

这两个文件修改后AS就会去下载/distributions/gradle-4.1-all.zip这个文件,不用点什么奇技淫巧,就等AS下载完吧(基本完不了)这里给出两种解决方案:

两种解决方案的前提条件是先把该文件下载下来,AS下载的奇慢,那么把/distributions/gradle-4.1-all.zip扔到迅雷中,分分钟下载完成(迅雷功能不止于此~);把文件放到本地的Tomcat服务器,或者IIS服务器中,或者免费的七牛云服务中,获取这个文件的下载地址,修改perties文件中distributionUrl的值为你的下载地址,关闭AS,重新打开(亲测可行);找到.gradle文件夹路径:windows一般在C:\Users\<当前登录用户名>.gradle,

mac是在:用户/(当前用户目录)/.gradle,解压下载好的文件到该目录中,关闭AS,重新打开(未亲测);3.修改输出apk的文件名导致的异常第二条问题解决后,出现了

点击OpenFile定位到应用级别的build.gradle文件中的这个位置

这个是自己之前配置的可以控制AS输出的apk文件的名称,新版本不能这样配置了,看官方的引导可以改成

效果和之前差不多,直接更改,问题KO4.之前项目中配置了第三方APT插件导致的异常如上图这个异常是我折腾最长时间的问题,各种百度,Google最终得知和新版本AS3.0中自带了APT处理插件有关,因为自己之前配置的第三方的APT插件,所有它们冲突了~,那么移除则异常KO;移除步骤

1.在项目级别的build.gradle也就是最外层的build.gradle文件中的dependencies节点中,移除

2.在应用级别的build.gradle的顶部移除

3.在应用级别的build.gradle的dependencies节点中,替换所有用apt开头的引依赖为annotationProcessor例如

上面三步操作完成后,同步项目,问题解决5.BuildTool最低版本异常这个异常出现就显而易见了,AS3.0最低支持的BuildTools插件是26.0.2版本,别问我BuildTools是啥,我也不知道(顾名思义,AS的编译工具);BuildTools的版本改到26.0.2版本,同步代码就好了,如果你的SDK中没有下载BuildTools26.0.2版本,AS会自动的提示你去下载,下载完同步代码,即可;6.BuildTool库项目版本不统一问题

AS3.0对于库项目的build.gradle的配置也进行了干预,官方说可以加快编译速度,想想也是,库项目都用不同版本的BuildTool,编译起来肯定慢;所以这里点击OpenFile之后,定位到的build.gradle文件,修改里面的buildToolsVersion节点为26.0.2即可如果项目中的库项目较多,建议将buildToolsVersion版本配置到perties文件中,然后项目中的库项目都引用该配置,改一处,则整个项目的buildToolsVersion配置都改了,别问我咋配置的,因为这会跑题,自行百度7.multidex版本异常这个问题说的是AS3.0解析multidex1.0.2版本失败,为什么失败?因为现在google自家的依赖,全部都收回到了自家的CDN服务器了,之前在项目级的build.gradle文件中的repositories节点中配置jenter(),就可以获取大部分的依赖(虽然慢了点),但是现在Google官方需要我们在repositories节点中配置上google(),作用就是获取自家的依赖,而原先的jcenter()不需要动;而multidex是Google的依赖所以只用之前的jcenter(),肯定是解析不到它了.

配置例如

项目级的build.gradle文件中的有两个repositories节点,都配置上google()同步项目,问题KO8.Lambda插件冲突

这个不用多说相信大家在准备升级AS3.0都知道,它的一大特性是支持了JAVA8,而项目之前为了能用Lambda,而用了第三方的插件,这里移除即可;移除步骤

1.在项目级别的build.gradle也就是最外层的build.gradle文件中的dependencies节点中,移除

2.在应用级别的build.gradle的顶部移除

上面两步操作完成后,同步项目,问题解决9.flavor配置异常

这个可以参考官方给出的文档地址(网络要绝对的通畅~)

问题出现在之前的flavor配置不能用了,别问我flavor是啥,你自己配置的你不知道~(主要作用,多渠道打包

想知道为什么这样配置,可以看看官方文档至此上述配置更改后,我的项目同步代码不报错了~,但是坑远远没有填完,继续10.AAPT2编译异常这一大串的异常在编译的时候报出,我在第一次导入项目的时候遇到了,第二次导入其它项目的时候,竟然没有遇到,对比之下得出问题是出在配置了高版本的support包的问题,当你把项目所有support包的版本配置到25.2.0的时候什么问题都没有,但是配置成26.0.0或者27.0.0版本的时候就会出现这个问题(亲测);解决方案1.使用低版本的support包,把项目所有support包的版本配置到25.2.0或者其它较低的版本2.配置perties中关闭AAPT2编译,说人话就是在其中增加android.enableAapt2=false配置,再次编译问题解决(推荐),例如

同步代码,问题KO;11.方法找不到异常/或者有点莫名其妙的异常这两个异常产生的的原因是因为第九条如果你升级了support包的版本的时候compileSdkVersion的版本没有更改,亲测如果你的support包更改到了26.0.0或以上的话,需要更改项目中所有的compileSdkVersion为26或以上

更改好,同步代码,问题解决到这我的项目可以运行,可以调试了,以为终于KO了所有问题了,但是但是编译输入release包的时候内存溢出了,WTF12.生成release包异常看到这个异常我是一脸的蒙蔽,各种百度,google都没有说这个问题,咋滴,不让用啦,手动打包啊~,但是到夜里的时候忽然灵光一现,WTF,会不会是又是啥第三方依赖的问题,毕竟很多问题都是因为第三方的依赖,于是乎,连忙的注释了,一大堆的项目级别的build.gradle文件中的一些依赖,经过测试,定位到了美团的热更新,然后移除了,相关的配置,然后一些正常~~移除步骤

1.在项目级别的build.gradle也就是最外层的build.gradle文件中的dependencies节点中,移除2.在应用级别的build.gradle的顶部移除3.在应用级别的build.gradle的dependencies节点中的依赖可以不移除(不移除也是可以正常生成apk文件的,只是热更新无法使用),这个依赖如果移除了,那么你代码中相关的热更新代码也需要移除,否则就是找不到相关的类了;**最后的最后,AS3.0算是彻底的用上了,编译速度相比之前有没有增快,新特性好不好用,有待后续的使用了.

希望大家在升级AS3.0的时候如果遇到和我相同的问题,可以做一个参考**下面我们在来看一篇经常遇到的坑的经典问题:最近AndroidStudio3.0版本正式推出,趁着项目刚发完版本,赶紧更新试试水,结果发现项目完全跑不起来,折腾了几个小时才搞好。记录一下填坑过程,希望能帮助其他同学。1.gradle和buildToolsVersion版本AndroidStudio3.0要求gradle版本为4.1,对应的buildToolsVersion为26.0.2,然后记得在项目最外层的build.gradle添加google(),如果不添加将会导致某些官方依赖下载不了。2.module依赖方式变更原先依赖module使用的是compile,现在需要替换为api或implementation。

api:module编译时可用,module的使用者编译和运行时可用,这个和过时的compile一样的。

implementation:module编译时可用,module的使用者运行时可用,对于大量使用library的项目,可以显著提高编译时间,因为它可以减少构建系统重新编译一些module。

那么什么时候用api,什么时候用implementation呢?由于公司项目采用的是组件化开发,有个commonmodule需要被各个组件依赖,一开始采用的是implementation,结果发现会导致别的组件无法引用common中的库(common->Amodule,Amodule无法引用common依赖的库)。

试验过后得出结论,当这个module会被多次引用应该使用api,不会被别的module引用使用implementation。

发一下我现在使用的方式compileOnly替换了provided,runtimeOnly替换了apk。3.apt插件更换apt插件已被废弃,需更换为annotationProcessor。4.第三方库不兼容问题·

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论