暴露 API 工程
-
单独抽取一个 api 模块,用来放给用户使用的接口文件,以及数据 Bean。
-
保留方法参数命名,方便使用者查看(要不然使用者在调用接口的时候,看到的参数都是 var1,var2 这样不可读的)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
android { buildTypes { release { minifyEnabled false zipAlignEnabled false } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } // java tasks.withType(JavaCompile) { configure(options) { options.compilerArgs << '-parameters' } } // kotlin tasks.withType(KotlinCompile).configureEach { kotlinOptions { javaParameters = true } }
隐藏实现工程
为隐藏细节,实现工程理应全部混淆。
若直接混淆成 a.a.a.a.class
,如果这时再来一个模块,也混淆成了 a.a.a.a.class
,如果用户同时使用这2个模块,就会出现类文件冲突。解决:
1
-repackageclasses com.github.hurshi.command
添加如上代码到 proguard-rules.pro
中,它会把所有的混淆文件推平放到 com.github.hurshi.command
目录下,对开发无感,对使用者也无感。
简化发布工程
开发一个SDK,可能会添加多个 module,也可能会添加多个依赖。如何给用户 一行代码就搞定 的畅快感呢
使用 pom 合并多个模块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.github.hurshi</groupId>
<artifactId>sdk</artifactId>
<version>1.0.0</version>
<packaging>aar</packaging>
<dependencies>
<dependency>
<groupId>com.github.hurshi</groupId>
<artifactId>sdk-api</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</project>
-
如上面例子所示,把“模块 sdk-api”添加到”模块sdk”的 maven pom 文件中。
-
在用户
implementation com.github.hurshi:sdk:1.0.0
的时候,gradle 会在后台自动下载并依赖sdk-api
仓库,实现sdk-api
对用户无感。