Android Studio將module打包并放到github作為遠(yuǎn)程maven倉(cāng)庫(kù)

前言

平時(shí)開發(fā)中,我們經(jīng)常會(huì)使用到通過(guò) gradle 依賴三方的工具鲫惶。例如我們常用的 okHttp 、 EventBus 等框架实抡。那么這些代碼是如何部署到遠(yuǎn)程并且供我們使用的呢欠母?接下來(lái)就來(lái)看一下如何去實(shí)現(xiàn)。

maven

maven 其實(shí)就是為我們提供了進(jìn)行托管我們代碼的地址吆寨,我們可以相關(guān)代碼進(jìn)行上傳到 maven赏淌,同時(shí)其他人如果覺(jué)得你寫的比較好就可以通過(guò)依賴獲取相關(guān)代碼。maven 就類似于一個(gè) git 或者 svn 的倉(cāng)庫(kù)啄清。

把自己的項(xiàng)目部署到 maven 中

image.png

上面項(xiàng)目中六水,我們有一個(gè) jnilib 的 library 俺孙。這個(gè)項(xiàng)目是我們創(chuàng)建的為了進(jìn)行 jni 調(diào)用的一個(gè)示例 library 。接下來(lái)我們?nèi)グ堰@個(gè) library 部署到 maven 中掷贾,并供其它項(xiàng)目依賴使用睛榄。

1 首先需要在 jnilib 的 build.gradle 中進(jìn)行一些配置:

//上傳的maven庫(kù)中
apply plugin: 'maven'

uploadArchives {
    repositories.mavenDeployer {
        def mavenDirPath = file('D:\\mavendir') // 本地存放目錄(自行選擇),可放在gradle.properties文件中引用
        repository(url:"file://${mavenDirPath.absolutePath}") // 必須雙引號(hào)想帅,單引號(hào)不會(huì)轉(zhuǎn)義$
        pom.project {
            groupId "com.harusty.maven" // 可以隨意取场靴,一般取包名
            artifactId "jnisay" // 可以隨意取,一般取庫(kù)的名字
            version "1.0.0" // 版本號(hào)
        }
    }
}

apply plugin: 'maven' 應(yīng)用 maven 的插件港准。
可以看到我們配置了本地的 maven 緩存目錄旨剥,以及庫(kù)的包名、庫(kù)名浅缸、版本號(hào)的信息轨帜,根據(jù)自己的習(xí)慣進(jìn)行命名。

2 生成aar文件

定義好了相關(guān)配置信息衩椒,就可以去編譯進(jìn)行刷新生成 jnilib 的相關(guān)文件:

image.png

點(diǎn)擊Run "MyApplication ..."蚌父,或者我們?nèi)?zhí)行g(shù)radlew :jinlib:uploadArchives命令

此時(shí)會(huì)在本地目錄中生成相關(guān)文件,我這里定義的本地D盤烟具,去看一看:

image.png
image.png

我這里因?yàn)橹案倪^(guò)版本號(hào)為1.0.1梢什,所以會(huì)生成兩個(gè)文件夾。庫(kù)的升級(jí)也就是這樣去做的朝聋。

這樣嗡午,我們已經(jīng)在本地生成了文件,接下來(lái)就只需要上傳到遠(yuǎn)程就可以了冀痕。

3 上傳本地文件到遠(yuǎn)程
上傳到github的地址:

image.png

拿到地址信息荔睹,https://github.com/harusty/jnisay/

4 本地配置信息,下載部署在 git 上的文件:
github 的地址信息
https://github.com/harusty/jnisay/
進(jìn)行修改:
https://raw.githubusercontent.com/harusty/jnisay/master
即 github.com ——> raw.githubusercontent.com
在末尾追加 master 分支

根目錄下 build.gradle 進(jìn)行地址信息配置:

allprojects {
    repositories {
        google()
        jcenter()
        maven{
            url "https://raw.githubusercontent.com/harusty/jnisay/master"
        }
    }
}

在需要使用該庫(kù)的build.gradle文件的dependencies添加依賴:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.harusty.maven:jnisay:1.0.0'
//    compile project(path: ':jnilib')
}

上面我們同時(shí)屏蔽了本地對(duì) library 的依賴言蛇。

5 刷新 build.gradle 文件僻他,下載對(duì)應(yīng)部署在 git 上的 library 文件。

image.png

成功下載后我們可以在 External Libraries 中看到上述的 aar 文件腊尚。

注意:

在下載過(guò)程中我們有可能連接不上 raw.githubusercontent.com吨拗,導(dǎo)致下載 aar 文件失敗⌒龀猓可以通過(guò)修改 Host 文件解決:

通過(guò)IPAddress.com首頁(yè),輸入raw.githubusercontent.com查詢到真實(shí)IP地址
199.232.28.133
C:\Windows\System32\drivers\etc
hosts文件
添加 以下內(nèi)容并保存即可恢復(fù)
199.232.28.133 raw.githubusercontent.com

6 運(yùn)行文件劝篷,調(diào)用 jnilibs 里的方法。

public class JNIUtils {
    static {
        System.loadLibrary("demo");
    }

    public static  native String sayHelloFromJNI();
}

這里用的 jni 民宿,native 層會(huì)返回一個(gè)字符串娇妓。關(guān)于 jni 相關(guān)可查看
jni 調(diào)用的相關(guān)文章,這里知道會(huì)返回一個(gè)字符串活鹰。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final TextView tv = findViewById(R.id.jni_click);
        tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                tv.setText(JNIUtils.sayHelloFromJNI());
            }
        });
    }
}

功能可正常調(diào)用即部署成功哈恰。如果本地升級(jí)了只估,同時(shí)升級(jí) maven 配置的版本號(hào)即可,并進(jìn)行上傳至 git 着绷。

uploadArchives {
    repositories.mavenDeployer {
        def mavenDirPath = file('D:\\mavendir') // 本地存放目錄(自行選擇)蛔钙,可放在gradle.properties文件中引用
        repository(url:"file://${mavenDirPath.absolutePath}") // 必須雙引號(hào),單引號(hào)不會(huì)轉(zhuǎn)義$
        pom.project {
            groupId "com.harusty.maven" // 可以隨意取蓬戚,一般取包名
             artifactId "jnisay" // 可以隨意取夸楣,一般取庫(kù)的名字
            version "1.0.3" //升級(jí) 版本號(hào)
        }
    }
}

升級(jí)到 1.0.3 版本。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末子漩,一起剝皮案震驚了整個(gè)濱河市豫喧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌幢泼,老刑警劉巖紧显,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異缕棵,居然都是意外死亡孵班,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門招驴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)篙程,“玉大人,你說(shuō)我怎么就攤上這事别厘∈觯” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵触趴,是天一觀的道長(zhǎng)氮发。 經(jīng)常有香客問(wèn)我,道長(zhǎng)冗懦,這世上最難降的妖魔是什么爽冕? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮披蕉,結(jié)果婚禮上颈畸,老公的妹妹穿的比我還像新娘。我一直安慰自己没讲,他們只是感情好眯娱,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著食零,像睡著了一般。 火紅的嫁衣襯著肌膚如雪寂屏。 梳的紋絲不亂的頭發(fā)上贰谣,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天娜搂,我揣著相機(jī)與錄音,去河邊找鬼吱抚。 笑死百宇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的秘豹。 我是一名探鬼主播携御,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼既绕!你這毒婦竟也來(lái)了啄刹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤凄贩,失蹤者是張志新(化名)和其女友劉穎誓军,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體疲扎,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昵时,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了椒丧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壹甥。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖壶熏,靈堂內(nèi)的尸體忽然破棺而出句柠,到底是詐尸還是另有隱情,我是刑警寧澤久橙,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布俄占,位于F島的核電站,受9級(jí)特大地震影響淆衷,放射性物質(zhì)發(fā)生泄漏缸榄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一祝拯、第九天 我趴在偏房一處隱蔽的房頂上張望甚带。 院中可真熱鬧,春花似錦佳头、人聲如沸鹰贵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)碉输。三九已至,卻和暖如春亭珍,著一層夾襖步出監(jiān)牢的瞬間敷钾,已是汗流浹背枝哄。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留阻荒,地道東北人挠锥。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像侨赡,于是被迫代替她去往敵國(guó)和親蓖租。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355