2012-08-30 81 views
6

我想在每個下載的APK文件中包含額外的(每個用戶)數據。換句話說,我必須在服務器上現有的APK文件,並想:動態生成的XML文件如何替換APK中的XML文件?

  • 替換文件/res/user_info.xml在現有的APK
  • 更新和重新簽訂用戶下載之前,整個包就

更多信息:我知道這是可以做到用AAPT,apktool,的jarsigner,......問題是,該文件是相當差,我無法找到(或開發)工作的技術重新 - APK文件。例如aapt總是將XML文件放在根路徑(/)中,不管我做什麼。我也不確定哪些資源需要更新,以便APK文件再次有效。此外,編譯/res/中的現有XML文件 - 我是否也需要使用我的XML文件執行此操作?如果是的話,我該怎麼做?如果不是,我應該把我的XML文件放在/res/raw/

問題:如何替換APK中的XML文件並重新打包它?我需要哪些步驟以及使用哪些工具?

+0

好吧,apk只是一個帶有結構化文件夾/文件的zip文件。所以你可以解壓縮並做你想做的事情,然後用apk擴展再次壓縮它。 –

+1

理論上是的,但在實踐中,您可能還需要編譯XML文件,將它們添加到資源列表中,重新簽名......這些只是我所知道的。所以我想知道整個過程是什麼。 – johndodo

+0

我不知道你在那個xml文件中保存了什麼樣的信息,但是如果你只是改變xml的值數據而不是它應該工作的密鑰。 –

回答

3

在這writing你可以找到解壓和打包apk文件的基本步驟。

基本上;

=使用apktool.bat d -s sample.apk .\sample\解碼只有APK的資源。(在你的情況沒有必要解碼源部分)

=添加/編輯/替換你所需要的資源。

=使用apktool.bat b .\sample\ .\sample_edited.apk來構建更改的apk。

=生成RSA 2048鑰匙APK簽名,如果你不已經有一個:keytool -genkey -v -keystore my.keystore -alias myandroidalias -keyalg RSA -keysize 2048 -validity 20000

=登錄APK使用生成的密鑰jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore my.keystore .\sample_edited.apk -signedjar .\sample_signed.apk myandroidalias

=和對齊簽署APK與4字節邊界zipalign.exe -v 4 .\sample_signed.apk .\sample_aligned.apk的zipalign附帶的android-sdk