2011-01-06 121 views
9

在我的Android應用程序升級期間,我更改了包名稱。但Android市場不允許上傳更改後的軟件包名稱應用程序作爲升級。如果我將應用程序作爲新應用程序上傳,用戶是否會在他/她的設備上有兩個應用程序?我如何確保用戶不必從頭開始重新下載應用程序,而無需恢復我的軟件包名稱的更改?更改升級後的Android應用程序的包名稱

回答

12

兩種封裝=在市場上的兩種不同的應用程序。 一旦你上傳一個應用程序,它的包應該是相同的。另外,密鑰應該相同。

+0

我已經使用相同的密鑰,但不同的軟件包名稱爲我的第一個上傳的應用程序。 – yogsma 2011-01-06 06:26:03

+0

您無法更改主包名稱。如果你這樣做,它不能被視爲同一個應用程序。 – 2011-01-06 06:40:00

+0

我不確定爲什麼你必須在發佈應用程序後更改包裝。您應該重新考慮您更改軟件包名稱的決定。如果不可能,那麼忘記(並在市場描述中提供新應用的鏈接?)舊應用。 – 2011-01-06 06:48:49

10

Android的市場只在您的清單中源,而不是實際的包名關心的包名。

你可以嘗試在清單屬性給老包的名稱,然後活動賦予新的包名稱,而不是相對的(即.MainActivity)

像這樣:

<manifest package="your.old.package" ...> 
    ... 
    <application android:name="your.new.package.MainActivity" ...> 

可以工作..

我打算爲我的應用程序的兩個版本(付費/免費),這種方式並使用相同的項目和代碼。

+0

有趣!我會嘗試我的下一個應用程序。 – yogsma 2011-03-09 15:52:36

+0

你是對的,Tapirboy。 Android不關心你放置在你的Activity標籤中的name屬性;它只關心你的清單標記的包裝屬性,只要確定你的應用程序的身份就夠了。如果清單標籤的包裝屬性發生變化,那麼Android會認爲具有該變化的應用程序是完全不同的應用程序。 – Carl 2012-06-29 02:32:13

+1

如果清單包和應用程序名稱不同,我隱約想起Eclipse插件的一些問題。這可能不再是一個問題,但我必須在使用這種方法時與Eclipse搏鬥。儘管如此,那已經是一年多了。 – Jeff 2012-08-15 16:43:45

0

如果您更改軟件包名稱,它將被視爲一個單獨的應用程序 - 不僅僅在市場上,而且apk一般只會'替換'相同的軟件包名稱(並且只有在它們都使用相同的密鑰簽名)。

儘管可以通過簽署中間包with both keys逐步轉移到一個新的密鑰,還有目前逐步在包名沒有簡單的方法。

是可以做的最好的是這樣的:

  • 新的APK版本使用相同的密鑰簽名,但有不同的軟件包名稱。
  • 安裝時,新的APK安排與舊的包名稱使用shared_prefs
  • 將數據複製到新的軟件包名稱。
  • 新版本要求刪除舊版本,並且用戶看到卸載對話框。

注意應用程序數據通常被保存在這裏:

/data/data/pac.kage.name/ 

我還沒有試過,所以我再也無法付出細節介紹。您也可能對我的request for a seamless way of transitioning the package name感興趣。