Android Studio发布项目到jcenter

目录

  • 一、创建Bintray账户及Maven仓库
  • 二、上传项目到jcenter
    • 1、配置Android项目
    • 2、Gradle命令上传
    • 3、在项目中引用
    • 4、Add to JCenter
  • 三、Demo示例

一、创建Bintray账户及Maven仓库

1、打开Bintray首页,点击 For an Open Source Account
,快速注册或者用第三方的账户登陆即可。
在这里插入图片描述
2、个人页面点击 Add New Repository 创建一个 Mavne 仓库
在这里插入图片描述
3、填写仓库信息,仓库名称记住,后面有用
在这里插入图片描述

二、上传项目到jcenter

1、配置Android项目

在项目的根目录的build.gradle中添加如下代码:

classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'

在这里插入图片描述
在需要上传的module工程的根目录下创建j-build.gradle文件,文件内容如下:

// 这里添加下面两行代码。
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'// 定义两个链接,下面会用到。
def siteUrl = 'https://github.com/881205wzs/UItraPullToRefresh' // 项目主页。
def gitUrl = 'https://github.com/881205wzs/UItraPullToRefresh.git' // Git仓库的url。// 唯一包名,比如implementation 'com.davis.ui.pulltorefresh:pulltorefresh:2.1.0'中的com.davis.ui.pulltorefresh就是这里配置的。
group = "com.davis.ui.pulltorefresh"//项目引用的版本号,比如implementation 'com.davis.ui.pulltorefresh:pulltorefresh:2.1.0'中的2.1.0就是这里配置的。
version = "2.1.0"install {repositories.mavenInstaller {// 生成pom.xml和参数pom {project {packaging 'aar'// 项目描述,复制我的话,这里需要修改。name 'uitrapulltorefresh'// 可选,项目名称。description 'UItraPullToRefresh project describe'// 可选,项目描述。url siteUrl // 项目主页,这里是引用上面定义好。// 软件开源协议,现在一般都是Apache License2.0吧,复制我的,这里不需要修改。licenses {license {name 'The Apache Software License, Version 2.0'url 'http://www.apache.org/licenses/LICENSE-2.0.txt'}}//填写开发者基本信息,复制我的,这里需要修改。developers {developer {id 'wzs' // 开发者的id。name 'daivs' // 开发者名字。email 'wangzhongshun1205@163.com' // 开发者邮箱。}}// SCM,复制我的,这里不需要修改。scm {connection gitUrl // Git仓库地址。developerConnection gitUrl // Git仓库地址。url siteUrl // 项目主页。}}}}
}// 生成jar包的task,不需要修改。
task sourcesJar(type: Jar) {from android.sourceSets.main.java.srcDirsclassifier = 'sources'
}// 生成jarDoc的task,不需要修改。
task javadoc(type: Javadoc) {source = android.sourceSets.main.java.srcDirsclasspath += project.files(android.getBootClasspath().join(File.pathSeparator))// destinationDir = file("../javadoc/")failOnError false // 忽略注释语法错误,如果用jdk1.8你的注释写的不规范就编译不过。
}// 生成javaDoc的jar,不需要修改。
task javadocJar(type: Jar, dependsOn: javadoc) {classifier = 'javadoc'from javadoc.destinationDir
}
artifacts {archives javadocJararchives sourcesJar
}// 这里是读取Bintray相关的信息,我们上传项目到github上的时候会把gradle文件传上去,所以不要把帐号密码的信息直接写在这里,写在local.properties中,这里动态读取。
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {user = properties.getProperty("bintray.user") // Bintray的用户名。key = properties.getProperty("bintray.apikey") // Bintray刚才保存的ApiKey。configurations = ['archives']pkg {repo = "maven"  //Repository名字 需要自己在bintray网站上先添加name = "UItraPullToRefresh"// 发布到Bintray上的项目名字,这里的名字不是implementation 'com.davis.ui.pulltorefresh:pulltorefresh:2.1.0'中的pulltorefresh。userOrg = 'wzs'//Bintray的组织idwebsiteUrl = siteUrlvcsUrl = gitUrllicenses = ["Apache-2.0"]publish = true // 是否是公开项目。}
}

注:在最后的bintray里面有从local.properties文件中获取用户名跟apikey。这是保密信息,我们不能暴露给别人,build.gradle文件我们会提交到git服务器上,但是local.properties文件不会提交

local.properties文件,在尾部添加两行,这个key是我随便修改过的,是个错误的key,需要自己去替换:

bintray.user=wzs
bintray.apikey=ac8137c9138a8b49a18a323260041fcf1f75a6f

user是我们注册的名字,apikey需要去jcenter官网查看。进入修改用户界面,点击左侧apikey按钮,然后输入密码就能看到了。把这个key复制到local.properties中替换掉。
在这里插入图片描述

然后我们在module根目录的build.gradle文件末尾添加如下代码:

apply from: 'j-build.gradle'

在这里插入图片描述

2、Gradle命令上传

上传项目到jcenter需要用到gradle命令,首先把gralde加入到环境变量。如何配置环境变量这里就不在赘述。

在android studio底部有个Terminal的按钮。点击它进入Terminal界面。
在这里插入图片描述
依次执行如下命令:

gradle clean
gradle install

出现BUILD SUCCESSFUL就表示成功了。

然后继续输入命令,提交项目到bintray:

gradle bintrayUpload

这个命令会提示上传进度,上传到100%就成功了最后也会出现BUILD SUCCESSFUL。到了这一步你的进度条已经到了90%了,就差最后一步了。

3、在项目中引用

获取你的 Maven URL 并配置在需要使用的项目根目录的build.gradle 中。

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以在 Moudle 的 build.gradle 文件中添加依赖引用了。

implementation 'com.davis.ui.pulltorefresh:pulltorefresh:2.1.0'

在 Bintray lib overview 中可以找到 maven、gradle、ivy 等配置引用方式
在这里插入图片描述
在这里插入图片描述
现在你的 lib 可以正常使用了,自己用还好,如果是分享给别人用,所有人都需要在各自的 Project 的 build.gradle 中添加 maven{url ‘https://dl.bintray.com/wzs/maven’} ,否则他们无法下载你的 lib,所以很有必要将你的 lib 同步到 Jcenter 库,因为 Jcenter 是一个标准托管库,几乎所有 build.gradle 中都会包含 jcenter() 以便访问。

4、Add to JCenter

首先先进入到你上传的库的路径下,然后点击 Actions > Add to jcenter添加自己的lib。
在这里插入图片描述
这里根据你的 lib 情况选择,如果不是 pom 项目,只勾选第二项即可。
在这里插入图片描述
或者通过https://bintray.com/beta/#/bintray/jcenter

可以打开 jcenter 仓库,然后点击 Actions > Include My Package 添加你自己的 lib。
在这里插入图片描述
在这里插入图片描述
Send,然后等待审核通过吧。
在这里插入图片描述

三、Demo示例

本篇示例代码已上传至Github:UItraPullToRefresh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/446834.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++读取文件,将文件内容读到string字符串里面

使用stringstream和ifstream实现 代码 std::ifstream f{file_name, std::ios::binary};std::stringstream ss;ss << f.rdbuf();auto data ss.str();

Android MotionEvent中getX()、getRawX()和getTop()的区别

为了展示getX()、getRawX()和getTop()方法的区别&#xff0c;我们写了一个简单的测试Demo&#xff0c;我们写了一个自定义控件&#xff08;继承ImageView&#xff09;。 package com.demo.ui;import android.content.Context; import android.support.annotation.Nullable; im…

C++常量

常量 1.字面常量与符号常量 字面常量:从字面形式可以识别的常量 eg:1.2;‘A’ 整型常量:八进制(以0开头),十六进制(以0x或0X开头) 浮点型常量: 小数形式(整数和小数可以省略其中之一------为0时) eg:.123(0.123) 123.(123.0) 指数形式 0.23e1(0.2310^1) 0.23E-2(0.2310^-2)…

Synchronization 进程锁

Boost.Interprocess允许多个进程同时使用共享内存。因为共享内存从定义上来说是进程间共享的&#xff0c;所以Boost.Interprocess需要支持某种同步。想到同步&#xff0c;我们会想到C11标准库中的类或Boost.Thread。但是这些类只能用来同步同一进程内的线程&#xff0c;它们不支…

Android 获取屏幕宽度和高度的几种方法

方法一&#xff1a; public static void getScreenSize1(Context context){WindowManager windowManager (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);Display defaultDisplay windowManager.getDefaultDisplay();Point point new Point();defaultD…

毛概 第二章新民主主义革命理论

1.新民主主义革命的总路线 2.

解决undefined reference to symbol ‘sem_close@@GLIBC_2.2.5‘问题

错误图示 问题原因 编译的时候&#xff0c;没有引入库文件 sem()位于pthread库中&#xff0c;所以在编译和链接时请确保使用-pthread标志&#xff0c;因此在编译的时候需要导入pthread库文件编译的顺序出现问题 解决办法 在clion的CMakeLists.txt文件中添加这一行代码set(CM…

Android 在onCreate()方法中获取控件宽高值为0解决方案

大家很多时候需要在Activity或者Fragment的onCreate()方法中获取声明的空间的高度或者宽度&#xff0c;进行位置移动或者其他操作&#xff0c;但是当调用 view.getHeight() 或者 view.getWidth() 获取的竟然为0。。。 其实很容易理解&#xff0c;在onCreate()的时候&#xff0…

C++运算符与类型转换

除法/ 参与运算时,结果符号按照(为,–为,-或为-),两个都是整型结果直接去除小数部分 -3/1-1 -3/-13 3/-13 除法 一律向0取整&#xff08;即直接切除小数部分&#xff09;。 取余% 参与运算为整型,结果符号和第一个相同(当结果不为0时) /* 21%63 -21%6-3 -21%-6-3 参与取余的运…

使用named_mutex实现锁机制

介绍 named_mutex是一个进程锁&#xff0c;考虑到进程和线程之间的区别区别&#xff1a;一个工作单元要想被称作进程&#xff0c;它必须要有操作系统指派给他的地址空间&#xff0c;必须拥有进程ID&#xff0c;必须拥有状态和进程表中的表项。进程和线程之间最大的区别是进程有…

Android Studio 突然出现很多红色波浪线或红色感叹号解决方案

最近在开发过程中&#xff0c;某次打开Android工程之后&#xff0c;代码了出现大量的红色波浪线报错提示&#xff0c;但是工程确可以正常编译、正常打包&#xff0c;尝试了很多方法都无法去掉&#xff0c;最后找到了最有效的解决方案&#xff0c;步骤如下&#xff1a; 1、删掉…

安卓常用布局学习

线性布局 布局方向 水平 android:orientation“horizontal” 垂直android:orientation“vertical” gravity对齐方式–center 布局权重:视图中剩余部分的面积所占比例 android:layout_weight“1”(数字) 水平布局:android:layout_width“0dp” 垂直布局:android:layout_heigh…

Android Canvas绘制带箭头的直线

先看下效果图&#xff1a; 下面我们直接看代码 我自定义了一个View&#xff0c;代码如下&#xff1a; package com.davis.drawtrangle;import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; imp…

使用named_mutex实现读写锁,实现进程之间读共享写独占

代码 代码的名称是read_write_mutex.h这个代码可用&#xff0c;但是未优化&#xff0c;还存在冗余的代码如果涉及到进程挂掉了&#xff0c;造成进程堵塞&#xff0c;如何解决&#xff1f;还未涉及 //#ifndef BOOST_THREAD_PTHREAD_SHARED_MUTEX_HPP #define BOOST_THREAD_PTHR…

Android Activity之间传递类对象

一、简介 开发过程中&#xff0c;Activity之间传递数据是必不可少的&#xff0c;Android中使用Intent和Bundle作为数据载体&#xff0c;在Activity之间传递&#xff0c;对于基础数据类型&#xff0c;Bundle已经提供了相关的put、set方法&#xff0c;而作为自定义的类型则需要有…

C++3个汉诺塔递归问题

3个汉诺塔问题A—>C 移动次数2^n-1 hannoni(int n,char a,char b,char c)把n个盘子借助b,从a移动到cmove(int n,char a,char c)把第n个盘子,从a移动到c #include<iostream> #include<cmath> using namespace std; //汉诺塔问题A--->C //2^n-1次移动次数 …

clion编译器解决undefined reference to symbol ‘shm_open@@GLIBC_2.2.5‘

修改CMakelists文件 cmake_minimum_required(VERSION 3.17) project(mutex_learn)set(CMAKE_CXX_STANDARD 14)set(BOOST_ROOT "/usr/local/include/boost") #添加头文件搜索路径 include_directories(/usr/local/include) #添加库文件搜索路径 link_directories(/us…

Android 拦截或屏蔽返回键

在Android开发中我们常常会遇到需要拦截或屏蔽返回键的需求&#xff0c;对拦截后的返回键进行特殊操作。 监听返回键有两种方式 1、重写OnBackPressed方法 Overridepublic void onBackPressed() {// 完全由自己控制返回键逻辑&#xff0c;系统不再控制&#xff0c;但是有个前…

C++递归斐波那契数列

第一种 //斐波那契数列 // 0 1 1 … //从第1个开始 代码 #include<iostream> #include<cmath> using namespace std; //斐波那契数列 // 0 1 1 ... //从第1个开始 int f(int n) {int m; if(n1)return 0;if(n2)return 1;elsemf(n-1)f(n-2);return m;} int mai…

Android onActivityResult中requestCode与resultCode区别

想要了解requestCode与resultCode的区别&#xff0c;我们需要先了解以下三个方法的用法&#xff1a; startActivityForResult(Intent intent, Int requestCode) setResut(int resultCode, Intent intent) onActivityResult(int requestCode, int resultCode, Intent intent) …