当前位置: 首页 > news >正文

杭州网站建设 乐云践新专家/谷歌商店下载

杭州网站建设 乐云践新专家,谷歌商店下载,wordpress在线阅读pdf,html好看的个人主页前言 我们在日常开发中,经常会用到第三方开源的库文件,有的来自JCenter,Maven Central,google等。但是随着JCenter的弃用,现在用的最多的还是Maven Central,google。今天我们就自己亲自发布一个依赖。 现…

前言 

我们在日常开发中,经常会用到第三方开源的库文件,有的来自JCenter,Maven Central,google等。但是随着JCenter的弃用,现在用的最多的还是Maven Central,google。今天我们就自己亲自发布一个依赖。

现在网络上有很多的文章,是关于如何发布Android依赖到 Jitpack的,但是大多数都是比较早的,而且随着gradle版本的更新迭代,很多旧的插件已经不支持使用了。比如旧版本的 gradle 可以使用com.github.dcendents:android-maven-gradle-plugin:2.1,但是现在gradle 版本到 7.0 之后,这些插件就不适用了,而且坑很多,我创建了多个项目进行尝试,最终都失败了。也根据网络上的资料配置了jitpack.yml 文件,去指定在 Jitpack 需要编译的Jdk版本,可是还是失败。后来也参照了Jitpack官方文档以及官方项目jitpack.io还是失败,因为我发现Jitpack官方项目都是好几年前的版本,根本无法适用于gradle 版本到7.0 之后的,这一点还是希望,Jitpack官方可以随时更新维护一下项目和使用文档才好。

废话就不多说,下面开始我们创建自己的发布依赖之旅吧。

创建项目

首先,打开AS我们创建一个项目,这个很简单,如下图所示:

为了后面演示方便,我这里保留了lib模块以及app模块。

项目创建完毕后,就开始准备工作了,第一步就是要检查我的gradle版本以及gradle插件版本,以及sdk 的版本。

检查gradle版本

 1、我的gradle版本是 gradle-7.5(项目根目录->gradle->wrapper->gradle-wrapper.properties)

  distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip2、gradle 的插件版本 (项目根目录->build.gradle)classpath 'com.android.tools.build:gradle:7.4.2'3、jdk 采用 1.8.0_221 (这个我们本地的不影响 jitpack 编译,到时候通过 jitpack.yml 去指定编译的 jdk 版本就可以了,提示:jitpack 默认是采用 1.8 的jdk进行编译的)4、Android Studio Giraffe | 2022.3.1 Patch 1
Build #AI-223.8836.35.2231.10671973, built on August 17, 2023
Runtime version: 17.0.6+0-17.0.6b829.9-10027231 aarch64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
macOS 13.5.1
GC: G1 Young Generation, G1 Old Generation
Memory: 1280M
Cores: 8
Metal Rendering is ON
Registry:external.system.auto.import.disabled=truedebugger.new.tool.window.layout=trueide.text.editor.with.preview.show.floating.toolbar=falseide.experimental.ui=true

注意事项:注意gradle版本,Android studio版本,以及gradle 插件版本要相对应,具体版本对应关系可以参考Google的android开发平台的Android Gradle 插件版本说明。对照对应关系表修改三者的对应关系。如下图所示:

Android Gradle 插件版本所需的 Gradle 版本:

Android Gradle 插件和 Android Studio 兼容性

依赖库的配置

检查完本地的gradle相关的版本对应关系后,下面我们就可以开始配置依赖库。注意这里的依赖库shapeimageviewlib是我事先已经完善好了的功能模块,这里就以shapeimageviewlib来做依赖配置讲解。

在做依赖库的配置前,需要满足一下俩个要求。


1、需要有 jitpack 账号,可以去jitpack官网自行注册
2、需要有 github 账号 或者是 码云 gitee 账号,可以去码云titee或者github自行注册

做为一个开发者,我想大家都有GitHub,Gitee,以及Jitpick账户吧,如果没有赶快去注册一个,注册流程很简单,这里就不做解说。

一:配置shapeimageviewlib的build.gradle

打开shapeimageviewlib 目录下的 build.gradle 文件,并在 plugins{} 标签中加入 id 'maven-publish'

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

然后加入打包源码的task,如下所示:

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

默认情况下,Gradle将每24小时刷新一次快照依赖项。

如果版本以-SNAPSHOT后缀结尾,Gradle将自动将依赖项识别为快照。例如:

dependencies {compile group: "aGroup", name: "anArtifact", version: "1.0-SNAPSHOT"
}

但是,如果依赖项的版本字符串不以-SNAPSHOT结尾,则需要告知Gradle它是带有changing参数的快照。例如:

dependencies {compile group: "aGroup", name: "anArtifact", version: "1.0", changing: true
}

覆盖Gradle下载快照的频率

覆盖默认的24小时策略的唯一机制是将Gradle配置为更频繁地使依赖项缓存无效(并因此下载新的SNAPSHOT)。例如:

configurations.all {resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}

动态版本化的依赖项缓存将需要单独配置

如果您使用任何动态版本,例如:

dependencies {compile group: "aGroup", name: "anArtifact", version: "1.+", changing: true
}

您需要分别为这些依赖项配置缓存无效,如下所示:

configurations.all {resolutionStrategy.cacheChangingModulesFor 0, 'seconds'resolutionStrategy.cacheDynamicVersionsFor 0, 'seconds'
}

建立绩效影响:
需要注意的一件事是,缓存依赖项的时间越短,Gradle检索该 Artifact 的频率就越高。如果完全禁用了缓存,则它将在每次执行期间获取依赖项。

关于maven - 有关快照的Gradle缓存问题的解决方案?,我在Stack Overflow上找到一个类似的问题: maven - Solution around gradle cache issues with snapshots? - Stack Overflow

至于是否使用快照,自己可以更具实际情况而定。

下面就是最核心的配置了,也就是发布上传配置。

二:配置上传publishing

同样操作,我们需要在shapeimageviewlib的build.gradle配置如下:

afterEvaluate {publishing {publications {// Creates a Maven publication called "release".group = 'com.github.hirezy'version = '1.0.0'//发布release版本release(MavenPublication) {// Applies the component for the release build variant.from components.release//groupId通常是自己的gitee或者GitHub的账户地址groupId = group//artifactId通常是指待发布项目的名称,也就是别名artifactId = 'ShapeImageView'//version通常是指待发布项目的版本号,这里是写死的,通常我们取项目versionNameversion = version}//发布debug版本debug(MavenPublication) {// Applies the component for the release build variant.from components.debuggroupId = groupartifactId = 'ShapeImageView-debug'version = version}}}
}

注意:网上有博主说,直接把afterEvaluate模块放在android{ //...todo}模块,这里我想特别提醒一下,不能放在android{ //...todo}模块,切记只能放在根模块,就是和android{ //...todo}同级。

本以为到了这里就万事大吉了,但是后来发布后遇到了下面的问题:

仔细分析报错日志,发现报了如下俩个错误


1:Gradle 'publishToMavenLocal' task not found. Please add the 'maven-publish' or 'maven' plugin.

2:
* What went wrong:
A problem occurred configuring root project 'ShapeImageView'.
> Could not resolve all files for configuration ':classpath'.> Could not resolve com.android.tools.build:gradle:7.4.2.Required by:project :> No matching variant of com.android.tools.build:gradle:7.4.2 was found. The consumer was configured to find a runtime of a library compatible with Java 8, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '7.5' but:- Variant 'apiElements' capability com.android.tools.build:gradle:7.4.2 declares a library, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares an API of a component compatible with Java 11 and the consumer needed a runtime of a component compatible with Java 8- Other compatible attribute:- Doesn't say anything about org.gradle.plugin.api-version (required '7.5')- Variant 'javadocElements' capability com.android.tools.build:gradle:7.4.2 declares a runtime of a component, and its dependencies declared externally:- Incompatible because this component declares documentation and the consumer needed a library- Other compatible attributes:- Doesn't say anything about its target Java version (required compatibility with Java 8)- Doesn't say anything about its elements (required them packaged as a jar)- Doesn't say anything about org.gradle.plugin.api-version (required '7.5')- Variant 'runtimeElements' capability com.android.tools.build:gradle:7.4.2 declares a runtime of a library, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares a component compatible with Java 11 and the consumer needed a component compatible with Java 8- Other compatible attribute:- Doesn't say anything about org.gradle.plugin.api-version (required '7.5')- Variant 'sourcesElements' capability com.android.tools.build:gradle:7.4.2 declares a runtime of a component, and its dependencies declared externally:- Incompatible because this component declares documentation and the consumer needed a library- Other compatible attributes:- Doesn't say anything about its target Java version (required compatibility with Java 8)- Doesn't say anything about its elements (required them packaged as a jar)- Doesn't say anything about org.gradle.plugin.api-version (required '7.5')* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.* Get more help at https://help.gradle.orgBUILD FAILED in 533ms
Build tool exit code: 0
Looking for artifacts...
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2
Looking for pom.xml in build directory and ~/.m2
2023-09-06T17:54:45.227812499Z
Exit code: 0⚠️ ERROR: No build artifacts found

可是我分明已经加入了maven-publish插件,为什么会报Gradle 'publishToMavenLocal' task not found。

而且我明明也指定了jdk版本为未java11啊,为什么说我是用的是java8了。这真的一度让我怀疑人生,不敢在相信Jitpack了。

    compileOptions {sourceCompatibility JavaVersion.VERSION_11targetCompatibility JavaVersion.VERSION_11}

可是本本着不服输的想法我再次查阅了jitpack.io文档,终于让我找到了解决办法。如下图所:

然后,我试着加入jitpack.yml文件,内容如下:

jdk:- openjdk11
before_install:- sdk install java 11.0.10-open- sdk use java 11.0.10-open
install:- echo "Running a custom install command"- ./gradlew clean install -xtest
env:MYVAR: "custom environment variable"

结果神奇的发现,问题2解决了,但是问题依然存在。

后来试着在android{ //...todo}模块加入如下指令,竟然神奇发现,编译竟然通过了:

    publishing {singleVariant("release")singleVariant("debug")}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}debug{minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}

走到这一步,我真的要吐血了,甚至有冲动不想在使用Jitpick了,在这里真心希望jitpack团队可以及时更新文档,更新simple。

三:将代码同步到 github/gitee上

我们只要按照以下步骤执行命令即可把我们工程上传到GitHub或者gitee上,这里不做过多讲解。

echo "”>>README.md
     git init
     git add .
     git commit -m "first commit"
     git remote add origin git@github.com:hirezy/ShapeImageView.git
     git push -u origin master

注意:

github 现在推送代码,是采用了 token 的形式,可以去后端生成 token,然后去 android studio 等工具使用,否则无法提交代码,原本的密码账号的形式,已经被废弃了。可以参考:GitHub不再支持密码验证解决方案:SSH免密与Token登录配置,讲解的非常详细。

代码同步完成后,我们就去创建一个 release 版本,如下所示图:

这里是我提前已经准备好的一个releases,版本号是v.1.0.0,下面我带大家创建一个新的release版本,版本是v1.0.1

四:创建releases

创建releases版本前,我们需要先创建一个tag.创建tag命令如下:

git tag v1.0.1

提交这个tag到远程。

git push origin v1.0.1

提交成功,就会看到下图所示信息,提示我们新创建的tag已经成功提交远程仓库:

如果,你对git的tag操作不熟悉,可以参考Git优雅使用:git tag操作。

查看远程仓库,你会发现,远程会多了一个tag,我们只需点击图上圈着的Release按钮,就会跳转到创建页面,如果非第一次创建,可以看到如下页面,点击【Draft a new release】按钮去创建一个版本。(注意:我这里你看见有Release有俩个,那是因为我我提交了一个配置文件,每当我提交tag到远程,github会自动帮我releases出一个对应的版本,后面我会给大家分享这个config文件)。

当我们点击【Release】按钮,就会来到如下界面

 

因为不是第一次创建,所以点击【Draft a new release】按钮去创建一个版本,如下图所示:

五:如何快速生成releases:

上面介绍了,生成releases,出了通过大tag方式来生产releases,还可以通过配置config文件,在我们提交本地tag到远程的时候系统自动帮我们快速生成对应版本的releases

怎么做了,其实很简单,我们只需要在我们的项目的根目录新建这样的文件目录就好了,如下图所示:

并在release.yml这个文件加入如下内容即可:

name: publish release
on:push:tags:- "*"jobs:release:runs-on: ubuntu-latestpermissions:contents: writesteps:- uses: ncipollo/release-action@v1with:generateReleaseNotes: true

注意:一定要在项目的根目录下.github/workflows目录下新建release.yml文件,并加上面的内容方可自动快速帮我们创建releases.

六:将代码关联到 Jitpack,生成依赖库。

准备工作完毕后,我们直接登陆到Jitpack,然后复制我们的项目仓库地址,可以是https形式,也可以是SSH形式,如下图所示:

这里我采用ssh方式。复制地址后,来到Jitpack,在下图所示输入栏输入我们复制的项目地址信息,接着点击 【Loop up】 按钮,接着可以看到你Github上,最新的几个版本在这里(我这里是因为我之前上传过,所以有这么多),分别点击右侧的【Get it】按钮,加入没有 loading,则多点几次,刷网页也可以。

在依次点击【Loop up】 按钮 -》Get it】按钮,等待loading介绍即可:

编译结束,我们就会看到下图所示的结果,如果编译成功,就会看到log一列对应的版本就是绿色的,如果编译失败,就会看到log所在列会有红色失败提示,我们只需要点击那个像书籍一样的按钮,就可以看见相信的编译信息,如下图所示:

编译日志如下:

Build starting...
Start: Thu Sep 7 10:34:10 UTC 2023 91be4e2ca99f
Git:
v1.0.0-0-g9130e5c
commit 9130e5cf40ee555c45bf763a07572fc166f2bece
Author: hirezy 
Date:   Thu Sep 7 11:29:26 2023 +0800rename fileInit SDKMan
Found Android manifest
Android SDK version: . Build tools: 
Found gradle
Gradle build script
Found gradle version: 7.5.
Using gradle wrapper
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2
Downloading https://services.gradle.org/distributions/gradle-7.5-bin.zip
.10%.20%.30%.40%.50%.60%.70%.80%.90%.100%------------------------------------------------------------
Gradle 7.5
------------------------------------------------------------Build time:   2022-07-14 12:48:15 UTC
Revision:     c7db7b958189ad2b0c1472b6fe663e6d654a5103Kotlin:       1.6.21
Groovy:       3.0.10
Ant:          Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM:          11.0.2 (Oracle Corporation 11.0.2+9)
OS:           Linux 4.14.63-xxxx-std-ipv6-64 amd640m3.920s
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
Getting tasks: ./gradlew tasks --all
Tasks: publishToMavenLocal,
Running: ./gradlew clean -Pgroup=com.github.hirezy -Pversion=v1.0.1 -xtest -xlint assemble publishToMavenLocal
Checking the license for package Android SDK Build-Tools 30.0.3 in /opt/android-sdk-linux/licenses
License for package Android SDK Build-Tools 30.0.3 accepted.
Preparing "Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)".
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" ready.
Installing Android SDK Build-Tools 30.0.3 in /opt/android-sdk-linux/build-tools/30.0.3
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" complete.
"Install Android SDK Build-Tools 30.0.3 (revision: 30.0.3)" finished.
Checking the license for package Android SDK Platform 30 in /opt/android-sdk-linux/licenses
License for package Android SDK Platform 30 accepted.
Preparing "Install Android SDK Platform 30 (revision: 3)".
"Install Android SDK Platform 30 (revision: 3)" ready.
Installing Android SDK Platform 30 in /opt/android-sdk-linux/platforms/android-30
"Install Android SDK Platform 30 (revision: 3)" complete.
"Install Android SDK Platform 30 (revision: 3)" finished.
> Task :clean UP-TO-DATE
> Task :app:clean UP-TO-DATE
> Task :shapeimageviewlib:clean UP-TO-DATE
> Task :app:preBuild UP-TO-DATE
> Task :app:preDebugBuild UP-TO-DATE
> Task :shapeimageviewlib:preBuild UP-TO-DATE
> Task :shapeimageviewlib:preDebugBuild UP-TO-DATE
> Task :shapeimageviewlib:preReleaseBuild UP-TO-DATE
> Task :app:preReleaseBuild UP-TO-DATE
> Task :app:mergeDebugNativeDebugMetadata NO-SOURCE
> Task :shapeimageviewlib:compileDebugAidl NO-SOURCE
> Task :app:compileDebugAidl NO-SOURCE
> Task :shapeimageviewlib:packageDebugRenderscript NO-SOURCE
> Task :app:compileDebugRenderscript NO-SOURCE> Task :app:dataBindingMergeDependencyArtifactsDebug
WARNING: [Processor] Library '/home/jitpack/.gradle/caches/modules-2/files-2.1/com.github.JessYanCoding/AndroidAutoSize/v1.2.1/a44df9822e0cb91242358f070ef813714fd81c05/AndroidAutoSize-v1.2.1.aar' contains references to both AndroidX and old support library. This seems like the library is partially migrated. Jetifier will try to rewrite the library anyway.Example of androidX reference: 'androidx/fragment/app/FragmentManager$FragmentLifecycleCallbacks'Example of support library reference: 'android/support/v4/app/FragmentManager$FragmentLifecycleCallbacks'> Task :app:generateDebugResValues
> Task :app:generateDebugResources
> Task :shapeimageviewlib:compileDebugRenderscript NO-SOURCE
> Task :shapeimageviewlib:generateDebugResValues
> Task :shapeimageviewlib:generateDebugResources
> Task :shapeimageviewlib:packageDebugResources
> Task :app:generateDebugBuildConfig
> Task :app:javaPreCompileDebug
> Task :app:mapDebugSourceSetPaths
> Task :shapeimageviewlib:writeDebugAarMetadata
> Task :app:createDebugCompatibleScreenManifests
> Task :app:mergeDebugResources
> Task :app:checkDebugAarMetadata
> Task :app:dataBindingGenBaseClassesDebug
> Task :app:extractDeepLinksDebug
> Task :shapeimageviewlib:extractDeepLinksDebug
> Task :shapeimageviewlib:processDebugManifest
> Task :shapeimageviewlib:compileDebugLibraryResources
> Task :app:processDebugMainManifest
> Task :app:processDebugManifest
> Task :shapeimageviewlib:generateDebugBuildConfig
> Task :shapeimageviewlib:javaPreCompileDebug
> Task :app:mergeDebugShaders
> Task :app:compileDebugShaders NO-SOURCE
> Task :app:generateDebugAssets UP-TO-DATE
> Task :shapeimageviewlib:mergeDebugShaders
> Task :shapeimageviewlib:compileDebugShaders NO-SOURCE
> Task :shapeimageviewlib:generateDebugAssets UP-TO-DATE
> Task :shapeimageviewlib:packageDebugAssets
> Task :shapeimageviewlib:parseDebugLocalResources
> Task :app:mergeDebugAssets
> Task :app:processDebugManifestForPackage
> Task :app:compressDebugAssets
> Task :app:processDebugJavaRes NO-SOURCE
> Task :shapeimageviewlib:processDebugJavaRes NO-SOURCE
> Task :shapeimageviewlib:bundleLibResDebug NO-SOURCE
> Task :shapeimageviewlib:generateDebugRFile
> Task :app:checkDebugDuplicateClasses
> Task :app:processDebugResources> Task :shapeimageviewlib:compileDebugJavaWithJavac> Task :shapeimageviewlib:bundleLibCompileToJarDebug
> Task :app:desugarDebugFileDependencies> Task :app:compileDebugJavaWithJavac> Task :app:mergeDebugJavaResource
> Task :shapeimageviewlib:bundleLibRuntimeToJarDebug
> Task :app:mergeDebugJniLibFolders
> Task :app:dexBuilderDebug
> Task :shapeimageviewlib:mergeDebugJniLibFolders
> Task :app:mergeLibDexDebug
> Task :shapeimageviewlib:mergeDebugNativeLibs NO-SOURCE
> Task :shapeimageviewlib:copyDebugJniLibsProjectOnly
> Task :app:mergeProjectDexDebug
> Task :app:validateSigningDebug
> Task :app:mergeDebugNativeLibs NO-SOURCE
> Task :app:stripDebugDebugSymbols NO-SOURCE
> Task :app:writeDebugAppMetadata
> Task :app:writeDebugSigningConfigVersions
> Task :shapeimageviewlib:compileReleaseAidl NO-SOURCE
> Task :shapeimageviewlib:mergeReleaseJniLibFolders
> Task :shapeimageviewlib:mergeReleaseNativeLibs NO-SOURCE
> Task :shapeimageviewlib:stripReleaseDebugSymbols NO-SOURCE
> Task :shapeimageviewlib:copyReleaseJniLibsProjectAndLocalJars
> Task :shapeimageviewlib:compileReleaseRenderscript NO-SOURCE
> Task :shapeimageviewlib:generateReleaseResValues
> Task :shapeimageviewlib:extractDeepLinksForAarRelease
> Task :shapeimageviewlib:generateReleaseBuildConfig
> Task :shapeimageviewlib:generateReleaseResources
> Task :shapeimageviewlib:packageReleaseResources
> Task :shapeimageviewlib:parseReleaseLocalResources
> Task :shapeimageviewlib:javaPreCompileRelease
> Task :shapeimageviewlib:mergeReleaseShaders
> Task :shapeimageviewlib:compileReleaseShaders NO-SOURCE
> Task :shapeimageviewlib:generateReleaseAssets UP-TO-DATE
> Task :shapeimageviewlib:processReleaseManifest
> Task :shapeimageviewlib:packageReleaseAssets
> Task :shapeimageviewlib:packageReleaseRenderscript NO-SOURCE
> Task :shapeimageviewlib:prepareLintJarForPublish
> Task :shapeimageviewlib:prepareReleaseArtProfile
> Task :shapeimageviewlib:generateReleaseRFile
> Task :shapeimageviewlib:processReleaseJavaRes NO-SOURCE
> Task :app:mergeExtDexDebug
> Task :shapeimageviewlib:extractReleaseAnnotations> Task :shapeimageviewlib:compileReleaseJavaWithJavac> Task :shapeimageviewlib:mergeReleaseGeneratedProguardFiles
> Task :shapeimageviewlib:mergeReleaseConsumerProguardFiles
> Task :app:compileReleaseAidl NO-SOURCE
> Task :shapeimageviewlib:writeReleaseAarMetadata
> Task :shapeimageviewlib:mergeReleaseJavaResource
> Task :app:compileReleaseRenderscript NO-SOURCE
> Task :shapeimageviewlib:syncReleaseLibJars
> Task :shapeimageviewlib:bundleReleaseLocalLintAar
> Task :app:dataBindingMergeDependencyArtifactsRelease
> Task :app:generateReleaseResValues
> Task :app:generateReleaseResources
> Task :app:generateReleaseBuildConfig
> Task :app:mapReleaseSourceSetPaths
> Task :app:createReleaseCompatibleScreenManifests
> Task :app:extractDeepLinksRelease
> Task :shapeimageviewlib:extractDeepLinksRelease
> Task :app:checkReleaseAarMetadata
> Task :app:javaPreCompileRelease
> Task :app:processReleaseMainManifest
> Task :app:processReleaseManifest
> Task :app:extractProguardFiles
> Task :shapeimageviewlib:bundleLibResRelease NO-SOURCE
> Task :shapeimageviewlib:bundleLibRuntimeToJarRelease
> Task :shapeimageviewlib:bundleLibCompileToJarRelease
> Task :app:packageDebug
> Task :shapeimageviewlib:compileReleaseLibraryResources
> Task :app:createDebugApkListingFileRedirect
> Task :app:assembleDebug
> Task :shapeimageviewlib:createFullJarRelease
> Task :shapeimageviewlib:writeReleaseLintModelMetadata
> Task :app:mergeReleaseJniLibFolders
> Task :shapeimageviewlib:copyReleaseJniLibsProjectOnly
> Task :app:mergeReleaseNativeLibs NO-SOURCE
> Task :app:stripReleaseDebugSymbols NO-SOURCE
> Task :app:extractReleaseNativeSymbolTables NO-SOURCE
> Task :app:mergeReleaseNativeDebugMetadata NO-SOURCE
> Task :app:desugarReleaseFileDependencies
> Task :app:checkReleaseDuplicateClasses
> Task :app:mergeReleaseResources
> Task :app:dataBindingGenBaseClassesRelease
> Task :app:mergeReleaseShaders
> Task :app:compileReleaseShaders NO-SOURCE
> Task :app:generateReleaseAssets UP-TO-DATE
> Task :app:mergeReleaseAssets
> Task :app:compressReleaseAssets
> Task :app:processReleaseJavaRes NO-SOURCE
> Task :app:collectReleaseDependencies
> Task :app:sdkReleaseDependencyData
> Task :app:writeReleaseAppMetadata
> Task :app:writeReleaseSigningConfigVersions
> Task :shapeimageviewlib:stripDebugDebugSymbols NO-SOURCE
> Task :shapeimageviewlib:copyDebugJniLibsProjectAndLocalJars
> Task :shapeimageviewlib:extractDebugAnnotations
> Task :shapeimageviewlib:extractDeepLinksForAarDebug
> Task :shapeimageviewlib:mergeDebugGeneratedProguardFiles
> Task :shapeimageviewlib:mergeDebugConsumerProguardFiles
> Task :shapeimageviewlib:prepareDebugArtProfile
> Task :app:processReleaseManifestForPackage
> Task :shapeimageviewlib:mergeDebugJavaResource
> Task :shapeimageviewlib:syncDebugLibJars
> Task :app:mergeReleaseArtProfile
> Task :shapeimageviewlib:bundleDebugAar
> Task :shapeimageviewlib:assembleDebug
> Task :shapeimageviewlib:bundleReleaseAar
> Task :shapeimageviewlib:mapReleaseSourceSetPaths
> Task :shapeimageviewlib:mergeReleaseResources
> Task :shapeimageviewlib:generateMetadataFileForDebugPublication
> Task :shapeimageviewlib:generatePomFileForDebugPublication
> Task :shapeimageviewlib:publishDebugPublicationToMavenLocal
> Task :shapeimageviewlib:generateMetadataFileForReleasePublication
> Task :shapeimageviewlib:generatePomFileForReleasePublication
> Task :shapeimageviewlib:publishReleasePublicationToMavenLocal
> Task :shapeimageviewlib:publishToMavenLocal
> Task :app:processReleaseResources
> Task :shapeimageviewlib:verifyReleaseResources> Task :app:compileReleaseJavaWithJavac> Task :app:mergeExtDexRelease
> Task :app:dexBuilderRelease
> Task :shapeimageviewlib:assembleRelease
> Task :shapeimageviewlib:assemble
> Task :app:mergeReleaseJavaResource
> Task :app:optimizeReleaseResources
> Task :app:mergeDexRelease
> Task :app:compileReleaseArtProfile
> Task :app:packageRelease
> Task :app:createReleaseApkListingFileRedirect
> Task :app:lintVitalAnalyzeRelease
> Task :app:lintVitalReportRelease
> Task :app:lintVitalRelease
> Task :app:assembleRelease
> Task :app:assembleBUILD SUCCESSFUL in 1m 28s
137 actionable tasks: 134 executed, 3 up-to-date
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: [1] Wrote GeneratedAppGlideModule with: [com.bumptech.glide.integration.okhttp3.OkHttpLibraryGlideModule]
Note: /home/jitpack/build/app/src/main/java/com/hirezy/shapeimageview/ScaleTypeActivity.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: /home/jitpack/build/app/src/main/java/com/hirezy/shapeimageview/MyImageLoader.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: [1] Wrote GeneratedAppGlideModule with: [com.bumptech.glide.integration.okhttp3.OkHttpLibraryGlideModule]
Note: /home/jitpack/build/app/src/main/java/com/hirezy/shapeimageview/ScaleTypeActivity.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: /home/jitpack/build/app/src/main/java/com/hirezy/shapeimageview/MyImageLoader.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2
Publication: com.github.hirezy:ShapeImageView-debug:1.0.0
Publication: com.github.hirezy:ShapeImageView:1.0.0
Build tool exit code: 0
Looking for artifacts...
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2
Looking for pom.xml in build directory and ~/.m2
Found artifact: com.github.hirezy:ShapeImageView-debug:1.0.0
Found artifact: com.github.hirezy:ShapeImageView:1.0.0
Found artifact: com.github.hirezy:ShapeImageView-debug:1.0.0
Found artifact: com.github.hirezy:ShapeImageView:1.0.0
2023-09-07T10:36:21.971608584Z
Exit code: 0✅ Build artifacts:
com.github.hirezy.ShapeImageView:ShapeImageView:v1.0.1
com.github.hirezy.ShapeImageView:ShapeImageView-debug:v1.0.1Files: 
com/github/hirezy/ShapeImageView/ShapeImageView/v1.0.1
com/github/hirezy/ShapeImageView/ShapeImageView/v1.0.1/ShapeImageView-v1.0.1.aar
com/github/hirezy/ShapeImageView/ShapeImageView/v1.0.1/ShapeImageView-v1.0.1.module
com/github/hirezy/ShapeImageView/ShapeImageView/v1.0.1/ShapeImageView-v1.0.1.pom
com/github/hirezy/ShapeImageView/ShapeImageView/v1.0.1/ShapeImageView-v1.0.1.pom.md5
com/github/hirezy/ShapeImageView/ShapeImageView/v1.0.1/ShapeImageView-v1.0.1.pom.sha1com/github/hirezy/ShapeImageView/ShapeImageView-debug/v1.0.1
com/github/hirezy/ShapeImageView/ShapeImageView-debug/v1.0.1/ShapeImageView-debug-v1.0.1.aar
com/github/hirezy/ShapeImageView/ShapeImageView-debug/v1.0.1/ShapeImageView-debug-v1.0.1.module
com/github/hirezy/ShapeImageView/ShapeImageView-debug/v1.0.1/ShapeImageView-debug-v1.0.1.pom
com/github/hirezy/ShapeImageView/ShapeImageView-debug/v1.0.1/ShapeImageView-debug-v1.0.1.pom.md5
com/github/hirezy/ShapeImageView/ShapeImageView-debug/v1.0.1/ShapeImageView-debug-v1.0.1.pom.sha1

七:如何使用

首先,在要引用的项目的根目录的build.gradle文件下加入JitPack repository(Add the JitPack repository to your build file)

allprojects {repositories {...maven { url 'https://jitpack.io' }}}

接着Add the dependency:

dependencies {implementation 'com.github.hirezy:ShapeImageView:Tag'}

注意:如果你使用的是1.0.0版本就是

dependencies {implementation 'com.github.hirezy:ShapeImageView:1.0.0'}

使用1.0.1版本就是

dependencies {implementation 'com.github.hirezy:ShapeImageView:1.0.1'}

依次类推。

总结:

要想成功顺利的将我们的lib发布到Jitpack,必须具备以下条件:

  1. 首先要注册相关账号,比如GitHub账号,Gitee账户,Jitpack账户
  2. 掌握基本的git命令,以及属性groovy编译工具的语法
  3. 正确配置gradle版本,gradle插件版本,Android studio 版本的对应关系
  4. 总重要的一点就是要有足够的耐心,发现问题,分析问题,解决问题

相关文章:

Android发布依赖到 Jitpack

前言 我们在日常开发中,经常会用到第三方开源的库文件,有的来自JCenter,Maven Central,google等。但是随着JCenter的弃用,现在用的最多的还是Maven Central,google。今天我们就自己亲自发布一个依赖。 现…...

【虚拟机开不了】linux、centOS虚拟机出现entering emergency mode解决方案

按他的操作输入journalctl之后输入shiftg到日志最后查看报错发现是xfs(dm-0有问题) xfs_repair -v -L /dev/dm-0 reboot解决问题...

嘉泰实业举行“互联网金融知识社区”“安全理财风险讲座”等活动

每一次暖心的沟通都是一次公益,真诚不会因为它的渺小而被忽略;每一声问候都是一次公益,善意不会因为它的普通而被埋没。熟悉嘉泰实业的人都知道,这家企业不但擅长在金融理财领域里面呼风唤雨,同时也非常擅长在公益事业当中践行,属于企业的责任心,为更多有困难的群体带来大爱的传…...

《C++设计模式》——结构型

前言 结构模式可以让我们把很多小的东西通过结构模式组合起来成为一个打的结构,但是又不影响各自的独立性,尽可能减少各组件之间的耦合。 Adapter Class/Object(适配器) Bridge(桥接) Composite(组合) Decorator(装饰) 动态…...

docker-compose安装redis

基于docker-compose快速安装redis 目录 一、目录结构 1、docker-compose.yml 2、redis.conf 二、连接使用 一、目录结构 1、docker-compose.yml version: 3 services:redis:image: registry.cn-hangzhou.aliyuncs.com/zhengqing/redis:6.0.8 # 镜像red…...

机器学习基础之《分类算法(6)—决策树》

一、决策树 1、认识决策树 决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-else结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法 2、一个对话的例子 想一想这个女生为什么把年龄放在最上面判断!!&…...

2023国赛数学建模C题思路模型 - 蔬菜类商品的自动定价与补货决策

# 1 赛题 在生鲜商超中,一般蔬菜类商品的保鲜期都比较短,且品相随销售时间的增加而变差, 大部分品种如当日未售出,隔日就无法再售。因此, 商超通常会根据各商品的历史销售和需 求情况每天进行补货。 由于商超销售的蔬菜…...

【Docker】Docker网络与存储(三)

前言: Docker网络与存储的作用是实现容器之间的通信和数据持久化,以便有效地部署、扩展和管理容器化应用程序。 文章目录 Docker网络桥接网络容器之间的通信 覆盖网络创建一个覆盖网络 Docker存储卷 总结 Docker网络 Docker网络是在容器之间提供通信的机…...

python面向对象的一个简单实例

#发文福利# #!/usr/bin/env python # -*- coding:utf-8 -*-students {id001: {name: serena, age: 18, address: beijing},id002: {name: fanbingbing, age: 42, address: anhui},id003: {name: kahn, age: 20, address: shanghai}}class Student:def __init__(self, xid, na…...

微信小程序通过npm引入tdesign包进行构建的时候报错

问题 在通过npm 引入 tdesign时:https://tdesign.tencent.com/miniprogram/getting-started 通过微信小程序IDE进行npm构建的时候出现:无法构建,应该怎么办? 解决方法: 1 输入: npm init -y命令 2 重新点…...

三次握手四次挥手

TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议。它通过三次握手来建立连接,通过四次挥手来断开连接。 三次握手 所谓三次握手,是指建立一个TCP连接时,需要客户端和服务器总共发送3个报文。三次握手的目的是连接服务器指定端…...

Redis持久化、主从与哨兵架构详解

Redis持久化 RDB快照(snapshot) 在默认情况下, Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中。 你可以对 Redis 进行设置, 让它在“ N 秒内数据集至少有 M 个改动”这一条件被满足时, 自动保存一次数…...

SQLITE_BUSY 是指 SQLite 数据库返回的错误码,表示数据库正在被其他进程或线程使用,因此当前操作无法完成。

SQLITE_BUSY 当多个进程或线程同时尝试对同一个 SQLite 数据库进行写操作时,就可能出现 SQLITE_BUSY 错误。这是为了确保数据库的数据完整性和一致性而设计的并发控制机制。 如果你在使用 SQLite 时遇到 SQLITE_BUSY 错误,可以考虑以下解决方法&#x…...

matlab求解方程组-求解过程中限制解的取值范围

文章目录 问题背景代码my_fun.mmain.m 结果展示:不加入F(4)加入F(4) 问题背景 求解方程组的时候,对某些未知数的求解结果的取值范围有要求。例如在某些物理问题求解中,要求待求解量大于0。 代码 一共两个文件: my_fun.m main.mmy_fun.m function Fm…...

【正则表达式】正则表达式常见匹配模式

目录 常见匹配模式re.match 从字符串的起始位置匹配一个模式泛匹配匹配目标贪婪匹配非贪婪匹配匹配模式转义 re.search 扫描整个字符串并返回第一个成功的匹配re.findall 以列表形式返回全部能匹配的子串re.sub 替换字符串中每一个匹配的子串后返回替换后的字符串 re.compile 将…...

Docker搭建RK3568建模环境

推荐:Ubuntu 20.04 版本 Docker加速 # 编辑 Docker 配置文件 $ sudo vim /etc/docker/daemon.json# 加入以下配置项 {"registry-mirrors": ["https://dockerproxy.com","https://hub-mirror.c.163.com","https://mirror.baidu…...

TCP/IP基础

前言: TCP/IP协议是计算机网络领域中最基本的协议之一,它被广泛应用于互联网和局域网中,实现了不同类型、不同厂家、运行不同操作系统的计算机之间的相互通信。本文将介绍TCP/IP协议栈的层次结构、各层功能以及数据封装过程,帮助您…...

redis问题:三种集群——主从、哨兵、cluster集群;16384槽等

目录 redis三种集群模式 1、主从 2、哨兵(Sentinel) 3、集群(Cluster) Redis Cluster为什么有16384个槽? 1、8KB的心跳包太大 2、集群的数量不会超过1000。 主从配置和集群配置区别 1、主从 2、集群 redis三种…...

转 股票触发指定价格发送到 企业微信

[Python源码]股票价格监听并推送-代码狗 import aiohttp,asyncio,json,time,re,os,datetimeclass StockListen:def __init__(self):#定义需要监听的股票代码列表self.stock_list [1.600050,1.601988,1.601288,1.601939]#定义预期价格列表self.expect_price [6.6,3.0,2.7,5]#…...

Linux修复软RAID

系统应该将mdadm配置成当发生RAID问题时给root用户发送邮件。需要更改/etc/mdadm/mdadm.xonf里的MALLADDR 并用/etc/init.d/mdadm reload重新加载下 查看/proc/mdstat文件 可以看到sdd1被标记F,说明它已经失效 从/dev/md0中移除磁盘sdd1 想要移除磁盘&#xff…...

【嵌入式软件C编程】主函数free子函数malloc地址的两种方式以及注意事项

本文档主要记录嵌入式C语言在子函数中应用malloc函数的方式,在实际项目中内存管理特别重要 一般在主函数中(main)使用malloc函数,然后在通过free函数进行释放内存,但有时候如果必须在子函数长调用malloc函数该怎样进行…...

金融工程学学习笔记第一章

第一章 金融工程概述 什么是金融工程 金融工程的含义 金融工程: 金融工程:一门融现代金融学、数理和工程方法与信息技术与一体的新兴交叉型学科。 工程是指以某种设想的目标为依据,应用有关科学知识和技术手段,通过有组织的一…...

CentOS 7 编译ZooKeeper C客户端

简介 本文主要讲解:Zookeeper C客户端库在Centos 7上的编译,使用的Zookeeper版本为3.4.13。 工具安装 安装ant 和cppunit-devel工具: [rootlocalhost source_code]# yum install -y cppunit-devel 已加载插件:fastestmirror L…...

【2023年数学建模国赛】A题解题思路

2023年数学建模国赛A题解题思路 问题1: 要计算定日镜场的年平均光学效率和年平均输出热功率,以及单位镜面面积年平均输出热功率,我们可以按照以下步骤进行: 遍历所有定日镜的位置,根据给定的定日镜尺寸和安装高度&am…...

人们对区块链的认识开始变得深入和完善,另一条新路径开始衍生

当区块链行业的发展进入到深水区,特别是当有关区块链的狂热与躁动开始退场,仅仅只是主打区块链的概念,而没有找到区块链与现实商业联通的方式和方法,依然成为困扰区块链发展的一大症结。   事实上,从区块链被人们认识…...

关于Comparable、Comparator接口返回值决定顺序的问题

Comparable和Comparator接口都是实现集合中元素的比较、排序的,下面先简单介绍下他们的用法。 1. 使用示例 public class Person {private String name;private Integer age;public Person() {}public Person(String name, Integer age) {this.name name;this.ag…...

js 根据键判断值

最原始的写法&#xff1a; 改进后的写法&#xff1a; const DeviceTypeObj {SO2: "SO<sub>2</sub>",CO: "CO",NO: "NO",NO2: "NO<sub>2</sub>",O3: "O<sub>3</sub>", let value Dev…...

堆排序,以及大顶堆构造过程Java实现

import java.util.Arrays;public class Main {public static void main(String[] args) {int a[] new int[] { 1, 1, 23, 456, 0 };// int a初始化方式int bb[] { 1, 2, 3, 4 };// int c[5] {1,2,34,5,6};//错误int d[] new int[6]; // 初始为0// int e[] new int[5]{1,2,…...

【C++】类的封装 ① ( 类和对象 | 面向对象三大特征 - 封装 继承 多态 | 类的封装引入 )

文章目录 一、类和对象1、类和对象概念2、代码示例 - 定义类和对象 二、类的封装1、面向对象三大特征2、类的封装引入 一、类和对象 1、类和对象概念 " 面向对象编程 " 是一种 " 编程范式 " , 可以适用于所有的 高级语言 , C 也包括在内 ; 面向对象编程 基…...

Docker原理详细剖析-Namespace

一、简介 docker容器技术从2013年开始火了以后&#xff0c;2014年左右当时有幸在学校能和学院教授一起做些项目以及学习。其中docker技术在当时来说还算是比较新的技术&#xff0c;国内关于这块的资料以及使用也才刚刚开始&#xff0c;讨论docker技术&#xff0c;算是相对时髦的…...