Android 如何通过gradle(包括依赖项)制作一个jar

Android 如何通过gradle(包括依赖项)制作一个jar,android,gradle,kotlin,Android,Gradle,Kotlin,我有一个用kotlin编写的模块,现在我必须把这个模块做成一个jar。我必须将kotlin-stlib-1.3.50.jar包含到我的jar中,这样它才能在android中成功运行。但有一个问题是,调用my jar的应用程序也是用kotlin编写的,它有一个不同版本的kotlin stdlib。那我怎么解决呢 apply plugin: 'com.android.library' apply plugin: 'kotlin-android' apply plugin: 'kotlin-andro

我有一个用kotlin编写的模块,现在我必须把这个模块做成一个jar。我必须将kotlin-stlib-1.3.50.jar包含到我的jar中,这样它才能在android中成功运行。但有一个问题是,调用my jar的应用程序也是用kotlin编写的,它有一个不同版本的kotlin stdlib。那我怎么解决呢

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
plugins {
id('com.android.library')
id('kotlin-android')
id('kotlin-android-extensions')
}


android {
compileSdkVersion 28
defaultConfig {
    minSdkVersion 27
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"

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

}

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

sourceSets {
    main {
        aidl.srcDirs = ['src/main/aidl']
    }
}

configurations.all {
    resolutionStrategy.force 'com.android.support:support-annotations:26.1.0'
}

}

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//    implementation 'com.android.support:appcompat-v7:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.41'
implementation 'com.squareup.okio:okio:2.2.2'
implementation 'androidx.fragment:fragment:1.0.0'
implementation 'com.nex3z:notification-badge:1.0.2'
implementation files('libs/framework.jar')
implementation 'com.nex3z:notification-badge:1.0.2'
implementation 'com.android.support:support-annotations:28.0.0'
}
repositories {
mavenCentral()
}



task createJar(type: Jar){
println(configurations.compile.asPath)
archiveName 'wifisdkn_7_4_2.jar'
from('build/intermediates/javac/release/compileReleaseJavaWithJavac/classes')
from('build/tmp/kotlin-classes/release')

from {
    (zipTree('/home/mi/.gradle/caches/transforms-2/files-2.1/d6bc0306f3ac2741d6328b688ed7b145/jars/classes.jar'))
}

from {
    (zipTree('/home/mi/.gradle/caches/modules-2/files-2.1/com.squareup.okio/okio/2.2.2/36f483536153f15339a8b48d508e22be7c9c531a/okio-2.2.2.jar'))
}


from{
    (zipTree('/home/mi/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.3.41/e24bd38de28a326cce8b1f0d61e809e9a92dad6a/kotlin-stdlib-1.3.41.jar'))
}

destinationDir = file('build/libs')
}

createJar.dependsOn(build)

您不必为此编写任何代码。只需按照以下步骤操作:

  • 打开右侧的渐变项目窗格

  • 转到要为其构建jar的模块。展开任务节点

  • 展开“构建”文件夹,双击“构建”操作。

  • 构建过程将启动。流程完成后,将生成JAR/AAr

  • 转到模块目录,然后按照路径build->libs->.jar


  • 大家好,欢迎来到StackOverflow。您是否需要将依赖项添加到jar文件中,以便自动解析它们?你熟悉POM文件吗?你好Jaymin谢谢你的回答,我照你说的做了。但是它不起作用,模块目录中没有这样的路径build->libs->.jar。我还想知道这种方式和内置gradle任务有什么区别吗?没有区别。如果你按照我的方式来做,你不需要编码。您正在尝试构建哪种类型的模块?它应该是Java库。您也可以使用.aar文件。同样的过程也会生成.aar文件。我的模块是android库,它既不生成.jar也不生成.aar。生成目录不包含lib目录。它应该可以工作。同样的事情也适用于我。为了生成jar/aar,我已经用同样的步骤做了多次。好的,谢谢,我会再试一次,但我认为这并不能解决我的问题。也许你知道怎么解决它?