您的当前位置:首页正文

Android - 利用 jitpack 免费发布闭源 aar

2024-12-01 来源:个人技术集锦

一、简述

目前(Android/java) library 的主要发布仓库有 MavenCentraljitpack,我之前也对这两种仓库的发布流程做了详细介绍:

  • 发布至 MavenCentral:
  • 发布至 jitpack:

但是,以上两种仓库,一般是用来免费发布开源 library 的,在提交库信息时,就会要求填写开源仓库的 url,如果我们不想开源源代码,仅仅只是希望把混淆后的 aar/jar 发布出去,那么上述两篇文章的流程就行不通了。

一般来说,这些平台也会提供付费服务,支持发布闭源的 library,就比如 jitpack 付费之后,才可以导入私有的 GitHub 仓库(即 private repo),从而构建并发布闭源的 library,可这笔费用不低的,具体费用见官网说明:

  • jitpack 官网:
  • jitpack 付费价格:

那有没有办法做到,既能免费又能闭源地发布 library 呢?Yes,这就是本篇要讲述的主要内容,灰常实用。

二、创建 library

不管是 jar 还是 aar,对于 Android 开发者来说,都是 library,只是它们的 module 类型不同而已,简单来说,aar 是可以包含资源文件的 jar,功能更加强大,这里以 aar 为例,创建一个 android library module:

为了新手容易理解,这里有几点简单说明一下:

注:java library module 使用的 Gradle 插件是 java-libraryapply plugin: 'java-library'),没有 android{} 配置项,如需混淆,则需要依赖其他 Gradle 插件,有需要的可以看我之前写的另一篇文章。
Android - 混淆 java-library 工程:

// build.gradle
apply plugin: 'com.android.library'

android {
    ...

    defaultConfig {
        ...
        versionCode 1
        versionName "1.0"
        consumerProguardFiles "consumer-rules.pro"
    }

    buildTypes {
        release {
            minifyEnabled true // 开启混淆
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.1.0'
    implementation 'com.luffykou:android-common-utils:1.1.3'
}

这里我创建的 library 功能非常简单,可以将一个图片 Bitmap 转成 Base64 字符串:

/**
 * GitLqr 工具类
 *
 * @author LQR
 * @since 2024/6/22
 */
public class GitLqrUtil {
   

    /**
     * bitmap 转 base64
     */
    public static String bitmapToBase64(Bitmap bitmap) {
   
        return Base64
显示全文