迁移至Android3.0遇到一些问题
来源:互联网 发布:sql数据库设计 编辑:程序博客网 时间:2024/06/03 14:39
一、AS3.0新增功能
此处略(自行Google )
官方文档
二、迁移后速度对比
迁移后3.0后速度提升接近50%左右;首次build使用6min左右,以后每次能控制在3min左右,当然不同项目可能存在差异但提升开发效率一定是肯定的
三、迁移步骤
下载最新官方AndroidStudio3.0并完成安装
修改gradle-wrapper.properties
distributionUrl=https://services.gradle.org/distributions/gradle-4.1-all.zip
修改根目录build.gradle
buildscript { repositories { google()//add } dependencies { classpath 'com.android.tools.build:gradle:3.0.1'//update}allprojects { repositories { //add maven { url 'https://maven.google.com' } }}
修改根目录gradle.properties
可以在项目根目录的gradle.properties中添加如下代码,这样可以统一项目中各Module的使用版本属性
//as3.0默认开启aapt2功能用以提高构建速度,但目前貌似兼容不好,会有错误,此处关闭该功能android.enableAapt2=falseMIN_SDK_VERSION = 14COMPILE_SDK_VERSION = 23TARGET_SDK_VERSION = 21//AndroidStudio3.0以上版本的BuildToolsVersion至少是26.0.2以上BUILD_TOOLS_VERSION = 26.0.2
其他个module的build.gradle文件中可以这样引用其变量
android { compileSdkVersion COMPILE_SDK_VERSION.toInteger() buildToolsVersion BUILD_TOOLS_VERSION.toString() defaultConfig { minSdkVersion MIN_SDK_VERSION.toInteger() targetSdkVersion TARGET_SDK_VERSION.toInteger() }}
注释掉所有build.gradle中enforceUniquePackageName=false
enforceUniquePackageName在gradle4.1中性已被弃用会编译报错
去掉build.gradle中可能存在的apply plugin: ‘com.neenbedankt.android-apt’;将apt修饰符调整为annotationProcessor
eg:apply plugin: 'com.neenbedankt.android-apt'//删除apt "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}"//将apt修饰符调整为annotationProcessor
在混淆文件(proguard-project.txt)中注释掉所有-libraryjars代码
新版本中AS默认已对其jars做非混淆处理了,不用重复声明修改app的build.gradle
android{ flavorDimensions "tier" //add productFlavors { xiaomi{ dimeension 'tier' } ... } applicationVariants.all { variant -> //统一输出apk路径 variant.getPackageApplication().outputDirectory=new File(project.buildDir.absolutePath+"/outputs/apk") variant.outputs.all { //修改App文件名称 outputFileName = "${variant.name}-${variant.versionName}.apk" } } }task myTask << { xxx}//<<写法已不建议使用,需修改为如下task myTask { doLast{ xxx }}
修改Fragment
所有的Fragment必须提供无参构造器,传参可以通过调用setArgments(Bundle b)来实现;在有参构造器加上@SuppressLint(“ValidFragment”)注解,避免打release版本失败自定义动画xml文件需要放到正确文件目录
属性动画xml应放到animator目录否则release版本会构建失败getSystemService的写法
Activity.getSystemService需要修改成getApplicationContext.getSystemService否则在Android N版本以下会有内存泄漏存在- freeline对as3.0不支持强制使用会报错,只能等待阿里升级了
至此项目中隐含的构建失败风险因子已被移除,在终端进入项目根目录执行
./gradlew assembleDebug //for mac 首次会现在gradle4.1版本以及相关库耐心等待即可
四、依赖配置关键字
implementation
- C模块的类只暴露给A,APP无法直接引用
- C中的drawable、layout、string目录可以直接被APP引用
- 修改C,只会导致C本身以及直接依赖的A重新编译
- 使用implementation能够加快gradle build
compile
- C接口可暴露给任意Module,APP可以跨层引用C接口(类)
- 修改C会导致C以及所有直接或间接依赖的Module重新编译
- 拖慢gradle build
总结:
compile关键字已不建议使用,可以使用新关键字api直接替换(compile==api);但我们原则上是优先使用implementation关键字替换,如果有问题再考虑使用api替换
以上只是本人在自己项目迁移至AS3.0过程中遇到的问题及其解决方法,后续会继续补充!
- 迁移至Android3.0遇到一些问题
- vmware 下 迁移 遇到的一些问题
- android3.0碰到问题记录
- Drupal网站迁移过程中遇到的一些问题
- Oracle迁移Postgresql 遇到的一些问题记录
- 项目从tomcat向weblogic迁移遇到的一些问题
- 项目从tomcat向weblogic迁移遇到的一些问题
- Eclipse 工程迁移到 AS 遇到的一些问题
- Tomcat迁移至Websphere遇到的问题
- 总算告一段落:qt3到pt4平台迁移时遇到的一些问题
- wordpress迁移以及遇到的一些问题[mysql备份导入导出][固定链接404]
- Java windows项目迁移到linux上,遇到一些跟路径相关的问题
- mysql 直接拷贝data 目录下文件 进行数据库迁移时遇到的一些问题??
- 迁移eclipse项目至Android studio遇到的问题
- Wordpress迁移中的一些问题
- 关于android3.0及以后版本访问webService的问题
- 关于android3.0以后引入fragment碎片的小问题
- android3.0以前主线程联网问题出错问题解决
- centos7 安装apache+php
- c++关于优先队列的使用
- 【转载】异常
- Android科大语音输入和语音合成
- 网络日记1:分层模型和以太网帧结构
- 迁移至Android3.0遇到一些问题
- 大数据挖掘:手把手教你分析头条小程序文章数据
- C#抽象类
- linux下使用crontab如何实现mysql数据库每天自动备份定时备份
- python基础-单例模式、__new__方法、利用new构造对象
- 土地经济学笔记第二部分
- 关于NFC P2P模式
- 自定义类型部分知识理解
- 解决phpmailer后的总结