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.pswp.cn/news/446834.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446834.shtml
英文地址,請注明出處:http://en.pswp.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) …