结合github创建私有maven库

最近由于工作需要又开始搞安卓方面的东西不过还没深入,由于需要做一个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
//}

然后我们打开gradle管理菜单如下图:

圈起来这个选项就是直接做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文件里就可以看出为什么这么写引用了,如果有不明白的可以留言。

0 0 vote
Article Rating
Subscribe
提醒
guest
2 评论
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
2
0
Would love your thoughts, please comment.x
()
x