相关文章推荐

使用AndroidStudio最新版本(现在是2021年8月9日,版本为:Android Studio Arctic Fox 2020.3.1),创建一个库项目,在库项目的build.gradle文件前面添加maven-publish插件,如下:

plugins {
    id 'com.android.library'
    id 'kotlin-android'
    id 'maven-publish'

然后在文件的最后,添加如下内容:

// 用于打包源代码的任务
task androidSourcesJar(type: Jar) {
    archiveClassifier.set('sources')
    from android.sourceSets.main.java.srcDirs
// 用于把aar打包到maven仓库的任务
afterEvaluate {
    publishing {
        publications {
            release(MavenPublication) {
                from components.release
                artifact androidSourcesJar
                groupId = 'cn.android666.contextholder' // 库的组织,使用域名表示
                artifactId = 'contextholder' // 库名称
                version = '1.1.1' // 库版本
        repositories {
            maven {
                allowInsecureProtocol = true // 仓库默认不允许使用非https协议,所以这里设置为允许
                url 'http://192.168.1.251:8081/content/repositories/android_repositories/' // 公司maven仓库地址
                credentials {
                    username 'even'     // maven仓库账号
                    password '123456'   // maven仓库密码

在这里插入图片描述
按如上图的方式操作即可,第3步为选择你这个publish任务所在的模块。第4步输入publish然后按回车,这样发布的aar是带源码的,即打开类时可以看到源代码。

使用生成的aar
在settings.gradle中要先把公司的maven仓库地址设置好,如下:

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        // 公司仓库
        maven {
            allowInsecureProtocol = true // 仓库默认不允许使用非https协议,所以这里设置为允许
            url 'http://192.168.1.251:8081/content/repositories/android_repositories/'
rootProject.name = "ContextHolderLib"
include ':app'
include ':ContextHolder'

设置好仓库地址后,就可以在module的build.gradle中依赖我们的aar库了,如下:

dependencies {
    implementation 'androidx.core:core-ktx:1.5.0'
    implementation 'androidx.appcompat:appcompat:1.2.0'
    // ContextHolder
    implementation 'cn.android666.contextholder:contextholder:1.1.1'

实现本功能时参考的一些连接如下:

2023.1.30更新,目前版本是:Android Studio Dolphin | 2021.3.1 Patch1,在发布aar到maven时官方已有更新官方教程:https://developer.android.com/studio/publish-library,一定要看英文版,中文版的内容是过时的。

简化内容如下:

plugins {
    id 'com.android.library'
    id 'org.jetbrains.kotlin.android'
    id 'maven-publish'
android {
    compileSdk 33
    namespace 'cn.dazhou.utils'
    defaultConfig {
    publishing {
        singleVariant('release') {
            withSourcesJar()
dependencies {
// 用于把aar打包到maven仓库的任务,官方教程:https://developer.android.com/studio/publish-library,一定要看英文版,中文版的内容是过时的。
publishing {
    publications {
        release(MavenPublication) {
            groupId = 'cn.dazhou.utils'
            artifactId = 'utils'
            version = '1.6.8'
            afterEvaluate {
                from components.release
    repositories {
        maven {
            allowInsecureProtocol = true // 仓库默认不允许使用非https协议,所以这里设置为允许
            url 'http://192.168.1.251:8081/content/repositories/android_repositories/'
            credentials {
                username 'even'
                password '123456'

如果公司没有搭建Maven仓库,也可直接使用一个本地的目录做为Maven仓库,比如设置如下:

settings.gradle

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
       google()
        mavenCentral()        
        maven {
            url 'D:\\MavenRepositories'

build.gradle

publishing {
    publications {
        release(MavenPublication) {
            groupId = 'cn.dazhou.applist'
            artifactId = 'applist'
            version = '1.3.7'
            afterEvaluate {
                from components.release
    repositories {
        maven {
            url 'D:\\MavenRepositories'

使用本地目录做为仓库地址时,不需要设置用户名和密码。

使用AndroidStudio最新版本,创建一个库项目,在build.gradle文件的最后,添加如下内容:// 用于打包源代码的任务task androidSourcesJar(type: Jar) { archiveClassifier.set('sources') from android.sourceSets.main.java.srcDirs}// 用于把aar打包到maven仓库的任务afterEvaluate { publishing { p
伴随着 Gradle 7.0 出来以后, 老方式的 maven 上传已经不能用, 所以在这做一下笔记, 记录 maven 上传的一些注意事项。 一、升级 JDK(可跳过阅读) 1.1 自己下载 因为 Gradle 7.0 以上需要 JDK 11 环境, 所以需要升级一下 JDK, 但这里要注意一点, 使用 OpenJDK。 我一开始去官网下载 JDK 11, 后来朋友提醒 JDK 8 以后要收费, 查了一堆资料, 最后发现还是 OpenJDK 安全一点, 点击 这里 进入 OpenJDK 官网。 Maven:全名Apache Maven,是Apache开发的一个软件项目管理和项目自动构建工具 Maven仓库:存放Maven资源的地方,可以是远程Maven服务器,也可以是本地Maven服 POM:Project Object Model,一个用来描述项目信息的xml文件,以xml节点的形式记录项目所属分组,项目名称,项目版本,依赖类等信息 JCenter:一个由 bintray.com维护的Maven仓库。Bintray其实只是一个网站,他们负责维护JCenter这个
每一个文件,在计算机中都是以二进制来保存的,只是在显示时可以通过一些查看软件来查看,比如文档软件可以查看文字,比如*.txt文件保存在内存中是二进制内容,Notepad++软件读取二进制,并以文字的方式显示出来。再比如jpg图片,文件中也是二进制,一些看图片软件读取二进制后以图上的方式显示结果给我们看。有时候,我们希望直接查看二进制,当然直接看二进制会很痛苦,因为一长串的010100101,谁也看不懂,所以一般会以16进制的方式来查看这些二进制。 UltraEdit可以以二进制方式查看,但是这个软件是收费的
在做Android开发时,有时我们需要知道设备的网络好不好,光看手机上的信号格数是不准确的,比如在广州南站,人那么多,如果宽不够的话,虽然你看着信号是满格的,但是网速也会很慢,所以不能光看信号强度,还是得通过ping命令来看网速比较可靠。 在Android的实际开发中,我们公司开发了音视频通讯App,安装在了客户的设备上,客户说,哎,怎么看不到视频啊,你这App不行啊,每次遇到这种问题我们就会说,是你的网络不行啊。啊哈,很搞笑,一有问题我们就会说是客户的网络不好导致的,但是每次你这么说的话也不太好啊 Du_ioi: 这一个函数:override fun registerComponents(context: Context, glide: Glide, registry: Registry) { val builder = OkHttpClient.Builder() builder.sslSocketFactory(sSLSocketFactory, trustManager) builder.hostnameVerifier { _, _ -> true } val okHttpClient = builder.build() registry.replace(GlideUrl::class.java, InputStream::class.java, OkHttpUrlLoader.Factory(okHttpClient)) 给builder设置上这一句:builder.hostnameVerifier { _, _ -> true } 为什么InputStream的read()返回-1可以表示结束 android_cai_niao: 再简单点理解就是:inputStream.read()返回的数据只有可能是 -1、0、正整数,不可能会有其它的负数了,为什么会这样,因为 byte & 0xff 之后的结果只能是 0 或 正整数,不可能是负数,所以用任何一个负数都可以表示流结束了,但是编程语言设计都是使用 -1 来表示结束。 为什么InputStream的read()返回-1可以表示结束 android_cai_niao: 确实是基础问题,你要掌握好 & 运算就能理解了,把一个byte值 & 0xff之后就变成了一个int值了,且这个int值不可能是负数,所以当流结束时,可以使用一个int类型的-1表示没数据了。 为什么InputStream的read()返回-1可以表示结束 小鸭子tt: 还是有点没看懂,是我基础太差 Android音频焦点 普通网友: 写的很好,细节很到位!【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】
 
推荐文章