使用Android Studio 3.0 Canary 7无法生成AAR / JAR

所以,标题几乎总结了我的问题.谁知道怎么修它?上次我构建apk,它在AS 2.X上工作正常,但是,我现在正在使用Kotlin进行开发,所以我必须使用AS 3.0.

我使用AS 3.0 Canary 7(这个项目是一个新项目)

这是我的库中的虚拟课程(存储在“domain”.library.mylibrary中)

class Test {
    fun hello(): String {
        return "hello"
    }
}

这是我的(mylibrary)gradle:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.0"


    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

    implementation 'com.android.support:appcompat-v7:26.0.0-beta2'
    testImplementation 'junit:junit:4.12'

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" //Declared in project level gradle: ext.kotlin_version = '1.1.3-2'
}

我的gradlew.bat clean build –info log:https://pastebin.com/bfTZ5s4e

解决方法:

默认情况下,Android Studio不会生成jar,而是生成AAR文件.如果你想获得一个jar输出,你需要在mylibrary / gradle.build文件的顶部实现apply plugin:’maven-publish’并阅读以下文档:Chapter 36. Maven Publishing (new)

另一个注意事项是,我建议你不要直接在你的发布工件上使用ProGuard,而是提供一个消费者ProGuard文件,让你的库用户来处理这个任务,否则他们将很难引用混淆代码.请阅读我在here的回答

虽然构建任务可能会生成输出,但已知汇编任务(或assembleRelease)将生成您的aar输出.

尝试运行以下命令:

./gradlew clean assembleRelease

并检查/ mylibrary / build / outputs / apk / release /中的输出,如果我没有记错的话.

上一篇:Android平台JAR、AAR的防盗版功能、License授权管理和添加授权码


下一篇:android – 打包一个使用另一个库aar的库项目