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里手动添加上依赖