目前(Android/java) library
的主要发布仓库有 MavenCentral
和 jitpack
,我之前也对这两种仓库的发布流程做了详细介绍:
但是,以上两种仓库,一般是用来免费发布开源 library
的,在提交库信息时,就会要求填写开源仓库的 url,如果我们不想开源源代码,仅仅只是希望把混淆后的 aar/jar
发布出去,那么上述两篇文章的流程就行不通了。
一般来说,这些平台也会提供付费服务,支持发布闭源的 library
,就比如 jitpack
付费之后,才可以导入私有的 GitHub 仓库(即 private repo
),从而构建并发布闭源的 library
,可这笔费用不低的,具体费用见官网说明:
jitpack
官网:jitpack
付费价格:那有没有办法做到,既能免费又能闭源地发布 library
呢?Yes,这就是本篇要讲述的主要内容,灰常实用。
不管是 jar
还是 aar
,对于 Android 开发者来说,都是 library
,只是它们的 module 类型不同而已,简单来说,aar
是可以包含资源文件的 jar
,功能更加强大,这里以 aar
为例,创建一个 android library module:
为了新手容易理解,这里有几点简单说明一下:
注:java library module 使用的 Gradle 插件是
java-library
(apply 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