1. 程式人生 > >從eclipse到應用商城 —Android專案混淆簽名加固打包上線全流程

從eclipse到應用商城 —Android專案混淆簽名加固打包上線全流程

從eclipse到應用商城

­——Android專案混淆簽名加固打包上線全流程

說明:

       這篇文章是筆者上線Android專案的經驗總結,親身測試,保證真實可用。

主要內容如下:

1 混淆

 對eclipse專案目錄下project.properties檔案和proguard-project.txt檔案進行修改,實現程式碼混淆,為自己的apk增加初級防護

2使用eclipse專案右鍵AndroidTool生成自己的簽名檔案和簽過名的apk

3 使用doc控制檯獲取簽名檔案中的SHA碼,從百度地圖上生成新的key,使用第2步中生成的簽名檔案以同樣的步驟再次匯出apk。(這一步主要針對專案中使用了第三方介面和key的開發者,如果沒有使用可以直接忽略)

4 使用360加固寶對第3步中生成的apk進行加固處理。使用APKSign軟體為加固後的apk檔案進行重新簽名

5將自己簽名、加固後的應用釋出到應用商城

一、   程式碼的混淆 

     在將自己的Android專案匯出為apk檔案之前,我們最好將程式碼混淆一下,防止惡意侵權和破解,eclipse給我們提供了這樣的工具,做法如下:

1 找到專案下project.properties檔案,開啟後將

#proguard.config=${sdk.dir}/tools/proguar……

這句話前面的#去掉,也就是讓這條指令生效

圖示:修改前

圖示:修改後

2 找到專案下proguard-project.txt檔案,在檔案末尾增加這兩句話:

-dontwarn com.baidu.**

-keep class com.baidu.** { *;}

意思是引用的第三方的包baidu包不被混淆,如果不加這個語句,匯出專案就會報錯,如果你使用的還有其他的包,同樣增加這樣的語句,將包名換一下即可。

圖示:修改前

圖示:修改後

完成這兩步之後,如果apk被反編譯工具反編譯之後,類名會變成abcd等字母,會增加破解難度。

    二、生成自己的簽名檔案和簽完名的apk

我們使用eclipse開發專案測試完成需要上線時,需要匯出apk檔案,我們在虛擬機器上執行的時候,在bin資料夾下回自動生成一個apk檔案。

   我們最好不好直接用這個apk檔案。這是因為簽名檔案的緣故。簽名檔案字尾名是keystore。所謂的簽名可以理解成自己的app署名,就是宣告版本,表明自己是這個app的主人,這樣便於宣告權利,同樣也要承擔相應的責任和義務。所以每一個apk要想在裝置上正常執行,必須要有自己的簽名檔案。當我們安裝一個apk的時候,如果裝置上已經有一個包名相同,簽名檔案也相同的apk,那麼新的apk就會覆蓋以前的apk,也就是程序升級。如果包名相同,簽名檔案不同,安裝的時候會發生衝突,只有解除安裝掉舊的apk,才能裝上新的。也就說,簽名檔案可以保護自己的應用不被惡意地破解和替代。

   當我們在虛擬機器上測試自己開發的應用的時候,簽名檔案使用的是eclipse上自帶的簽名檔案debug.keystore。

    為了以後便於升級和維護,我們最好使用自己的簽名檔案。方法如下:

Eclipse中選中專案,滑鼠右鍵選擇AndroidTool<exportsigned application pakage,意思是匯出簽名的應用包。

    會彈出一個對話方塊,選擇要匯出的專案。

    注意:專案名不能出現漢字,否則無法匯出。如果專案中有漢字,copy專案重新命名即可。選擇下一步,會讓你選擇一個簽名檔案,第一次使用的時候,選擇create newkeystore,指定簽名檔案的儲存位置和檔名,注意檔案字尾名要手動加上,比如mykeystore.keystore,輸入自己的密碼。

    如果是以後再匯出專案,選擇use exiting keystore,也就是使用自己已經建立好的簽名檔案,所以簽名檔案一定要保管好,密碼也不能忘,否則自己開發的這個應用以後使用者要升級的話就會很困難,要先解除安裝掉舊的,才能裝你的這個新版的應用。而且自己開發的不同的專案也推薦使用同一個簽名檔案,以後自己的各個程式之間的維護會更加方便。

    選擇下一步,設定自己證書的詳細資訊,alias別名,比如wangjinxi,validity是有效期,單位是年,儘量寫長一點,比如100。下面就是自己的其他資訊,包括姓名、單位、城市、省份、國家,中國使用CN即可。

     選擇下一步,指定生成的apk所在的資料夾。

    點完成,大約半分鐘後,會生成一個簽名檔案和綁定了該簽名檔案的apk。

三、獲取簽名檔案中的SHA碼,申請新的百度地圖key,使用已有的簽名檔案,重新匯出新的apk檔案

如果你的應用中使用了百度地圖等第三方介面,這個步驟需要看一下,否則可以忽略。

當我們的專案中使用了百度地圖等第三方的介面時(以下以百度地圖為例),我們需要在百度地圖的開發平臺中申請一個key,並在自己專案的清單檔案中配置這個key。

   申請這個key的時候,需要我們提供SHA碼,每個簽名檔案中都對應著一個SHA碼,我們在虛擬機器上測試的時候,使用的是eclipse中預設簽名的SHA碼。

   所以我們要做的就是獲得自己簽名中的SHA碼,用這個碼申請新的key,在專案清單檔案中配置新的key,並重新匯出專案。

獲得簽名檔案中的SHA碼

-----------------------------------------------

方法一、eclipse中匯出簽名的apk,方法同上,選擇使用已經存在的keystore檔案,點選下一步,就會看到這個證書的SHA碼

--------------------------------------------------

方法二,使用doc控制檯

1 前提是你要安裝jdk並配置環境變數

2 用cmd指令或者在開始選單中開啟控制條,輸入

cd C:\Users\Administrator\Desktop\keystore_dir

回車開啟簽名檔案,cd後面是你的簽名檔案所在的資料夾路徑

3 輸入

keytool -list -v -keystore mykeystore.keystore

回車,mykeystore.keystore是你簽名檔案的檔名

提示輸入金鑰庫口令,直接回車即可看到證書的詳細資訊。

其中證書指紋 (SHA1)就是我們需要的SHA碼,複製出來

-------------------------------------------------------

使用這個SHA碼重新申請新的key,放入專案的清單檔案中並重新匯出專案。

注意匯出的時候,使用我們之前建立的mykeystore.keystore簽名檔案,不要使用debug.keystore,也不要重新new一個keystore,因為簽名檔案和你的百度地圖key要保持一致,否則地圖無法正常顯示。

匯出簽名專案步驟同上,唯一不同是,選擇use exitingkeystore

輸入密碼,選擇別名,再次輸入密碼

   會看到讓你選擇生成的apk的位置,並且你會看到這個簽名的MD5碼和SHA碼,點選完成即可看到重新簽名的apk檔案。

   筆者曾經遇到錯誤,輸入密碼之後,別名一欄是空,後來匯出好幾次才成功,懷疑是簽名檔案損壞,也有可能是密碼錯誤,所以要多試幾次。這樣就生成了有自己簽名的並且能正常顯示百度地圖的apk檔案。

四、加固和重新簽名

   雖然我們已經對程式碼進行了混淆,但是簽完名的apk不要直接上線。為了更好的保護我們的apk,推薦使用360加固保。

   操作起來比較簡單,直接進入360加固保

如果沒有賬號,需要註冊一個,上傳專案

選擇開始加固

大概幾分鐘後加固完成,選擇“下載應用”,會獲得加固後的apk檔案

加固後的apk檔案即使被反編譯,也只能看到很少一部分,大多數的程式碼已經被編譯成so檔案,很難再被破解。

加固後的apk檔案需要再次簽名,可以使用APKSign,按照提示輸入路徑和密碼即可。

APKSign下載地址:

http://download.csdn.net/download/wangjx562/9669187

       選擇開始簽名,我們會得到加固後並且簽了名的apk

五、上線

這樣簽名加固後的apk就可以上線了

(一)可以選擇的應用商城

360移動開發平臺

應用寶

應用匯

小米開放平臺

http://dev.xiaomi.com/console/

百度開發者平臺

http://app.baidu.com/

優億市場

http://www.eoemarket.com/

  voio、華為 不允許個人開發者釋出應用, 安卓市場與百度合併,所以發到百度上就不用再上安卓市場了。豌豆莢,個人資質證明無法上傳。安智、歷趣、沃商店筆者沒有用,大家可以試一下。

(二)需要準備的材料

1 開發者手持身份證相片

2 身份證正反面

3 apk圖示

4 apk截圖

有些還會要類似宣傳海報的圖片,而且大都會對圖片的畫素和大小作出比較嚴格的限制,所以你能會點photoshop就方便了,隨時裁剪出符合商城要求的圖片。

  通過混淆、加固、三次簽名,我們的apk終於可以上線了,在令人期待(教人捉急)的稽核後就能看到我們的應用了。

總結一下步驟:

1 混淆

在專案project.properties檔案中去掉#註釋

在proguard-project.txt檔案中增加保護第三方包語句

實現程式碼混淆,為apk加上初級防護

2 第一次簽名

專案右鍵AndroidTool<export signedapplication pakage<create new keystore,建立自己的簽名檔案和簽完名的apk

3 申請新key,第二次簽名

從簽名檔案中獲取SHA碼,申請新的key,專案右鍵AndroidTool<exportsigned application pakage<use exiting keystore再次簽名並匯出apk。

4 加固,第三次簽名

使用360加固保,上傳第二次簽名後匯出的apk,獲得新的apk,使用APKSign為加固後的apk檔案進行第三次簽名。

5 上線

準備好身份證相片、圖示、截圖、文字說明等材料,在360移動開發平臺、應用寶、應用匯、小米開放平臺、百度開發者平臺、優億市場等平臺上釋出自己的應用。

本文原創,版權所有,轉載請標明出處,歡迎技術交流,嚴禁篡改抄襲。

[email protected]

相關推薦

eclipse應用商城Android專案混淆簽名加固打包上線流程

從eclipse到應用商城 ­——Android專案混淆簽名加固打包上線全流程 說明:        這篇文章是筆者上線Android專案的經驗總結,親身測試,保證真實可用。 主要內容如下:

專案Eclipse轉到Android Studio

從Eclipse遷移: 1.從svn上拉取專案:File -> new -> other -> SVN ->從SVN檢出專案… 如果報 refused by server問題,關掉代理,重啟電腦,開啟瀏覽器能上網就好了

Eclipse中將一個android專案當做另外一個android專案的library

1.右擊將要被當做library的專案—>Properties裡面—>Android—>給Is Library前面的checkbox打上勾—>點選Apply—>點選OK 2.右擊需要library的專案—>Propert

Eclipse ADT 建立Android專案----工程目錄詳解

一、Eclipse建立Android工程 步驟:File→New→Android Application Project       1.工程名稱必須唯一,在Project name中填入HelloAndroid。       2.包的名稱空間,需要遵循Java包的命名方

Eclipse匯入github的專案原始碼

背景: 今天在使用eclipse直接匯入剛從github上下載下來的專案原始碼時總是提示無法匯入。百度了各種資料,找到一種可以和平解決問題的法子: 通過安裝egit外掛,實現github上的原始碼成功

eclipse環境下android專案 新增.so檔案

eclipse環境下android專案 新增.so檔案 方法一:如果把so放在libs/armeabi/下,eclipse中so會自動打包進去,然後使用System.load("data/data/xxx.xxx.xxx/lib/xx.so");載入so。 方法二:如果放到

android專案混淆打包注意事項

以下為我此期專案中的關於混淆打包的總結: (本人第一次混淆打包,呵呵,錯誤很多!列了一些比較頭疼的) 一、專案混淆過程中注意事項: 由於我的sdk版本較高,因此新建android專案下只有proguard-project.txt和project.properties這兩個資料夾,而網上一些所謂混淆的方法我

Eclipse IDE中Android專案打紅叉的解決方法

先可以去看一下幾個視窗的輸出內容,不同的錯誤日誌要採用不同的方法,要靈活使用各種方法! 1>選單路徑----Window/Show View/Console 2>選單路徑----Window/Show View/Error Log 3>選單路徑----Window/Show Vie

Eclipse中的Android專案編譯後沒有生成R檔案的兩種原因

筆者在用Eclipse寫Android專案,時常發生R檔案錯誤。 對此筆者總結了兩種原因:一種是res目錄下的檔案有Eclipse檢查不出的錯誤,但不能通過編譯,因此沒有生成R檔案。還有一種情況是已經

eclipse上傳本地專案到GitHub詳解(步驟)

  首先新建一個倉庫: 然後,在頁面中點選你的賬號名字: 進入主頁面,點選Repositories,進入你的倉庫      這就是你剛剛建立的倉庫,像SVN一樣,先建立倉庫,再往裡面放東西   開啟Ecli

2017年最牛逼的分類Android專案原始碼免費一次性打包下載!

之前發過一個帖子,但是那個帖子有點問題我就重新發一個吧,下面的原始碼是我從今年開始不斷整理原始碼區和其他網站上的安卓例子原始碼,目前總共有810套左右,根據實現的功能被我分成了100多個類,總共接近2.5G,還在不斷更新。初學者可以快速方便的找到自己想要的例子,大神也可以看一

android studio生成簽名打包的方法

方法一: 在android中。可以非常快速的生成簽名檔案.jsk檔案。步驟如下: 第一步: 第二步: 如果你已經有了簽名檔案.jsk那麼就選擇③匯入檔案,這時①中就是檔案路徑,④是keystore的密碼,⑤是別名,⑥是檔案的密碼。 我們這裡預設

Android專案利用jinkens自動打包

      做Android開發的夥伴們都知道,無論是測試還是專案上線,我們都要對Android專案進行打包生成apk檔案,才能安裝到手機上使用。通常使用的方法就是手動打包或是Ant自動打包。手動打包很簡單,比如在Eclipse中:選中專案-->點選右鍵-->A

應用大資料和機器學習技術實現車險流程智慧化的方案(中) -理賠流程智慧化改造

一、簡要說明 本篇討論的是理賠環節用大資料和機器學習技術實現車險理賠流程的智慧化。理賠與承保不同,重點要放在風險控制方面(既包括外部風險控制,也包括內部風險控制),對於如何簡化理賠流程、提高理賠時效等提升客戶體驗等方面沒有必要採用承保減少人工干預的方法(PS:原因?自己想...)。 二、

應用大資料和機器學習技術實現車險流程智慧化的方案(上)

應用大資料和機器學習技術實現車險全流程智慧化的方案(上) -承保流程智慧化改造   一、簡要說明 以技術替代人力的思路對車險全業務流程改造,即應用車險大資料和機器學習技術全部或部分替代承保理賠管理相關業務處理崗位,實現車險業務處理流程、風險識別與控制的智慧化。本篇只討論

0開始編寫一個應用android端+小程式端+伺服器端)第二步 專案經理完成邏輯圖。(上:產品經理的思考)

專案經理跟客戶收到基本需求後,要完善客戶的需求。因為絕大數客戶對於網際網路或者軟體不是很懂,只能提出他們想要的東西,即專案必須要實現的功能。但是沒有一個完整的專案流程,這需要專案經理去完善,細化,改善功能。 下面開始記錄專案經理工作。 上一篇客戶說到他的專案構思

0開始編寫一個應用android端+小程式端+伺服器端)第二步 專案經理完成邏輯圖。(下:產品細節思考後的實現邏輯圖)

上一篇說到產品經理思考完成大概邏輯圖: 使用者釋出拼團資訊可以選擇金額釋出,非金錢釋出。並且可以分享。然後,其他使用者點選獲得獎勵,或者分享獲得獎勵。 獎勵的有錢,有釋出機會。這個就是專案的主要流程,但是專案只有這個太少了,拼團還有一個玩法就是 拼團抽獎。 所以要加上這

EclipseAndroid專案打包成apk並簽名

參考博文:http://blog.csdn.net/zhouxinhong/article/details/7599950                     http://www.cnblogs.com/tianguook/archive/2012/09/27/270

別處匯入新的專案到.eclipse 中時. 解決Android studio模擬器開啟黑屏。

解決Android studio模擬器開啟黑屏。   注意下圖。    選 擇software或hardware都可以。不選用預設的automatic =============================================

eclipse+ADT 進行android應用簽名打包詳解

1.Eclipse工程中右鍵工程,彈出選項中選擇 android工具-生成簽名應用包:   2.選擇需要打包的android專案工程:   3.如果已有私鑰檔案,選擇私鑰檔案輸入密碼,如果沒有參見第6和7步建立私鑰檔案: 4.輸入私鑰別名和密碼: 5.