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

标签 java android gradle android-productflavors

我目前正在将一个非常旧的 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/

相关文章:

java - 组织.json.JSONException : JSONObject ["status"] is not a JSONObject

java - 从另一个 bean 中调用 Controller 。未找到线程绑定(bind)请求

java - 如何将从文本文件中读取的行与传入的整数进行比较

android - ExoPlayer ConcatenatingMediaSource 改源回调

android - 解析十六进制 '0x0976b8' 为 android 着色

java - 在Java上获取CAS cookie

android - StateFlow 在后退导航中再次获取相同的数据

gradle - 使用com.googlecode.maven-java-formatter-plugin的Maven Java格式化程序的Gradle等效项

gradle - 即使按照之前的答案,也无法在 com.android.build.gradle.internal.api.ApplicationVariantImpl 上找到属性 'outputFile'

java - 如何修复Gradle Build中的 “Failed to process kafka-clients-1.1.1.jar”错误