Android 如何通过gradle(包括依赖项)制作一个jar
我有一个用kotlin编写的模块,现在我必须把这个模块做成一个jar。我必须将kotlin-stlib-1.3.50.jar包含到我的jar中,这样它才能在android中成功运行。但有一个问题是,调用my jar的应用程序也是用kotlin编写的,它有一个不同版本的kotlin stdlib。那我怎么解决呢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
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)
您不必为此编写任何代码。只需按照以下步骤操作:
大家好,欢迎来到StackOverflow。您是否需要将依赖项添加到jar文件中,以便自动解析它们?你熟悉POM文件吗?你好Jaymin谢谢你的回答,我照你说的做了。但是它不起作用,模块目录中没有这样的路径build->libs->.jar。我还想知道这种方式和内置gradle任务有什么区别吗?没有区别。如果你按照我的方式来做,你不需要编码。您正在尝试构建哪种类型的模块?它应该是Java库。您也可以使用.aar文件。同样的过程也会生成.aar文件。我的模块是android库,它既不生成.jar也不生成.aar。生成目录不包含lib目录。它应该可以工作。同样的事情也适用于我。为了生成jar/aar,我已经用同样的步骤做了多次。好的,谢谢,我会再试一次,但我认为这并不能解决我的问题。也许你知道怎么解决它?