【问题标题】:Create separate apk for separate flavor in android to run on same device在 android 中为不同的风格创建单独的 apk 以在同一设备上运行
【发布时间】:2016-01-13 10:33:53
【问题描述】:

我已经问过类似的问题但找不到我想要的。于是又问。 我想在同一台设备上同时运行单独的风味 apk。

我使用 build.gradle(app) 来创建不同风格的 apk。但是安装不同风格的相同 apk 会覆盖前一个。我想创建不同的 apk 以同时在同一设备上运行。我想用不同的appicon创建不同的apk,可以安装在同一台设备上并同时运行。任何链接或教程或直接帮助表示赞赏。

我的 build.gradle 如下

 productFlavors {
    production {
        applicationId
        "com.abc.def"
        buildConfigField 'String', 'HOST', '"http://example.com/api/"'
    }
    staging {
        applicationId
        "staging.com.abc.def"
        buildConfigField 'String', 'HOST', '"http://example.com/api/"'
    }
    backendtesting {
        applicationId
        "backendtesting.com.abc.def"
        buildConfigField 'String', 'HOST', '"http://example.com/api/"'
    }

}

【问题讨论】:

    标签: android android-build android-productflavors buildconfiguration build-environment


    【解决方案1】:

    您可以为不同的风格设置不同的 applicationId。这样,不同的风格将被视为不同的应用程序,并且在您将它们安装在同一设备上时不会相互覆盖。

    作为示例,以下 sn-p 将创建两种风格,prod 和 dev 具有不同的应用程序包。您可以将它们一起安装在设备上。

    productFlavors {
            dev {
                applicationId "com.swagata.devbuild"
            }
    
            prod {
                applicationId "com.swagata.prodbuild"
            }
        }
    

    【讨论】:

    • 我已经用我的 gradle 文件的代码 sn-p 编辑了这个问题。我已经使用了这种方法。但它不起作用。请检查并建议我是否缺少任何东西。提前致谢。
    • @SimpleCoder 你如何为不同的风格创建不同的apk? ./gradlew assemble 创建不同的 apk,如果您遵循这种方法,可以独立运行。
    【解决方案2】:

    这个post 一步一步解释了如何配置你的目录结构和 gradle 文件。

    主要步骤是:

    1. 将产品风味容器添加到应用build.gradle文件

      productFlavors { free { applicationId "antoniocappiello.com.buildvariantsexample.free" } paid { applicationId "antoniocappiello.com.buildvariantsexample.paid" } }

    2. 在 src 中创建一个目录,该目录具有您希望看起来与主要变体不同的产品风味的确切名称,例如,在步骤 1 的配置中,目录名称可以是 pay 或 free 。在该目录中创建子文件夹 res/drawable,您将在其中放置新应用启动器图标

    Directory structure example

    【讨论】:

      【解决方案3】:

      不要在 gradle 命令和它的参数之间放置换行符。它将单独读取每一行,因为换行符是 gradle 的命令分隔符。(就像; 是如何用于 java 的)

      例如,使用:

      applicationId "com.abc.def"
      

      而不是

      applicationId
      "com.abc.def"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-18
        相关资源
        最近更新 更多