第一步、首先要创建一个Moudle,修改对应的Gradle文件;
//apply plugin: 'com.android.application'
apply plugin: 'com.android.library'
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
//删除applicationId这一项;
//applicationId "com.trapdp"
minSdkVersion 23
targetSdkVersion 29
versionCode 190
versionName "1.0.0.7"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
修改完成后,该项目的图标应该会变成这样(文件夹+柱状图样式的图标):
第二步、继续修改Gradle文件,在后面添加编译为jar的配置
//生成jar关键的部分;下面的makeJar1是自命名的;
task makeJar1(type:Copy){
//删除已经存在的;这个jar1.jar文件名也是可以随便修改的,下述用到的地方相同即可;
delete('build/outputs/jar1.jar')
//设置复制文件的位置(这个文件夹的后面,好像可以随便修改)
//如:from('build/intermediates/packaged-classes/debug/')
from('build/intermediates/packaged-classes/release/')
//生成jar的文件夹(位置)
into('build/libs')
//目标文件,classes.jar这个文件名好像是固定的,不能随便改;
include('classes.jar')
//将目标文件复制为我们想要的文件名(jar1.jar);
rename('classes.jar','jar1.jar')
}
//这里的makeJar1同上面命名
makeJar1.dependsOn(build)
第三步、编译jar;
编译的方法有2种,其一是命令模式,其二是鼠标操作;
方法一:点击下方的Terminal,在命令行输入指令:
//后面的makeJar1就是上面Gradle里task后配置的名称;
gradlew makeJar1
网上大部分的大神们都说可以编译成功,我试了一直报错,不知道是哪里没搞对。放弃了。
方法二:在AS的右侧上部,有一个Gradle的小小的标签,点击一下,打开侧边栏,找到Jar1项目,在Tasks\Other\下面找到makeJar1,双击即可编译完成;
如果项目下没有Task一项,需要在File\Setting里面设置一下,据说是AS自动隐藏了,很操蛋。我也是在这里被卡了好久(大部分情况下,这个也确实用不上)。
编译完成后,就可以在build/libs下面找到对应的jar文件。
第四步、在其他项目中引用jar;
将jar文件复制到其他项目的libs文件夹,并在项目中引用即可;
方法一:在Gradle文件中修改,在dependencies{}块内附加一行;
dependencies {
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
//引用jar文件;
implementation files('libs\\lab1.jar')
//引用同项目中的模块
//implementation project(path:'模块名称')
}
方法二:
在File\Project Structure里,为该项目添加引用(jar/aar)。
在弹出的引用框中,输入文件名,点击OK即可;
方法三:在左侧文件列表框里找到libs文件夹,点击要引用的jar文件,右键 ,在菜单下部分,点击 Add As Libary即完成引用;
如果文件列表中没有Libs文件夹,应该是显示方式问题,由Android改为Project显示;
改为
这样,libs就显示出来了;
为了这个编译jar,弄了半天,网上介绍这个功能的文章很多,就是没有全面介绍的,Android的坑多,不熟悉的就是差这样差那样的,总是不能一步到位解决问题。
感谢网上大神们的相关文章;