簡體   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