[Android]混淆代碼後生成帶簽名的apk

    Android從2.3的SDK開始,將ProGuard混淆代碼的功能加入了進來。android

    咱們能夠從android sdk的tools目錄下看到有一個proguard目錄。說明具備了代碼混淆的功能。git

    

    至於如何進行代碼的混淆。咱們須要作的很簡單:github

    一、在用eclipse生成的android工程中都有一個project.properties文件,咱們須要在該文件中增長下面一行代碼:算法

proguard.config=proguard.cfg

    如圖所示:app

    二、寫混淆腳本proguard.cfgeclipse

    我測試用的混淆腳本很是簡單,只加了優化功能。如圖所示:ide

    對於proguard.cfg腳本的詳細介紹參見:http://blog.csdn.net/laoyao_moyan/article/details/7353768工具

    咱們能夠看到混淆android代碼很是容易,可是須要注意的是:在eclipse下經過Run執行來生成的bin目錄下的apk文件並無被混淆,只有經過加入證書發佈的apk纔會混淆。測試

    下面,咱們來看看如何打包簽名apk。優化

    一、生成keystore;

    在生成簽名apk前,咱們須要keystore,這個keystore能夠用jdk下的keytool工具生成。

    在cmd下,用命令行生成keystore如圖所示:

    

    按照上圖中的命令,輸入須要輸入的內容。

    其中,-alias android.keystore是生成的keystore別名;

              -keyalg RSA是加密和數字簽名的算法;

              -validity 20000是有效天數

    最後,會在jdk的bin目錄下生成android.keystore文件。(這是由於keytool命令在jdk的bin目錄下,固然,這個能夠經過環境變量來設置)。

    二、用keystore生成簽名apk。

    咱們有了keystore,就能夠生成簽名apk了。

    Eclipse中,右鍵須要簽名的工程->Android tools->export signed application package...

    這時會出現如下對話框:

    

    點擊下一步:

    

    鍵入密碼,點擊Next:

    

    鍵入密碼,再次點擊Next:

    

    最後,點擊Finish便可。

    這時會在jdk的bin目錄下生成帶簽名的apk。

    下面是將我在github上的androidexample工程混淆了,效果以下:

    


    最後,咱們看運行混淆後的輸出文件,在工程中會有生成的proguard文件夾,裏面的文件具體內容是:

         dump.txt

                   描述.apk包中全部class文件的內部結構。

         mapping.txt

                   列出了源代碼與混淆後的類,方法和屬性名字之間的映射。這個文件對於在構建以後獲得的bug報告是有用的,由於它把混淆的堆棧跟蹤信息反翻譯爲源代碼中的類,方法和成員名字。

         seeds.txt

                   列出那些未混淆的類和成員。

         usage.txt

                   列出從.apk剝離的代碼。

         這些文件放在如下目錄中:

  l  <project_root>/bin/proguard 當你使用Ant

  l  <project_root>/proguard 當你使用Eclipse

相關文章
相關標籤/搜索