从相同的代码生成略有不同的 APK
Generate slightly different APKs from the same code
我开发了一个使用Parse
和push notifications
(GCM,Google Cloud Messaging
)的小游戏。但是,当我尝试将我的应用程序上传到亚马逊商店时,他们说它不会在某些设备上发布,因为它使用的是 GCM。
所以,解决方法很简单,只需删除notifications
。
我遇到的问题是我想尽可能地自动化 apk 生成。
在 iOS 下(我是 iOS 开发人员,Android 的新手),我只创建了 2 个目标并使用 DEFINE 我可以根据目标修改代码。
我也想有类似的东西,所以我又用了一个亚马逊版的manifest
,当然去掉了推送码
使用 Android Studio
时我该怎么做?
我怀疑我必须使用 gradle 或者模块的概念,因为在 Android Studio
中创建 signed apk
时我必须 select “app” module
.
您有什么想法、建议或link吗?谢谢。
您可以使用产品风味来完成此操作。每个产品风格都可以有自己的 AndroidManifest,每个风格的清单将在编译时与主要应用程序清单合并。请参阅文档的 build variants 部分。
例如,您可以定义以下产品口味
productFlavors {
amazon
googleplay
}
然后您可以设置以下清单文件
src/main/AndroidManifest.xml
src/amazon/AndroidManifest.xml
src/googleplay/AndroidManifest.xml <-- put GCM permissions here
您还可以将所有 Google Play 服务代码和依赖项放入您的 googleplay 风格中,例如:
dependencies {
googleplayCompile 'com.google.android.gms:play-services-location:7.0.0'
}
How can I do that when using Android Studio?
这是 product flavors 的工作。创建 google
风味和 amazon
风味。那么:
为您的 Play 服务 SDK 依赖项使用 googleCompile
,而不是 compile
。
仅在您的 google
版本清单中包含 Play 服务元数据。
将依赖于 Play 服务 SDK 的代码放在 google
风格的源集中。请注意,您可能需要将该代码的一些挂钩抽象为您在每种风格中实现的 NotificationStrategy
class,其中 google
负责 Play 服务工作,[=11] =] flavor 做其他事情(或什么都不做)。然后,您在 main
中的代码可以引用 NotificationStrategy
并针对每种风格获得正确的实现。
我开发了一个使用Parse
和push notifications
(GCM,Google Cloud Messaging
)的小游戏。但是,当我尝试将我的应用程序上传到亚马逊商店时,他们说它不会在某些设备上发布,因为它使用的是 GCM。
所以,解决方法很简单,只需删除notifications
。
我遇到的问题是我想尽可能地自动化 apk 生成。
在 iOS 下(我是 iOS 开发人员,Android 的新手),我只创建了 2 个目标并使用 DEFINE 我可以根据目标修改代码。
我也想有类似的东西,所以我又用了一个亚马逊版的manifest
,当然去掉了推送码
使用 Android Studio
时我该怎么做?
我怀疑我必须使用 gradle 或者模块的概念,因为在 Android Studio
中创建 signed apk
时我必须 select “app” module
.
您有什么想法、建议或link吗?谢谢。
您可以使用产品风味来完成此操作。每个产品风格都可以有自己的 AndroidManifest,每个风格的清单将在编译时与主要应用程序清单合并。请参阅文档的 build variants 部分。
例如,您可以定义以下产品口味
productFlavors {
amazon
googleplay
}
然后您可以设置以下清单文件
src/main/AndroidManifest.xml
src/amazon/AndroidManifest.xml
src/googleplay/AndroidManifest.xml <-- put GCM permissions here
您还可以将所有 Google Play 服务代码和依赖项放入您的 googleplay 风格中,例如:
dependencies {
googleplayCompile 'com.google.android.gms:play-services-location:7.0.0'
}
How can I do that when using Android Studio?
这是 product flavors 的工作。创建 google
风味和 amazon
风味。那么:
为您的 Play 服务 SDK 依赖项使用
googleCompile
,而不是compile
。仅在您的
google
版本清单中包含 Play 服务元数据。将依赖于 Play 服务 SDK 的代码放在
google
风格的源集中。请注意,您可能需要将该代码的一些挂钩抽象为您在每种风格中实现的NotificationStrategy
class,其中google
负责 Play 服务工作,[=11] =] flavor 做其他事情(或什么都不做)。然后,您在main
中的代码可以引用NotificationStrategy
并针对每种风格获得正确的实现。