gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 04:21:41 25 4
gpt4 key购买 nike

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

在我的应用程序的旧版本中,我能够使用 Ant 脚本创建一些“ flavor ”。该脚本的目的是使用不同的包名称和不同的资源(可绘制等)复制 Eclipse 项目

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

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

这里是堆栈跟踪的一部分: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 更改项目的结构,它将适用于 flavor 但不适用于带有 applicationId 的原始项目>com.company.app.

那么,有没有一种方法可以使用 Gradle 或其他工具(proguard?)来更改 applicationId 和 flavor 的包名称?

预先感谢您的帮助。

最佳答案

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

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

productFlavors {
staging {
applicationIdSuffix ".staging"
}

preProduction {

applicationIdSuffix ".preProduction"

}
}
}

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

关于java - 如何使用 Gradle 更改 Android 风格应用程序的包名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48773416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com