Android SDK開發之aar從0到1 踩坑史
記錄一下開發aar所填的坑。
前期:
①使用Android Studio新建一個專案
②File--New--New Module建立一個module(在此module裡開發你的aar邏輯)
1.如果生成的aar裡沒有依賴的第三方的庫則可以使用這種方式:
在書寫完程式碼後,執行Build--Rebuild project 待重置完後在module裡 build-----outputs-----aar資料夾裡會生成以
aar為字尾的東東。 將其拷貝到主module的libs裡,在build.gradle裡配置
注:通過以上方式就可以呼叫aar裡的方法了
2.如果你的aar裡有依賴的第三方依賴,通過上述方式就不行了(第三方依賴打不進aar裡)
第一種:本地maven倉庫形式,適用於自己開發使用(如果aar拷貝給別人使用,則別人照樣無法依賴到第三方)
在module的build.gradle裡配置
注:確保你的環境變數ANDROID_HOME可用(怎麼配置ANDROID_HOME百度即可)
uploadArchives { repositories { mavenDeployer { repository(url: "file://localhost/" + "你的SDK安裝目錄" +"/extras/android/m2repository/"); pom.version = '版本' pom.groupId = '生成的aar目錄包名' pom.artifactId = 'aar名稱' } } } // 原始碼一起打包. task androidSourcesJar(type: Jar) { classifier = 'sources' from android.sourceSets.main.java.sourceFiles } artifacts { archives androidSourcesJar }
在Studio視窗右側有個Gradle 點開 找到自己寫的module下有Tasks---upload--uploadArchives
雙擊uploadArchives執行完畢後,在你的SDK安裝目錄下 /extras/android/m2repository/你自己填的包名下 會有aar生成
在主Module的build.gradle裡引用
implementation 'com.chint.uniqlosdk:uniqlosdk:1.0-release'(就這一行就可以)
第二種:aar拷給別人使用,通過GitHub的方法實現建立遠端maven倉庫(解決第三方依賴無法使用問題)
在GitHub上新建一個倉庫
通過Studio將該庫clone下來
在module的build.gradle裡配置(這裡不是clone下來的專案)
uploadArchives { repositories { mavenDeployer { //這個地址為你clone下來庫的地址 repository(url: "file://E:\\Github_Repository\\Project\\HxhSDK") pom.version = '1.0-release'//版本 pom.groupId = 'com.hxh.hxhsdk'//aar在安裝的SDK目錄下輸出的路徑 pom.artifactId = 'hxhdk'// } } } // 原始碼一起打包. task androidSourcesJar(type: Jar) { classifier = 'sources' from android.sourceSets.main.java.sourceFiles } artifacts { archives androidSourcesJar }
在Studio的Terminal執行命令 gradlew uploadArchives 若看到BUILD SUCCESS則成功
這時在clone的專案裡會有一個資料夾 這個資料夾包含著生成的aar所有東西 把這個資料夾下的所有東西上傳到GitHub,
上傳之後在 主module裡新增依賴
第一個引數:groupId
第二個引數:artifactId
第三個引數:version
implementation 'com.hxh.hxhsdk:hxhsdk:1.0-release'
在專案的build.gradle裡新增
maven { url "https://raw.githubusercontent.com/GitHub使用者名稱/GitHub上的庫名/master" }
示例:
配置完這兩處 同步下專案就可以了 GitHub託管就不用在往libs裡拷貝aar了
注:還有一種比較low的方法:
生成aar後拷貝到libs裡 若使用到了第三方的庫 在主module裡手動新增上依賴