【问题标题】:Brandable Android Application可品牌化的 Android 应用程序
【发布时间】:2016-03-08 20:43:44
【问题描述】:

我们为多个客户提供服务。我们想要提供的一个功能是一个允许客户端自定义应用程序品牌(图标、徽标、名称等)的 android 应用程序。

这里有一些规定。

  1. 客户的客户将使用此应用程序。
  2. 您可能是多个客户的客户,但我们无法向用户显示任何类型的客户列表。
  3. 客户端不能共享一个应用程序。
  4. 应用程序必须能够在每个客户端看起来不同,即使功能相同

是的,我知道以这种方式构建它是一个 PITA,但我们的客户不希望其他客户的客户知道他们也是我们的客户。

那么,要构建一个易于品牌化的应用程序,同时尽可能减少对开发人员的理智的压力,什么是最好的方法?

【问题讨论】:

    标签: android branding


    【解决方案1】:

    为每个版本的应用保留一个单独的 res/ 文件夹。为每个图标、徽标和字符串赋予相同的名称,但为每个客户端定制内容,并通过简单地将 res 文件夹放入构建中,为每个客户端构建不同的 .apk。我不认为您可以让自定义限定符为此工作而只制作一个 .apk - 在任何情况下,这都会将每个客户的自定义图片和字符串捆绑到每个人的应用程序中。

    【讨论】:

    • 不错!如果您想将应用程序上传到 google play,则包名称存在问题。您将如何为每个应用程序制作不同的包?也许只是在构建 APK 之前重命名 Jenkins 中的文件夹?
    【解决方案2】:

    我将从开发一个全局重命名脚本开始,因为无论如何您都需要它(可以使用 find、xargs 和 sed 相当简单地完成)

    您将需要用于对资源进行自定义的工具,这可能是 SDK 和 Eclipse 插件

    也许您可以创建某种扩展 Eclipse 插件的向导。

    或者有很多工作但更容易使用,您可以单独做一些事情来驱动必要的命令行工具来构建生成的包。

    【讨论】:

      【解决方案3】:

      您可以按照@Jems 所说的去做,或者(假设应用程序与服务器通信)将“逻辑”放在服务器端。

      当您第一次运行应用程序时,服务器会向您发送与您的客户端对应的资源并存储在本地。

      这种方法的问题:第一次你可能需要下载大量的东西......

      优点:您只需更改一个属性字符串,说明哪个是服务器,或者登录到服务器以了解它必须发送什么来更改布局,而无需部署具有不同资源的另一个应用程序。

      这真的取决于您是否要支持服务器端的布局更改。

      【讨论】:

        【解决方案4】:

        使用 gradle 的构建时间解决方案可以通过 productFlavors 功能实现,在http://blog.robustastudio.com/mobile-development/android/building-multiple-editions-of-android-app-gradle/ 中进行了描述

        可以在 build.gradle 文件中通过以下方式定义口味(也称为客户品牌)(此处使用不同的包名称以将每个品牌 apk 部署为单独的应用程序):

        productFlavors {
            vanilla {
                applicationId "com.example.multiflavorapp"
            }
        
            strawberry {
                applicationId "com.example.multiflavorapp.strawberry"
            }
        }
        

        然后可以将品牌的特定 android 资源(而不是 src/main/res 目录)放入 src/vanilla/res 或 src/strawberry/res 目录(在这种情况下 vanilla 和草莓是品牌)。请注意,使用 productFlavors 功能,gradle 不会合并资产,只会简单地替换文件,而无需了解特定 res 子目录。

        在构建过程中,gradle 创建构建变体作为构建类型(调试、发布)和 productFlavor 的组合,更多信息请参见 http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Type-Product-Flavor-Build-Variant

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-04-05
          • 2011-04-24
          • 1970-01-01
          • 2011-07-07
          • 2014-02-02
          • 1970-01-01
          • 1970-01-01
          • 2012-01-06
          相关资源
          最近更新 更多