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"

// 拷贝文件的始发地

function(){ //交易品种http://www.fx61.com/faq/muniu/447.html

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"

}

}

扩展知识:

AndroidStudio是一个全新的Android开发环境,基于IntelliJIDEA.类似EclipseADT,AndroidStudio提供了集成的Android开发工具用于开发和调试。

主要功能

1、优化小贴士:在主体中打开你的应用,点击小贴士,会得到这样的建议:为你的应用开发平板电脑版本。

2、应用翻译服务:允许开发者直接在开发主体中获得专业的翻译。上传你的需求,选择翻译,其会显示翻译方和价格,并在一周内发回译本。

3、推荐跟踪:允许开发者找出最有效的广告

4、营收曲线图:向开发者展示其应用营收,以国家进行划分

5、试用版测试和阶段性展示:开发者可以对应用进行测试,然后向测试用户推出,测试结果不会对外公布。当一个版本的测试结束,开发者可以向特定比例用户推出。