创建和发布Android库

介绍

如果不是所有我们喜欢包含在项目中的第三方库,那么我们作为Android开发人员的生活将更加艰辛。 在本教程中,您将学习如何通过创建和发布自己的Android库来回馈开发人员社区,人们可以轻松地在其项目中添加和使用它们。

1.创建一个Android库

如果您的库仅由Java类组成,则将其打包为JAR并使用文件主机进行分发可能是共享它的最快,最简单的方法。 如果要从控制台创建它,则以下命令就足够了:

jar cvf mylibrary.jar Class1.class Class2.class ... ClassN.class

但是,本教程向您展示如何使用更复杂的库,这些库不仅包含Java类,而且还包含各种类型的XML文件和资源。 此类库创建为Android库模块,通常打包为AAR文件。

让我们创建一个简单的Android库,为使用它的开发人员提供自定义View

步骤1:添加新模块

首先,通过从文件菜单中选择新建>新建模块 ,将新的Android模块添加到您的项目中。 将显示以下屏幕,其中提供了许多选择:

新模块对话框

选择“ Android库” ,然后按“ 下一步” 。 在随后的表格中,输入您的媒体库名称,然后按下一步 。 我将这个库称为mylittlelibrary

在最后一个屏幕中,选择“不添加活动” ,然后按“ 完成”

您的项目现在将具有两个模块,一个用于应用程序,一个用于库。 其结构如下所示:

项目结构

步骤2:建立版面

通过右键单击库模块的res文件夹并选择New> XML> Layout XML File来创建新的布局XML 。 将其命名为my_view.xml

为了简化本教程,我们将创建一个自定义View ,在LinearLayout中具有两个TextView小部件。 将一些文本添加到TextView小部件之后,布局XML文件应如下所示:


   
   

   
   

    
    
    

    
    
    

   
   

步骤3:建立Java类别

创建一个新的Java类,并将其命名为MyView.java 。 确保将此文件放在库模块的src目录中,而不是app模块中。

为了使此类表现为View ,使其成为LinearLayout类的子类。 Android Studio会提示您向该类添加一些构造函数。 添加它们之后,新类应如下所示:

public class MyView extends LinearLayout {

    public MyView(Context context) {
        super(context);
    }

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

}

如您所见,我们现在有两个构造函数。 为了避免向每个构造函数添加初始化代码,请从每个构造函数调用一个名为initialize的方法。 将以下代码添加到每个构造函数中:

initialize(context);

initialize方法中,调用inflate将我们在上一步中创建的布局与该类相关联。

private void initialize(Context context){
    inflate(context, R.layout.my_view, this);
}

2.在本地使用库

现在,该库已准备就绪,让我们在同一项目的app模块中使用它,以确保没有问题。 为此,请将其作为compile依赖项添加到应用程序模块的build.gradle文件中:

compile project(":mylittlelibrary")

在应用模块内创建一个新的Java类MainActivity 。 使它成为Activity类的子类,并重写其onCreate方法。

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}

onCreate方法中,使用其构造函数创建自定义视图的实例。 将其传递给setContentView方法,以使其填充Activity所有屏幕空间:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    View v = new MyView(this);
    setContentView(v);

}

您的Activity现已准备就绪。 将其添加到应用清单后,构建您的项目并将应用部署到Android设备。 应用启动时,您应该能够看到自定义视图。

3.在Bintray上发布您的图书馆

Bintray是一个流行的平台,可用于发布Android库。 它是免费的,易于使用。

首先在Bintray上创建一个帐户。 登录帐户后,您将看到您已经拥有六个存储库。 您可以使用其中之一,也可以创建一个新的存储库。 在本教程中,我将使用名为maven的存储库,这是一个Maven存储库。

主页

访问您的个人资料页面,然后单击“ 编辑”按钮。 在下一页上,单击“ API密钥”链接以查看您的API密钥。

API密钥

记下密钥,因为在使用Bintray插件时将需要它来进行身份验证。

步骤1:添加必要的插件

要在Android Studio中与Bintray进行交互,您应该在项目的build.gradle文件的dependencies中包含Bintray插件

classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'

因为您将库上载到Maven存储库,所以还应该添加Maven插件 ,如下所示。

classpath "com.github.dcendents:android-maven-gradle-plugin:1.3"

步骤2:套用外挂程式

打开您的库模块的build.gradle文件,并添加以下代码以应用我们在上一步中添加的插件。

apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'

步骤3:指定POM详细信息

Bintray插件在上载库时将查找POM文件。 即使Maven插件为您生成了它,您也应该自己指定groupId标记的值和version标记的值。 为此,请在gradle文件中使用groupversion变量。

group = 'com.github.hathibelagal.librarytutorial' // Change this to match your package name
version = '1.0.1' // Change this to match your version number

如果您熟悉Maven,并且想知道为什么我们没有指定artifactId标签的值,那是因为默认情况下,Maven插件将库的名称用作artifactId

步骤4:生成源JAR

为了符合Maven标准,您的库还应该有一个包含库源文件的JAR文件。 要生成JAR文件,请创建一个新的Jar任务generateSourcesJar ,并使用from函数指定源文件的位置。

task generateSourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier 'sources'
}

步骤5:生成Javadoc JAR

还建议您的库具有一个包含其Javadocs的JAR文件。 因为您当前没有任何Javadocs,所以创建一个新的Javadoc任务generateJavadocs来生成它们。 使用source变量指定源文件的位置。 您还应该更新classpath变量,以便任务可以找到属于Android SDK的类。 您可以通过向其添加android.getBootClasspath方法的返回值来实现。

task generateJavadocs(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath()
            .join(File.pathSeparator))
}

接下来,以生成的Javadoc一个JAR,创建一个Jar的任务,generateJavadocsJar,并通过destinationDir财产generateJavadocsfrom功能。 您的新任务应如下所示:

task generateJavadocsJar(type: Jar) {
    from generateJavadocs.destinationDir
    classifier 'javadoc'
}

为确保generateJavadocsJar任务仅在generateJavadocs任务完成后才启动,请添加以下代码片段,该片段使用dependsOn方法对任务进行排序:

generateJavadocsJar.dependsOn generateJavadocs

第6步:包括生成的JAR文件

要将源文件和Javadoc JAR文件包含在工件列表中(这些工件将被上传到Maven存储库),您应该将其任务名称添加到名为archivesconfiguration 。 为此,请使用以下代码段:

artifacts {
    archives generateJavaDocsJar
    archives generateSourcesJar
}

步骤7:运行任务

现在该运行前面步骤中创建的任务了。 打开Gradle Projects窗口并搜索名为install的任务。

安装任务

双击它以运行与库模块关联的任务。 完成运行后,您将拥有发布库所需的一切,有效的POM文件,AAR文件,源JAR和Javadocs JAR。

步骤8:配置Bintray插件

要配置插件,您应该在Gradle文件中使用bintray闭包。 首先,使用userkey变量分别对您的Bintray用户名和API密钥进行身份验证。

在Bintray上,您的库将位于Bintray包中 。 您应该使用pkg闭包的直观命名的reponamelicensesvcsUrl参数提供有关它的详细信息。 如果该软件包不存在,它将自动为您创建。

当您将文件上传到Bintray时,它们将与Bintray软件包的版本关联。 因此, pkg必须包含其name属性设置为唯一名称的version关闭。 (可选)您还可以使用descreleasedvcsTag参数提供描述,发布日期和Git标签。

最后,要指定应上载的文件,请将configuration参数的值设置为archives

这是一个示例配置:

bintray {
    user = 'test-user'
    key = '01234567890abcdef01234567890abcdef'
    pkg {
        repo = 'maven'
        name = 'com.github.hathibelagal.mylittlelibrary'

        version {
            name = '1.0.1-tuts'
            desc = 'My test upload'
            released  = new Date()
            vcsTag = '1.0.1'
        }

        licenses = ['Apache-2.0']
        vcsUrl = 'https://github.com/hathibelagal/LibraryTutorial.git'
        websiteUrl = 'https://github.com/hathibelagal/LibraryTutorial'
    }
    configurations = ['archives']
}

步骤9:使用Bintray插件上传文件

再次打开Gradle Projects窗口并搜索bintrayUpload任务。 双击它即可开始上传文件。

Bintray上传

任务完成后,打开浏览器访问Bintray软件包的详细信息页面。 您将看到一条通知,指出您有四个未发布的文件。 要发布这些文件,请单击发布链接。

关于未发布文件的通知

4.从Bintray使用资料库

您的资料库现在可以作为Bintray软件包使用。 共享Maven存储库的URL以及组ID,工件ID和版本号后,任何开发人员都可以访问您的库。 例如,要使用我们创建的库,开发人员必须包含以下代码片段:

repositories {
    maven {
        url 'https://dl.bintray.com/eruzza/maven'
    }
}

dependencies {
    compile 'com.github.hathibelagal.librarytutorial:mylittlelibrary:1.0.1@aar'
}

请注意,在将repositories添加为compile依赖项之前,开发人员必须将您的存储库明确包含在存储库列表中。

5.将库添加到JCenter

默认情况下,Android Studio在名为JCenter的存储库中搜索库。 如果将库包含在JCenter存储库中,则开发人员将不必在其repositories列表中添加任何内容。

要将库添加到JCenter,请打开浏览器,然后访问Bintray软件包的详细信息页面。 单击标记为添加到JCenter的按钮。

JCenter按钮

然后,您将进入可撰写邮件的页面。 您可以使用注释字段来选择提及有关该库的任何详细信息。

撰写邮件页面

单击发送按钮开始Bintray的审阅过程。 一两天内,Bintray的人员将您的库链接到JCenter存储库,您将能够在软件包的详细信息页面上看到到JCenter的链接。

链接到JCenter

现在,任何开发人员都可以使用您的库,而无需更改repositories列表。

结论

在本教程中,您学习了如何创建一个简单的Android库模块并将其发布到您自己的Maven存储库和JCenter存储库中。 在此过程中,您还学习了如何创建和执行不同类型的Gradle任务。

要了解有关Bintray的更多信息,请访问Bintray的用户手册

翻译自: https://code.tutsplus.com/tutorials/creating-and-publishing-an-android-library--cms-24582

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值