相同的代码库、不同的 APK、不同的资源文件和不同的 Web 服务 URL

Same code base, different APKs, differents ressources files and different webservices urls

让我们想象一下以下情况: 我正在为汽车构建一个应用程序,比方说大众汽车。现在斯柯达(属于同一集团)想要完全相同的应用程序但具有不同的资源文件,并且需要对代码进行一些检查。如果是 VW,调用这个 webservice,如果是 Skoda,调用另一个。

我真的无法回答这个问题:"Is it the same application?" 从代码的角度来看是的,但从游戏商店的角度来看不是...

我怎样才能拥有相同的代码库但有两个不同的包名称?

我认为我正在阅读这篇文章 http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants 但如果您有任何技巧、建议或帮助分享,我将很高兴听到 :) 我知道有人问过这个问题,但我正在寻找 gradle & Android Studio 的解决方案。

发送

googles 的 play 商店使用的应用程序 ID 在 Build.gradle 文件中定义: 喜欢

productFlavors {
        vw {
            applicationId = "com.example.my.pkg.vw"
        }
        skoda {
            applicationId = "com.example.my.pkg.skoda"
        }

只需在新版本自动生成的文件夹下创建资源文件夹即可。有关详细信息,请参阅 http://www.vogella.com/tutorials/AndroidStudioTooling/article.html#androidstudio_creatingresourcefolder

您好,您可以使用产品风味来定义每个新应用程序的包名称,如@stoke 所说

productFlavors { app1 { applicationId "com.example.package.app1" buildConfigField "String", "API_URL", "\"https://www.myapi.com/apiv1/\"" } app2 { applicationId "com.example.package.app2" buildConfigField "String", "API_URL","\"https://www.myapi.com/apiv2/\"" } }

要在构建中定义不同的端点或 url,您可以定义要在代码中使用的构建变量。

然后您可以在 java 代码中像 BuildConfig.API_URL 一样访问它们。

对于不同风格的不同资源,您需要定义 2 个与新风格名称相匹配的目录。

检查 this 文件结构和资源。