2012-07-11 36 views
1

所以這可能聽起來像一個完整的和完全noob問題,但我會問,看看我找到什麼。當從32位機器移動到64位,我不得不卸載我的應用程序

我正在使用Eclipse IDE開發Android應用程序。我使用了兩臺開發機器(一臺用於工作,一臺用於家庭),一臺是64位,另一臺是32位。我用來測試我的應用程序的手機是Google Nexus(Verizon風格,最新的驅動程序)。如果我使用一臺機器構建並運行應用程序,則嘗試在另一臺機器上執行相同的操作。出現控制檯錯誤,告訴我運行ADB命令來卸載我的應用程序,因爲簽名已更改。

從我所瞭解的情況來看,這是因爲每個機器上的「debug.keystrore」(位於%USER_HOME%/。android中)是不同的。它爲什麼這樣做?我認爲應用程序簽名對應用程序而不是app + dev機器是唯一的。這是正常的行爲嗎?如果是這樣,我能做些什麼來解決它?我擔心在機器之間複製/粘貼文件可能會導致問題,所以我還沒有嘗試過。我每次切換機器時都需要移動這個文件嗎?此外,如果我將我的應用程序發佈到野外;然後鬆開我的電腦,並且必須開始使用新電腦(因此,更改應用程序信號),那麼安裝了我的應用程序的每個人都必須卸載該應用程序,因爲應用程序信號不同?

獎金回合:是否有某種方式可以配置我的IDE,這樣我就不必在每次切換機器時都要更改eclipse的外觀以查找SDK的位置(即,使其在ProgramFiles目錄和ProgramFiles (x86)的目錄。

回答

4

要確保應用程序是由同一個開發商建,Android的希望簽名是相同的。隨意複製機之間的調試的關鍵。它無關,與你的機器還是它是32/64位;它只能證明你是同一個開發者。

當談到發佈你的應用的時候,你要非常小心,以便

  1. 保持您的發行密鑰私密,並
  2. 保持您的發行密鑰備份在幾個地方。

如果您失去了發佈密鑰,您將無法更新您的應用,正如您懷疑的那樣。

更新:爲了讓我的答案更加完整,它看起來像告訴Eclipse的方式,在Preferences - > Android - > Build下面使用哪個鍵。

我使用Linux並且不使用Eclipse;我所做的只是從機器到機器複製~/.android/debug.keystore,而ant build工具會自動使用它,避免討厭的「證書不匹配」安裝錯誤。

對於我的版本的密鑰庫,我有這行我ant.properties

key.store=../private/my-release-key.keystore 

,並保持my-release-key.keystore在私人倉庫太多相同的效果。

+0

謝謝!我喜歡你的回答,但Yury有一些(一些)關於解決這個問題的方法的說明。如果你不介意在這個線索上添加一些關於綠色角的具體說明,那麼我很樂意將此標記爲正確的答案。 – user1449018 2012-07-11 20:53:23

1

我想,對於不同的平臺谷歌團隊已經創建了不同的調試鍵(我猜跟蹤目的)。這些調試密鑰不依賴於您的應用程序。如果你想分發你的應用程序,你需要創建自己的密鑰。如果您使用自己的證書籤署您的應用程序,則不應該存在此類問題(因爲在這種情況下,證書僅取決於您在創建證書時輸入的屬性)。在首選項 - > Android - > Build下,您可以選擇要使用的密鑰庫。

+0

謝謝。這裏的其他答案是很好的(我敢說我比你的簡潔一點,但是,你提供了一些具體的指導,我可以從這裏弄清楚這些事情(再次感謝你指點我) – user1449018 2012-07-11 20:52:12

+0

Just – Yury 2012-07-11 20:54:44

1

簽名對每個開發者都是唯一的。據我所知,如果您使用調試密鑰,它使用您的MAC地址或其他獨特的特徵來創建一個任意的密鑰。因此,當您使用一臺計算機將應用程序構建並安裝到設備上,然後再使用另一臺計算機時,您會有不同的簽名,因此也是您的問題。

爲了不出現這個問題,您應該像其他人提到的那樣創建自己的密鑰,然後在構建時使用它來簽名。

你永遠不會想用你的調試密鑰發佈一個應用程序,這只是爲了開發,當你發佈你的應用程序時,你想使用你創建的唯一密鑰。

這些鍵用於防止他人更新您的應用程序,未經您的許可,所以創建一個您自己的開發密鑰,你不會有這個問題。

這裏是一個鏈接,應該可以幫助您開始在正確的方向:http://developer.android.com/tools/publishing/app-signing.html

+0

感謝您的幫助,結合我的三條意見,我有一個總體思路,我確信我可以找到答案,但是,我不願意將任何答案標記爲正確還有更多的細節,再次感謝! – user1449018 2012-07-11 20:54:20

+0

那麼就把它們全部加起來,並稱之爲一天,我還添加了一個鏈接,可能會幫助你。 – BlackHatSamurai 2012-07-11 20:57:49

0

我已經複製「debug.keystore」從一臺計算機到另一個,有沒有不良副作用。您可以簡單地用另一個覆蓋另一個,並解除安裝/重新安裝問題。調試密鑰僅用於保護開發人員自己的設備免受其他開發人員的二進制文件攻擊。

正如其他人所提到的,您不需要使用調試密鑰來發布您的應用程序,您必須製作一個發佈密鑰並按照developer.android.com上的說明對其進行簽名。

此外值得注意的是,「調試」鍵僅在創建日期(安裝SDK時)有效期爲1年內有效。一年後,SDK會說它已過期,並生成一個新的調試密鑰。您必須將新密鑰重新複製到其他機器,並且必須卸載使用舊調試密鑰簽名的應用程序。

至於你提到的另一個問題,你應該有單獨的Eclipse工作區,它們都使用不同的SDK位置引用同一個Android項目。該項目不需要位於工作區的子文件夾中,因此您可以進行分離。

相關問題