1. 程式人生 > >Android SDK開發之aar從0到1 踩坑史

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裡手動新增上依賴