我想从Android Studio中创建的同一项目构建谷歌play商店和亚马逊应用商店。由于应用内购买API不同,我将在为目标商店创建APK之前进行一些调整。当我从一个目标切换到另一个目标时,我如何节省时间?一些手动过程是可以的。下面是gradle为google app store编写的源码集。
sourceSets {
main {
manifest.srcFile 'app/src/main/AndroidManifest.xml'
java.srcDirs = ['app/src/main/java']
resources.srcDirs = ['app/src']
aidl.srcDirs = ['app/src/main/aidl']
res.srcDirs = ['app/src/main/res']
assets.srcDirs = ['app/src/assets']
}
声明两个gradle flavour
,例如googleplay
和amazon
。
productFlavors {
googleplay {
applicationId = '...'
}
amazon {
applicationId = '...'
}
}
Gradle库依赖关系对于每个flavour
应该是不同的。googleplayImplementation "...gp_library..."
amazonImplementation "...amazon_dependency..."
这样存储特定的构建将不会包含另一个存储依赖类,资源等。
然后声明接口,例如StoreProvider
,这将是所有存储特定api调用的入口点。在googleplay
风味源集提供StoreProvider
的实现,它将调用GooglePlay商店方法。在amazon
版本中提供StoreProvider
的实现,它将调用Amazon store方法。在应用程序的任何地方使用链接到StoreProvider
接口。如果你以这种方式组织应用,你的应用将不知道它使用的是哪个商店。此外,将来添加其他商店支持也很容易。