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

时间:2016-01-29 10:39:07

标签: android android-gradle apk

让我们想象以下情况: 我正在为汽车制造应用程序,比如大众汽车。现在Skoda(属于同一组)想要相同的应用程序,但需要不同的资源文件,并且需要对代码进行一些检查。如果是大众,请调用此Web服务,否则如果是斯柯达,请调用另一个。

我无法回答这个问题:“它是同一个应用程序吗?” 从代码的角度来看是的,但从Play商店的角度来看没有...

如何设置相同的代码库,但有两个不同的包名?

我认为我正在阅读这篇https://stackoverflow.com/a/35060150/5089204,但如果你有任何技巧,建议或帮助分享我会很高兴听到:) 我知道这个问题已被提出,但我正在寻找一个有gradle& amp;的解决方案。 Android Studio。

的Tx

2 个答案:

答案 0 :(得分:1)

您好,您可以使用产品风格来定义每个新应用程序的软件包名称,如@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以查找文件结构和资源。

答案 1 :(得分:0)

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

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

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