今天要说的不是多渠道打包问题。
我们先来看这么一个场景,你有没有在要发布版本的时候,代码写完后,刚把apk打包好,突然想起来,我艹,使用的是内网开发环境,这样,你又不得不重新改域名,改一些必要的配置,然后又重新打包,这样是不是很头疼的事情。或者说,你们公司是做产品的,但是由于公司市场需求,需要一个和你现在开发的产品差不多的,但是就是应用图标和名称不同的app,先给客户看看。这样,你是不是又的新建一个项目,把你公司的产品代码copy过去,然后,修改图标,修改名称...如果是这样,那简直了是low爆了。下面,我要说的就是在同一个工程当中,建立多个版本,有的可以用来测试,有的可以用来发布,而他们的共同代码是通用的,只是差异代码放在各自的分支上。
首先你要在gridle文件中添加以下节点,internal 和dev 随你取名,用来分表代表内测版本和开发版本的各自的差异代码声明:
android {
...
productFlavors {
internal {
// applicationId "com.dingfang.org.internal"
ndk {
abiFilters "armeabi-v7a"
abiFilters "x86"
abiFilters "armeabi"
}
}
dev {
// applicationId "com.dingfang.org.dev"
ndk {
abiFilters "armeabi-v7a"
abiFilters "x86"
abiFilters "armeabi"
abiFilters "arm64-v8a"
abiFilters "x86_64"
}
}
}
}
然后建立如下的代码结构:
在dev和internal下,如果差异的是java代码,那么包名必须得和main下的一样。如果是res资源文件,那么创建的也必须是相同目录结构下的文件。需要注意的是,dev和internal的文件,不能和main下的文件重名,资源文件名也是同理。
详情可以参考:如何使用Gradle构建不同版本的app?