美文网首页Android studioAndroid开发经验谈Android进阶之路
记升级Android Studio3.0时遇到的几个问题

记升级Android Studio3.0时遇到的几个问题

作者: m1Ku | 来源:发表于2017-10-26 16:38 被阅读5005次

    今天收到了Android Studio3.0更新推送,在升级过程中遇到几个问题,在这里把问题和解决方法记录下,方便要升级的童鞋。如果还有童鞋遇到不同的问题,也可以评论下我做下记录

    1.gradle打包,自定义apk名称代码报错(Cannot set the value of read-only property 'outputFile' )
    • 报错

      Error:(56, 0) Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=debug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.
      <a href="openFile:D:\eclipseCode\ipay-android\xinlebao\build.gradle">Open File</a>
      

    • 解决 :修改文件名代码请这样写

      android.applicationVariants.all { variant ->
                      variant.outputs.all {
                          outputFileName = "xinlebao_${defaultConfig.versionName}_${releaseTime()}.apk"
                      }
                  }
      

    2. AAPT2 编译报错 AAPT2 error
    • 报错

      Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
      
    • 解决:在gradle.properties中关闭APPT2 编译

      android.enableAapt2=false
      
    • 注:如果是eclipse转到as上的项目,可能没有gradle.properties文件,请在项目根目录中手动创建

    PS:有童鞋评论说这个问题如何一劳永逸的解决。我查了下资料,as3.0默认使用appt2对图片进行编译,这个问题可能是由于.9图的格式不规范导致,编译后,确定下哪张.9图的问题,最后再用draw9patch编辑保存下即可,当然你也可以选择关闭appt编译。这个问题不是针对所有项目的,而是会出现在.9图有问题的项目中

    3.apt插件问题(Error:Cannot choose between the following configurations of project :mylibrary:)
    • 报错:

      Error:Cannot choose between the following configurations of project :mylibrary:
      
      - debugApiElements
      - debugRuntimeElements
      - releaseApiElements
      - releaseRuntimeElements
        All of them match the consumer attributes:
      
    • 解决

      //1.在project的build.gradle中删除
      classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
      //2.在module的build.gradle中删除
      apply plugin: 'android-apt'
      //3.将module的build.gradle文件中的dependency
      apt  'com.jakewharton:butterknife-compiler:8.1.0'
      //改为
      annotationProcessor  'com.jakewharton:butterknife-compiler:8.1.0'
      

    其他使用apt的依赖,也要这样更改

    4.Android Studio3.0 preview已知bug(Error:Unable to find method 'com.android.build.gradle.internal.variant.BaseVariantData.getOutputs()Ljava/util/List;'. Possible causes for this unexpected error)
    • 报错
    Error:Unable to find method 'com.android.build.gradle.internal.variant.BaseVariantData.getOutputs()Ljava/util/List;'. Possible causes for this unexpected error include:
    
    Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.) Re-download dependencies and sync project (requires network)
    The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem. Stop Gradle build processes (requires restart)
    Your project may be using a third-party plugin which is not compatible with the other plugins in the project or the version of Gradle requested by the project.
    
    • 解决
    1. 尝试升级kotlin版本,不过该问题可能存在于preview版本中
    //在build.gradle文件中将kotlin版本从
    ext.kotlin_version = '1.1.2-3'
    //改为
    ext.kotlin_version = '1.1.2-4'
    

    2.尝试降低Butterknife的版本

    //将Butterknife的版本降级为8.4.0
    compile 'com.jakewharton:butterknife:8.4.0'
    

    相关文章

      网友评论

      • 981139cb1310:大神,对于第一个问题,我的gradle里 是这样的,报同样的错,没有output属性,我尝试加入该函数仍然不奏效。
        android.applicationVariants.all { variant ->

        if (variant.getBuildType().name == "debug") {
        task "configDevice2${variant.name.capitalize()}" (type: Exec){
        dependsOn variant.install

        group = 'nameofyourtaskgroup'
        description = 'Describe your task here.'

        def adb = android.getAdbExe().toString()
        def mypermission = 'android.permission.WRITE_EXTERNAL_STORAGE '
        commandLine "$adb shell pm grant ${variant.applicationId} $mypermission".split(' ')
        }
        variant.testVariant.connectedInstrumentTest.dependsOn "configDevice2${variant.name.capitalize()}"

        }
        }
        求助。。。网上都说把 outputs.each 改成outputs.all就好了,可是我没有这个代码啊,粘贴添加进去也还是同样的错:sob: :sob: ,谢谢大神
        981139cb1310:@m1Ku 你好,我把整个函数都替换成了您的代码,还是报同样的错:sob:
        m1Ku:@纸盒人阿楞 你复制我的那个行嘛?试试
      • 丨灬柳夢Oo:AAPT err(Facade for 1948427294): \\?\C:\Users\xxx\.gradle\caches\transforms-1\files-1.1\appcompat-v7-26.1.0.aar\120bd5fb36bdca4cbfe4c203502a2ee1\res\drawable-xxhdpi-v4\abc_textfield_search_default_mtrl_alpha.9.png ERROR: Unable to open PNG file
        这个问你 加了android.enableAapt2=false 也没有用 还是报错 Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.AaptException
        maxcion:@丨灬柳夢Oo 请问你解决了吗,我也遇到一样的问题,加了还是报错
      • longzekai:想问个问题,3.0上如何全局查找并替换?
        73057a0bf6ab:android.enableAapt2=false 这个每次都要加,能不能。。。。。。
        longzekai:@m1Ku 谢谢,3.0以前这两个是放在一起的,现在刚换3.0,还没习惯。
        m1Ku:@longzekai Ctrl + Shift + R全局查找替换,Ctrl + Shift + F全局查找
      • CPLASF1925:大神,升级3.0 SDK 用原来的可以吗
        CPLASF1925:@lwqldsyzx 搜索添加第三方依赖库搜不到,遇到过吗
        lwqldsyzx:可以用的啊
        m1Ku: @CPLASF1925 直接就可以用的,但会提示升级一下26.0.2,升级就好了

      本文标题:记升级Android Studio3.0时遇到的几个问题

      本文链接:https://www.haomeiwen.com/subject/dyukpxtx.html