开发者社区> jarvanmo> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

将旧项目迁移到AndroidStudio3.0

简介: 1.aapt2编译不过去 Error:Execution failed for task ':app:mergeDebugResources'. > Error: java.
+关注继续查看

1.aapt2编译不过去

Error:Execution failed for task ':app:mergeDebugResources'.
> Error: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details

原来的项目用到了kotlin以及kapt,升级到了androidstudio 3.0报了上面的错误,需要在项目的gradle.properties中添加:

android.enableAapt2=false

关闭aapt2。

2.All flavors must now belong to a named flavor dimension

All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html

官方文档:

Plugin 3.0.0 includes a new dependency mechanism that automatically matches variants when consuming a library. This means an app's debug variant automatically consumes a library's debug variant, and so on. It also works when using flavors—an app's redDebug variant will consume a library's redDebug variant. To make this work, the plugin now requires that all flavors belong to a named flavor dimension —even if you intend to use only a single dimension. Otherwise, you will get the following build error:

Android Plugin3.0的依赖机制:在使用library时会自动匹配variant(debug, release),就是说app的debug会自动匹配library的debug,相信大多数人也像我一样,当library多了,不会手动选择每个Library的variant。现在好了,它会自动匹配了。同样如果使用flavor的时候,比如app的redDebug同样会自动匹配library的readDebug。虽然有这样的优势,但是在使用flavor时,必须定义flavor dimension,否则会提示错误:

Error:All flavors must now belong to a named flavor dimension.
The flavor 'flavor_name' is not assigned to a flavor dimension.

现在使用flavor,必须像下面一样配置:

// Specifies a flavor dimension.
flavorDimensions "color"

productFlavors {
     red {
      // Assigns this product flavor to the 'color' flavor dimension.
      // This step is optional if you are using only one dimension.
      dimension "color"
      ...
    }

    blue {
      dimension "color"
      ...
    }
}
  • 注意:如果library有两个dimensions:color,shape,但是app只有color,那么会如下的编译错误:
Error:Could not resolve all dependencies for configuration ':bar:redDebugCompileClasspath'.
Cannot choose between the following configurations on project :foo:
  - redCircleDebugApiElements
  - redSquareDebugApiElements
  ...
  • 在APP使用flavorSelection选定使用某个flavor dimension,注意如下配置:
android {
  ...
  // The flavorSelection property uses the following format:
  // flavorSelection 'dimension_name', 'flavor_name'

  // Chooses the 'square' flavor from libraries that specify a 'shape'
  // dimension.
  flavorSelection 'shape', 'square'
}

参考文章

3.Cannot set the value of read-only property 'outputFile’….

Android plugin 3.0 migration guide 建议:

  • 使用 all()代替 each()
  • 使用 outputFileName代替 output.outputFile,如果你只想更改文件名称
// If you use each() to iterate through the variant objects,
// you need to start using all(). That's because each() iterates
// through only the objects that already exist during configuration time—
// but those object don't exist at configuration time with the new model.
// However, all() adapts to the new model by picking up object as they are
// added during execution.
android.applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${variant.name}-${variant.versionName}.apk"
    }
}

参考如下:

applicationVariants.all { variant ->
    variant.outputs.all { output ->
        def newApkName = applicationId + "-" + variant.versionName + "(" + variant.versionCode + ")" + ".apk";
        outputFileName = new File("${project.projectDir}/../outputs/apks/" + variant.name, newApkName);
    }
}

参考文章

3.You should manually set the same version via DependencyResolution

参考文章

另一种姿势:

configurations.all {  
    resolutionStrategy.force 'rubygems:rb-inotify:0.9.5'  
} 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
关于Android Studio项目突然同步失败问题
项目之前好好的,周一打开项目一直报错Gradle project sync failed,网上搜索解决方法,都是说是因为下载gradle失败问题,自己去gradle官网下载项目中对应的gradle版本,然后放到项目中引用即可,但其实这种方法无效。
0 0
你想要的Android全量版本更新功能,我这儿都有!
你想要的Android全量版本更新功能,我这儿都有!
0 0
AndroidStudio不自动添加新创建的文件到VCS的解决办法
AndroidStudio不自动添加新创建的文件到VCS的解决办法
0 0
Android studio自动删除没有用到的包
Android studio自动删除没有用到的包
0 0
Android Studio2.x版本无法自动关联源码的解决方法
Android Studio2.x版本无法自动关联源码的解决方法
0 0
Flutter 06:【小插曲】请慎重升级最新版本 AndroidStudio
      小菜昨天耽误了很久,好不容易升级到 3.1.4 版本的 AndroidStudio,今天就遇到一个大问题,没办法只好回退到 3.1.3 版本。
928 0
Android Studio - 安卓开发工具 打开后报错集合、修复指南
安卓开发工具错误修复 本文提供全流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) ...
1207 0
《Android App开发入门:使用Android Studio 2.X开发环境》——2-8 修改项目的程序包名称和应用程序 ID
本节书摘来自华章计算机《Android App开发入门:使用Android Studio 2.X开发环境》一书中的第2章,第2-8节,作者 施威铭,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1498 0
Android studio删除工程项目
本新手最近学Android都是用的eclipse。其实个人觉得eclipse不错,可能接触Android不久,倒也不觉得它慢还是怎样。对于Google的Android studio也是早有耳闻,前两天终于去下了一个,win7跟ubuntu下面都装上了。
521 0
+关注
jarvanmo
迷失的程序员
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Android应用启动速度和内存优化实践
立即下载
Android应用-启动速度和内存优化实践
立即下载
Android热修复技术原理详解与升级探索
立即下载