湘潭市建设局网站,网站后台编辑器下载,工商红盾网查询系统,网站怎样做移动端Gradle版本升级 其实当AS升级到3.0之后#xff0c;Gradle Plugin和Gradle不升级也是可以继续使用的#xff0c;但很多新的特性如#xff1a;Java8支持、新的依赖匹配机制、AAPT2等新功能都无法正常使用。 Gradle Plugin升级到3.0.0及以上#xff0c;修改project/build.grad…Gradle版本升级 其实当AS升级到3.0之后Gradle Plugin和Gradle不升级也是可以继续使用的但很多新的特性如Java8支持、新的依赖匹配机制、AAPT2等新功能都无法正常使用。 Gradle Plugin升级到3.0.0及以上修改project/build.gradle文件 修改global.gradle(自定义lib管理的gradle)
tools [gradleTools : com.android.tools.build:gradle:3.0.1
]修改project/build.gradle文件buildscript {repositories {google()}apply from: global.gradle def tools rootProject.ext.tools dependencies { classpath tools.gradleTools } } Gradle升级到4.1及以上修改project/gradle/gradle-wrapper.properties文件 distributionUrlhttps\://services.gradle.org/distributions/gradle-4.1-all.zip 生成APK文件名属性outputFile变为只读 在app module中修改build.gradle文件之前改apk名字的代码 variant.outputs.each { output -def outputFile output.outputFileif (outputFile ! null outputFile.name.endsWith(.apk)) {def fileName host_${variant.buildType.name}_${variant.productFlavors[0].name}_${mApplicationId}_${defaultConfig.versionCode}_v${mVersionName}.apk output.outputFile new File(outputFile.parent, fileName) } } 由于outputFile属性变为只读需要进行如下修改直接对outputFileName属性赋值即可 variant.outputs.all {outputFileName host_${variant.buildType.name}_${variant.productFlavors[0].name}_${mApplicationId}_${defaultConfig.versionCode}_v${mVersionName}.apk } 依赖关键字的改变 api: 对应之前的compile关键字功能一模一样。会传递依赖导致gradle编译的时候遍历整颗依赖树implementation: 对应之前的compile与api类似关键区别是不会有依赖传递compileOnly: 对应之前的provided依赖仅用于编译期不会打包进最终的apk中runtimeOnly: 对应之前的’apk’与上面的compileOnly相反关于implementation与api的区别主要在依赖是否会传递上。如A依赖BB依赖C若使用api则A可以引用C而implementation则不能引用。 这里更推荐用implementation一是不会间接的暴露引用清晰知道目前项目的依赖情况二是可以提高编译时依赖树的查找速度进而提升编译速度。 渠道需要声明flavor dimensions 刚开始Sync的时候应该会报错 Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html 也就是每个flavor渠道都必须归属一个dimension维度若只有一个维度渠道中可以不写dimension属性默认分配到该维度。直接添加一个默认的维度即可如flavorDimensions dimension 解决方法是在app.gradle添加flavorDimensions defaultConfig {flavorDimensions getVersion(VERSION_CODE)
} 也可以像官方文档那样设置多个维度 // Specifies two flavor dimensions.
flavorDimensions mode, minApi
productFlavors {free { // Assigns this product flavor to the tier flavor dimension. Specifying // this property is optional if you are using only one dimension. dimension mode ... } paid { dimension mode ... } minApi23 { dimension minApi ... } minApi18 { dimension minApi ... } } 库多variant依赖方式的修改 Gradle plugin 3.0.0之后引入了新的variant自动匹配机制也就是说app的flavorDebug变体会自动匹配library的flavorDebug变体。 回顾一下旧的方式如果app在某个variant下需要依赖library相应的类型需要按照下面的方式声明依赖 dependencies {hytestCompile project(path: :main, configuration: hytestRelease) productionCompile project(path: :main, configuration: productionRelease) } 新的方式gradle会自动感知并匹配对应的variant前提是app与library中有对应的variant类型 dependencies {implementation project(:main)
} 填坑 1、style attribute ‘android:attr/windowEnterAnimation’ not found. 这是aapt2导致的3.0默认启用了aapt2。解决办法在project的根目录下的gradle.properties最后添加关闭aapt2的代码 android.enableAapt2false 2、gradle tool 3.0使用最低SDK buildTool 26.0.2的版本 3、使用了aapt的需要去除掉改用annotationProcessor 4、注意引用第三方库的时候com.android.support包的版本需要统一不然在multidex会导致异常或者build的时候无法build success转载于:https://www.cnblogs.com/fomin/p/8424478.html