最近由于工作需要又开始搞安卓方面的东西不过还没深入,由于需要做一个SDK去让其他人用所有就想着能不能做一个类似于iOS上用的Pod管理,经过查资料决定用github联合maven做一个私有库,下面是过程。
1、第一步当然不用多说我们使用Android Studio创建一个module出来,创建过程就不赘述了,因为网上很多教程,自己点几下一个工程加moudle就出来了。我给它取名字为mysdk,创建好的工程结构如下图
很简单就创建了一个Activity和一个测试类,在Activity的layout中仅仅添加了一个按钮全屏显示。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.hh.mysdk.TestActivity">
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:onClick="onButtonClick"
android:text="@string/button_title" />
</RelativeLayout>
然后编辑工程,发现在build->outputs中生成了aar目录,里边存在两个aar文件这就是我们需要的包,如下图:
到这一步还没有结束,接下来需要做github和maven的关联。
2、github和maven的关联,我们需要在当前工程新建一个gradle文件用于编写生成maven库的脚本,我直接将代码贴上来里边有注释就不多解释了。
// 1.maven-插件
apply plugin: 'maven'
// 2.maven-信息
ext {// ext is a gradle closure allowing the declaration of global properties
PUBLISH_GROUP_ID = 'com.hh'
PUBLISH_ARTIFACT_ID = 'mysdk'
PUBLISH_VERSION = android.defaultConfig.versionName
}
// 3.maven-输出路径
uploadArchives {
repositories.mavenDeployer {
//这里就是最后输出地址,在自己电脑上新建个文件夹,把文件夹路径粘贴在此
//注意”file://“ + 路径,有三个斜杠,别漏了
repository(url: "file:///Users/liumingming/Documents/AndroidOutput/mysdk")
pom.project {
groupId project.PUBLISH_GROUP_ID
artifactId project.PUBLISH_ARTIFACT_ID
version project.PUBLISH_VERSION
}
}
}
//以下代码会生成jar包源文件,如果是不开源码,请不要输入这段
//aar包内包含注释
//task androidSourcesJar(type: Jar) {
// classifier = 'sources'
// from android.sourceSets.main.java.sourceFiles
//}
//
//artifacts {
// archives androidSourcesJar
//}
圈起来这个选项就是直接做maven库的脚本执行选项,我们去执行以下它,然后到指定目录会看到如下结构的文件结构
其中用红线圈起来的是我们需要传到github上的文件,在传之前我们创建一个叫mysdk的库,然后将刚才红圈圈起来的整个目录传上去,然后就可以去导入库使用了。
注意,由于我经过很多测试所以才有那么多版本。
其实引用很简单如下代码,在需要引用这个库的工程添加
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'
})
api 'com.android.support:appcompat-v7:27.1.0'
api 'com.android.support.constraint:constraint-layout:1.0.2'
// implementation project(':mysdk')
testImplementation 'junit:junit:4.12'
implementation 'com.hh:mysdk:1.0.8' //重点是这句
}
补发说明不充足部分,生成脚本文件比如说文件名是maven-release-aar.gradle 那么写好这个文件之后添加到工程后需要在sdk工程的比如说名字叫mysdk.gradle文件中添加一行(在问价末尾添加就行)apply from: ‘maven-release-aar.gradle’,这样才会生成uploadAchieves这个选项
相信从刚才我们新建gradle文件里就可以看出为什么这么写引用了,如果有不明白的可以留言。
我也是在研究阶段,如果写的不好勿喷,谢谢配合
生成脚本文件比如说文件名是maven-release-aar.gradle 那么写好这个文件之后添加到工程后需要在sdk工程的比如说名字叫mysdk.gradle文件中添加一行(在问价末尾添加就行)apply from: ‘maven-release-aar.gradle’,这样才会生成uploadAchieves这个选项