繁体   English   中英

如何使用Gradle更改Android风味应用程序的包名称?

[英]How to change the package name of an Android flavor app with Gradle?

我目前正在将一个非常古老的Android应用程序从Eclipse迁移到Android Studio。

在我的应用程序的旧版本中,我能够使用Ant脚本创建一些“风格”。 这个脚本的目的是使用不同的包名和不同的资源(drawable等)来复制Eclipse项目。

我已将项目迁移到Android Studio,删除了Ant脚本并创建了一些风格。

但是现在,我有一些问题要反序列化 - 在新版本的应用程序中 - 在旧版本的应用程序中序列化的对象。

这里是stackstrace的一部分: Caused by: java.lang.ClassNotFoundException: com.company.app.flavor.bo.Player

在旧版本中,每种口味都有自己的包名:

  • com.company.app
  • com.company.app.flavor

在这个新版本中,代码结构是com.company.app.flavor ,我和Gradle一起玩,以便为flavor生成好的applicationId

因此,flavor的applicationId是正确的,但类的包名似乎尊重项目结构,因此,我无法使用包com.company.app.flavor.bo.Player将原始对象反序列化到对象com.company.app.bo.Player

如果我用com.company.app.flavor更改项目的结构,它将适用于味道,但不适用于带有applicationId com.company.app的原始结构。

那么,有没有办法,使用Gradle或者其他工具(proguard?)来更改applicationId和包装名称?

预先感谢您的帮助。

是的,您可以在gradle中使用ProductFlavor,这应该会更改应用程序的包名称。 如果你没有对类路径进行硬编码,那么序列化也应该没有任何问题。

      android {
          .
          .
          .
     defaultConfig {
            applicationId "lib4.com.stackoverflow"
        }

         productFlavors {
                staging {
                   applicationIdSuffix ".staging"
                }

                preProduction {

                    applicationIdSuffix ".preProduction"

                }
        }
  }

创建apk后,您可以通过在Android工作室上拖放apk并打开Android Manifest来验证包名是否已更改。 您将在apk中的清单中看到更新的包名称。 但在源代码中,您仍会看到之前提供的包。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM