Android Studio3.0以後outputfile不可用更改

Android Studio自從更新3.0,gradle更新3.1.3之後,build.gradle文件中outputfile就不可用了,會報錯,既Cannot set the value of read-only property 'outputFile' for object of type com.android.build.gradle.internal.api.LibraryVariantOutputImpl.
報錯如下:
在這裏插入圖片描述
所以如果要打包aar,使用自定義路徑和文件名稱,需要使用新的方法。
如果使用:

apply plugin: 'com.android.library'

就是打包aar。
以下是具體的代碼,可以直接使用。直接放在build.gradle文件最外面即可使用

android.libraryVariants.all { variant ->
    variant.outputs.all {
        // 自定義輸出路徑
	// variant.getPackageApplication().outputDirectory = new File("C:\\1")
        // 自定義文件名{示例:AppName-Flavor-debug-v1.0.0_201807301409}
        outputFileName = "test.aar"
    }
}
//掛接自定義task到構建過程中
this.project.afterEvaluate { project ->
//    獲得build task
    def buildTask = project.tasks.getByName('build')
    if (buildTask == null) {
        throw GradleException('the build task is not found')
    }
    buildTask.doLast {
        copyTask.execute()
    }
}
//自定義copyApk task
task copyTask {
    doLast {
        def fileName = "test.aar"
//        拷貝文件的始發地
        def sourceFile = "/build/outputs/aar/" + fileName
//        指定文件拷貝的目的地
        def destationFile = new File("C:\\1 ")
        try {
//            判斷文件夾是否存在
            if (!destationFile.exists()) {
                destationFile.mkdir()
            }
            //拷貝
            copy {
                from sourceFile
                into destationFile
                rename {
                    fileName
                }
            }
        } catch (Exception e) {
            e.printStackTrace()
        }
    }
}

上面build之後就在c:\1目錄下面去查找對應的aar即可
當然如果使用

apply plugin: 'com.android.application'

就更簡單了,直接在最外圍放以下代碼即可

android.applicationVariants.all { variant ->
    variant.outputs.all {
        // 自定義輸出路徑
        variant.getPackageApplication().outputDirectory = new File("C:\\1")
        // 自定義文件名{示例:AppName-Flavor-debug-v1.0.0_201807301409}
        outputFileName = "test.aar"
    }
}
發佈了20 篇原創文章 · 獲贊 21 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章