赞
踩
首先需要理解 flavorDimensions 写法:
android {
flavorDimensions "listpopup"
productFlavors {
normal {
dimension "listpopup"
}
dragsort {
dimension "listpopup"
}
}
}
本例定义了两个flavor:normal 、dragsort ,其维度为 “listpopup”,意即在DropDownListView
这个类上有区分。
其中 normal 分支的DropDownListView.java
基于 ListView
,而 dragsort 分支则基于 DragSortListView.java
,为此下拉菜单实现了拖拽排序(com.mobeta.android.dslv.DragSortListView
)。
于是要根据不同分支切换代码源集:
android{
sourceSets{
normal {
java.srcDirs += ['src/listpopup_normal/java']
}
dragsort {
java.srcDirs += ['src/listpopup_dragsort/java']
}
}
}
将不同版本的 DropDownListView.java 分别放入 src/listpopup_normal/java、和 src/listpopup_dragsort/java 文件夹中。原来 src/main/java 是这么个意思!注意源码放置位置仍要和包名一致。
最后,需要告诉 maven Publish 插件怎么打包。网上很多都是教 artifact 写法,这样打包出来的 pom 文件中不含依赖项,是不合理的。要用 components 写法,指定打包内容:
apply plugin: 'maven-publish' afterEvaluate { publishing { publications { normal(MavenPublication) { from components.normalRelease // 不推荐 artifact 写法 //artifact tasks.findByName("bundleNormalReleaseAar") groupId "org.appxmod.android" artifactId "AppCompat" version "1.0.0" } dragsort(MavenPublication) { from components.dragsortRelease groupId "org.appxmod.android" artifactId "AppCompatDrag" version "1.0.0" } } } } build.finalizedBy publishToMavenLocal
打包速度也是很快的!
最后,用 jadx-gui 反编译(拖动aar文件至jad窗口),验证是正确打包了的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。