精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android SDK 開發—發布使用踩坑之路

移動開發 Android
在 Android 開發過程中,有些功能是通用的,或者是多個業務方都需要使用的。為了統一功能邏輯及避免重復開發,因此將該功能開發成一個 SDK 是相當有必要的。

前言

在 Android 開發過程中,有些功能是通用的,或者是多個業務方都需要使用的。

為了統一功能邏輯及避免重復開發,因此將該功能開發成一個 SDK 是相當有必要的。

背景

剛好最近自己遇到了類似需求,在開發完 SDK 之后,集成到項目或者提供給別人的時候遇到了一些坑,這里分享一下,以避免其他需要開發 SDK 的開發者們重復踩坑。

文章要說明的內容如下:

  1. 集成方式對比
  2. AAR 集成方式的一些坑
  3. 使用 maven publish 和 maven 將 SDK 推送到 maven 倉庫的區別
  4. Tips
  5. 總結

集成方式對比

SDK 開發完成之后,需要提供一種集成方式讓其他人可以使用。

集成方式這邊認為大概有 3 種。

1. 提供 Module

這種集成方式把整個 SDK 的源碼都提供給其他人。

  • 優點:沒有什么坑,只要自己測試沒問題,別人一般可以直接使用。
  • 缺點:后續如果有更新,需要全量給別人進行替換。

而且項目里面如果同時引用多個Module,項目結構會增加很多代碼文件。

還有可能一不小心就更改了 SDK。

因為源碼可以直接修改,沒有任何保護。

2. 提供 AAR 文件

這種集成方式是把 SDK 編譯之后提供 AAR 文件給其他人。

  • 優點:只有一個文件,不需要給到具體源碼。
  • 缺點:某種情況下有坑,下面會講到。另外更新 SDK 不方便,每次更新需要用戶進行 AAR 文件替換。

3. 推送到倉庫(這里以 MAVEN 倉庫為例)(推薦)

這種集成方式是把 SDK 編譯之后的 AAR 文件推送到倉庫,后續可以通過 implementation 或者 api(舊版本 Gradle 為 compile)引用。

  • 優點:集成方便,跟第三方庫集成類似,方便開發者。而且有版本管理。
  • 缺點:maven publish 有個坑。見下文分析。

表格對比如下:

集成方式優點缺點提供 Module沒有坑維護麻煩,沒有代碼保護提供 AAR 文件只有一個文件有坑,更新麻煩推送到倉庫集成方便,版本管理maven publish有個坑

AAR 集成方式的一些坑

一般 SDK 開發是封裝一些功能方便調用,因此比較少在 Module 里面引入第三方庫。這種情況下使用 AAR 集成是沒有太大問題的。

然而,當你的 SDK 中引入第三方庫,比如 Retorfit 之類的庫時(不是直接引入 jar 包或者 aar 包),這個時候你使用 AAR 集成,運行到對應代碼時會提示 java.lang.NoClassDefFoundError 錯誤。這個時候你

[[252825]]

明明 Module 運行沒問題,怎么 AAR 就報錯了。

如果你嘗試在項目里面將 SDK 用到的第三方庫再引入一遍,就會發現程序沒報錯了。

因此我們可以得出結論:

  • AAR 不能傳遞第三方依賴

別慌,方法總比問題多。

我們可以通過將 SDK 推送到倉庫的方式來解決這個問題。

推送倉庫有很多,比如開源的 jcenter 之類的。

這邊考慮有些 SDK 是給公司內部使用的,因此以 maven 為例進行講解。

使用 maven publish 和 maven 將 SDK 推送到 maven 倉庫的區別

maven publish 其實是 maven 的一個升級。

所以一般優先采用 maven publish。

這邊項目已經使用了 maven publish 了,所以這邊一開始也是使用 maven publish。

結果坑來了。

發現出現和 AAR 一樣的錯誤,依賴不能傳遞。

這,趕緊看一眼 pom 文件(跟 AAR 同級目錄),發現真的沒有依賴。

查了一下網上資料。發現

  • https://discuss.gradle.org/t/using-the-maven-publish-plugin-no-dependencies-in-pom-xml/7599

有一個提問

Android SDK 開發—發布使用踩坑之路

[[252826]]

當然應該有對應的處理方式,但是由于項目時間需求比較緊,不想花太多時間,因此暫時沒有查找解決方式。

如果有朋友知道,可以留言,后續有空研究,有解決方法也會更新。

因此這里不展開討論 maven publish 的集成方式。

最后查閱資料使用了 maven 的推送方式。

那么如何使用呢?

1. 先使用本地倉庫,確保沒問題之后再使用遠程的

在 Module 的 build.gradle 文件中添加如下代碼:

  1. apply plugin: 'maven' //指定使用 maven 
  2. uploadArchives { 
  3.  repositories { 
  4.  mavenDeployer { 
  5.  pom.groupId = "com.maven.demo" //包名 
  6.  pom.artifactId = "login" //SDK 功能,自定義一個即可 
  7.  pom.version = "0.0.1" //版本號 
  8.  repository(url: "file://localhost/Users/用戶名/Library/Android/sdk/extras/android/m2repository/") //用戶名替換為自己的機器名,本地地址 
  9.  } 
  10.  } 

執行 uploadArchives 任務就可以上報了。

然后到上面 url 指定的目錄或者通過瀏覽器打開可以看到上傳的相關文件。

查看 pom 文件可以看到依賴都在上面。

2. 使用遠程倉庫,對上面略做修改。

  1. apply plugin: 'maven' //指定使用 maven 
  2. uploadArchives { 
  3.  repositories { 
  4.  mavenDeployer { 
  5.  pom.groupId = "com.maven.demo" //包名 
  6.  pom.artifactId = "login" //SDK 功能,自定義一個即可 
  7.  pom.version = "0.0.1" //版本號 
  8.  repository(url: "網址") { 
  9.  authentication(userName: "用戶名"password"密碼"
  10.  } 
  11.  } 
  12.  } 

其中網址、用戶名和密碼記得分別替換。

別人需要使用時只需要在 Module 添加如下:

  1. implementation 'com.maven.demo.login.0.01' 

所以倉庫的組成就是pom.groupId+pom.artifactId+pom.version

Tips:

1. SDK 開發可能遇到同一個版本比如 0.0.1 在發布之前經常需要修改的情況。

這個時候如果你把修改后的 SDK 推送到遠程,可能本地項目用的還是舊的內容。

這種時候有兩個處理方式。

  • 第一個,更新版本號,修改依賴新版本。
  • 第二個,執行下面命令,強制從遠程拉取,不使用緩存。
  1. ./gradlew build --refresh-dependencies 

2. 使用遠程倉庫時,一般用戶名和密碼都不會直接推送到代碼倉庫,可能會放到構建機。

這個時候需要使用類似于 local.properties 的外部文件來存放。

這個時候有個坑需要提醒一下,就是在 local.properties 定義比如maven_user_name=username,千萬記得不要加雙引號,否則會出現認證失敗,出現下面提示:

  1. Received status code 401 from server: Unauthorized 

3. 使用 maven 的形式如何指定是 debug 還是 release?

通過在 android 塊里面添加

  1. android { 
  2.  defaultPublishConfig "release" 

可以指定。

通過查看 Module 的 build/outputs/aar 可以看到 aar 包。

通過查看 Module 的 build/poms/pom-default.xml 可以看到本地 pom 文件。

4. 有些開發者如果按照上面操作之后還是出現 java.lang.NoClassDefFoundError 錯誤,可以嘗試下面操作:

修改

  1. implementation 'com.maven.demo.login.0.01'  

  1. implementation 'com.maven.demo.login.0.01' { 
  2.  transitive = true 

總結

  • 1. SDK 開發完成之后發布給其他人使用最好放到遠程倉庫(比如 maven)2. 如果出現 SDK 引入的第三方庫沒有找到的錯誤,記得到倉庫看下 pom 文件是否有對應依賴
責任編輯:未麗燕 來源: 安卓巴士
相關推薦

2025-10-27 01:11:00

2017-12-05 12:44:57

Android沉浸式狀態欄APP

2021-07-28 14:37:57

WKWebviewh5網絡

2024-10-09 08:09:11

2024-04-09 09:29:22

NginxOSS資源

2024-04-01 08:05:27

Go開發Java

2017-07-17 15:46:20

Oracle并行機制

2024-04-10 08:39:56

BigDecimal浮點數二進制

2015-09-07 10:15:53

移動端開發

2024-05-06 00:00:00

緩存高并發數據

2015-03-24 16:29:55

默認線程池java

2020-09-15 08:46:26

Kubernetes探針服務端

2023-01-18 23:20:25

編程開發

2024-02-04 08:26:38

線程池參數內存

2025-06-26 02:44:00

.NET開發者LINQ

2019-10-30 14:44:41

Prometheus開源監控系統

2023-02-20 08:11:04

2017-05-05 08:12:51

Spark共享變量

2021-10-28 19:10:02

Go語言編碼

2022-06-28 10:50:21

ElectronHosts
點贊
收藏

51CTO技術棧公眾號

欧美在线免费一级片| 岛国av免费在线观看| 国产一区二区影院| 午夜精品www| 亚洲成人黄色av| 国产精品蜜月aⅴ在线| 亚洲黄色小视频| 久久免费一区| 国产精品人妻一区二区三区| 精品999日本| 一本一本久久a久久精品综合小说 一本一本久久a久久精品牛牛影视 | 久久久久久免费网| 成人国产亚洲精品a区天堂华泰| 欧美片一区二区| 九色精品91| 欧美本精品男人aⅴ天堂| 欧美日韩在线不卡视频| av在线免费网址| 国产欧美日本一区视频| 国产精品免费一区二区| 中文字幕在线观看高清| 一区二区三区高清视频在线观看| 色狠狠久久aa北条麻妃 | 久久综合久久综合久久| 91久久久久久久久久| 特级毛片www| 韩国在线一区| 久久久999国产| 在线小视频你懂的| 黄色欧美网站| 日韩一区二区三区av| 午夜国产一区二区三区| 1区2区3区在线| 自拍偷拍欧美激情| 偷拍视频一区二区| 日本福利在线观看| 国产大片一区二区| 成人啪啪免费看| 中文字幕在线观看精品| 久久久噜噜噜久久狠狠50岁| 午夜免费在线观看精品视频| 免费视频一二三区| 性xxxx欧美老肥妇牲乱| 中文字幕日韩av| 永久免费av无码网站性色av| 中文字幕伦av一区二区邻居| 亚洲激情免费观看| 五月天激情小说| 9l亚洲国产成人精品一区二三| 欧美日韩在线电影| 99视频在线视频| 草莓视频成人appios| 日韩欧美精品中文字幕| 日日橹狠狠爱欧美超碰| 成人一级福利| 黑人精品xxx一区一二区| 国产婷婷一区二区三区| 爱福利在线视频| 午夜久久久久久久久久一区二区| 国产情侣第一页| 女人天堂av在线播放| 亚洲国产欧美一区二区三区丁香婷| 国产内射老熟女aaaa| 女同一区二区免费aⅴ| 午夜日韩在线电影| 免费黄色特级片| 免费成人美女女| 在线免费观看日韩欧美| 男女视频在线看| 色婷婷成人网| 精品久久久三级丝袜| 中文字幕人妻一区二区三区| 亚洲欧洲美洲国产香蕉| 一区二区三区天堂av| 成人一级片免费看| 欧美成人一品| 97国产精品免费视频| 亚洲图片在线视频| 免费在线一区观看| 亚洲自拍偷拍一区| 性感美女福利视频| 国产拍欧美日韩视频二区| 亚洲欧美影院| 免费电影网站在线视频观看福利| 精品国产户外野外| 午夜激情在线观看视频| 国内不卡的一区二区三区中文字幕| 日韩一卡二卡三卡国产欧美| 欧产日产国产精品98| 日韩成人影院| 久久人人看视频| 欧美黄色一级大片| 国产精品资源网站| 欧美大陆一区二区| 国产一二区在线观看| 亚洲成a人片在线不卡一二三区 | 精品无码免费视频| 天堂精品中文字幕在线| 成人福利在线视频| 桃花色综合影院| 日韩一区在线看| 国产黄色一级网站| 久久精品九色| 亚洲老头同性xxxxx| 波多野结衣家庭教师| 国产一区91| 亚洲综合日韩在线| 国产毛片av在线| 亚洲成人在线网站| 亚洲第一天堂久久| 伊甸园亚洲一区| 久久久久九九九九| 国产精品无码在线播放| 91社区在线播放| 国产精品久久久久9999爆乳| 欧美爱爱视频| 亚洲人成网在线播放| 精品午夜福利在线观看| 麻豆国产精品777777在线| 久久久久久久免费| 女同一区二区免费aⅴ| 6080国产精品一区二区| 成年人免费观看视频网站| 在线国产精品一区| 1卡2卡3卡精品视频| 五月婷婷在线视频| 91久久香蕉国产日韩欧美9色| 中国免费黄色片| 一级欧洲+日本+国产| 国产精品视频午夜| 蜜桃视频在线免费| 精品久久久国产| 成人做爰69片免费| 影音先锋日韩在线| 国产精品久久久久久久久久三级| 婷婷开心激情网| 亚洲国产视频一区二区| 亚洲国产欧美日韩在线| 亚洲xxx拳头交| 国产日韩精品在线播放| 91在线视频| 欧美视频一二三区| 人与嘼交av免费| 美女视频一区二区三区| 亚洲国产精品视频一区| 78精品国产综合久久香蕉| 亚洲色图在线观看| 无码人妻精品一区二区| 久久精品亚洲麻豆av一区二区| 成人av一级片| 国产精品欧美日韩一区| 国产精品v片在线观看不卡| 国产中文字幕在线视频| 欧洲av在线精品| 69xxx免费| 精品一区二区免费看| 中文字幕欧美日韩一区二区| 色999韩欧美国产综合俺来也| 久久香蕉国产线看观看av| 国产av无码专区亚洲av| 亚洲综合在线第一页| 国产清纯白嫩初高中在线观看性色| 欧美久久一级| 国产精品我不卡| 中文字幕在线看片| 国产亚洲欧洲高清| ,一级淫片a看免费| 一区二区三区中文字幕精品精品| 伊人久久久久久久久| 亚洲乱码久久| 欧美在线3区| 国产精品亚洲欧美日韩一区在线 | 亚洲欧洲国产一区| 成人一二三四区| 亚洲免费在线看| 六十路息与子猛烈交尾| 日韩国产高清在线| 中文字幕中文字幕一区三区| 亚洲国产一区二区三区网站| 人九九综合九九宗合| av在线天堂播放| 欧美一区二区精品在线| 五月婷婷激情网| 欧美国产一区二区在线观看| 中文字幕一区二区在线观看视频| 很黄很黄激情成人| 欧美xxxx黑人又粗又长密月 | 国产福利一区二区三区在线观看| 女厕盗摄一区二区三区| 色妞欧美日韩在线| 成人久久精品人妻一区二区三区| 色综合天天综合在线视频| 亚洲aaa视频| a亚洲天堂av| 伊人色在线观看| 一本色道久久综合| 日韩 欧美 自拍| 国产精品免费99久久久| 亚洲字幕在线观看| 欧美中文字幕精在线不卡| 日日噜噜噜夜夜爽亚洲精品 | www.成人网| 国产精品第2页| 美女网站视频在线| 中文字幕欧美日韩va免费视频| 女人18毛片一区二区三区| 欧美日韩免费一区二区三区视频 | 欧美亚洲综合另类| 久久久久免费看| 国产精品灌醉下药二区| 免费a级黄色片| 国产精品夜夜嗨| 亚洲最大天堂网| 日本中文字幕不卡| 日本少妇高潮喷水视频| 欧美日韩国内| 中文有码久久| 精品99久久| 精品无码久久久久国产| 久久精品免视看国产成人| 国产精品久久二区| 中文字幕成在线观看| 欧美激情啊啊啊| 黄色免费网站在线观看| 尤物九九久久国产精品的分类| 婷婷视频在线观看| 精品国产乱码久久久久久1区2区 | av不卡免费在线观看| 91蝌蚪视频在线| 麻豆精品一二三| 无码无遮挡又大又爽又黄的视频| 国产日本精品| 男人用嘴添女人下身免费视频| 欧美日韩成人| 99亚洲国产精品| 亚洲欧洲日韩| 中文字幕久久综合| 欧美3p在线观看| 一区二区在线观| 久久中文字幕av| 亚洲最大免费| 久久久久国产| 性欧美18一19内谢| 91成人精品视频| 五月天男人天堂| 久久精品影视| 日韩一级片一区二区| 欧美va天堂在线| 欧美日韩亚洲国产成人| 欧美777四色影| 精品人妻大屁股白浆无码| 亚洲视频福利| 男女激情无遮挡| 蜜桃视频一区| 日本888xxxx| 精品在线亚洲视频| 国产大片一区二区三区| 国产电影一区在线| 第四色在线视频| 国产亚洲精品精华液| 国产在线免费av| 亚洲精品国产视频| 日韩av一区二区在线播放| 午夜久久福利影院| 日韩在线播放中文字幕| 欧美三级蜜桃2在线观看| 91丨九色丨蝌蚪丨对白| 日韩一区和二区| 视频污在线观看| 中文字幕精品网| 大片免费在线看视频| 久久久久久久久久亚洲| 日韩电影免费看| 国产美女久久久| 91夜夜蜜桃臀一区二区三区| 久久精品ww人人做人人爽| 精品国产精品国产偷麻豆| 黄色网址在线免费看| 亚洲激情视频| 亚洲成人福利在线| 福利91精品一区二区三区| 男生裸体视频网站| 国产精品欧美久久久久无广告| 欧美色图一区二区| 欧美午夜激情小视频| 一级aaaa毛片| 亚洲精品97久久| 久热国产在线| 欧美怡春院一区二区三区| 成人黄色毛片| 国产一区二区在线网站| 欧美第十八页| 国产中文字幕在线免费观看| 久久国产精品露脸对白| 成年女人免费视频| 欧美国产精品劲爆| 精品视频在线观看免费| 欧美日韩专区在线| 神马午夜精品95| 久久综合九色九九| 欧美成人黑人| 国产精品10p综合二区| 日韩精品二区| 青青青在线播放| 豆国产96在线|亚洲| 天天舔天天操天天干| 亚洲国产精品久久久久秋霞影院 | 成人h版在线观看| 免费成人深夜蜜桃视频| 欧美天天综合色影久久精品| 精品国产伦一区二区三区| 一本色道久久综合狠狠躁篇怎么玩 | av电影在线网| 992tv在线成人免费观看| 亚洲精品777| 日韩色妇久久av| 国产亚洲精品v| 国产成人精品一区二区三区在线观看 | 美女视频黄 久久| 人人妻人人澡人人爽人人精品| 亚洲人成精品久久久久久| 中文字幕手机在线视频| 亚洲电影免费观看高清完整版在线| 国产成人l区| 国产精品视频999| 国内黄色精品| 欧美精品色婷婷五月综合| av一二三不卡影片| 欧美黄色一区二区三区| 91精品国产入口在线| 在线观看黄av| 国产精品日韩在线一区| 中文精品一区二区| 欧美 日韩 激情| 99精品欧美一区二区三区综合在线| 国产精品白嫩白嫩大学美女| 欧美一区二区免费视频| 国产在线一区二区视频| 国产日本欧美在线观看| 日韩理论电影院| 在线看的黄色网址| 中文字幕av资源一区| 亚洲精品国产无码| 国产亚洲欧美aaaa| 男人皇宫亚洲男人2020| 欧美日韩在线播放一区二区| 免费看黄裸体一级大秀欧美| av小说在线观看| 色综合一个色综合亚洲| 日韩av成人| 国产精品福利小视频| 成人精品天堂一区二区三区| 亚洲一区日韩精品| 亚洲同性gay激情无套| 国产精品久久久久久在线| 大量国产精品视频| 亚洲成人影音| 黄色大片中文字幕| 99re免费视频精品全部| 日韩在线 中文字幕| 在线丨暗呦小u女国产精品| 欧美视频第一| 无码人妻aⅴ一区二区三区日本| 国产精品一区二区久久精品爱涩| 免费毛片在线播放免费| 日韩成人av在线播放| 三上悠亚亚洲一区| 在线视频不卡国产| 国产精品亚洲第一区在线暖暖韩国 | 中文字幕亚洲日本| 亚洲午夜精品17c| 午夜影院免费体验区| 国产精品亚洲自拍| 亚洲天天影视网| 美国黄色a级片| 欧美人成免费网站| 国产丝袜精品丝袜| 久久综合一区| 久久99精品国产91久久来源| 久久久久97国产| 亚洲女人天堂av| 国产亚洲精aa在线看| 成人网站免费观看入口| 久久久久国产精品麻豆| 国产乱码精品一区二区| 国语自产精品视频在线看| 国产91久久精品一区二区| 日韩在线一区视频| 一区二区三区 在线观看视频| 欧美色18zzzzxxxxx| 成人激情视频在线| 一本色道88久久加勒比精品| 特黄一区二区三区| 亚洲国产高清福利视频| 国产一区二区三区四区五区3d| 日本中文字幕在线视频观看| 国产精品久久三区| 刘亦菲毛片一区二区三区| 国产精品一区二区性色av| 国精品一区二区|