【Android Studio】代碼混淆與多渠道打包(二)

上篇介紹了代碼混淆,這篇回顧一下多渠道打包,首先我們要了解的是應用爲什麼需要簽名?
開發Android的人這麼多,完全有可能大家都把類名,包名起成了一個同樣的名字,這時候如何區分?簽名這時候就是起區分作用的。
由於開發商可能通過使用相同的Package Name來混淆替換已經安裝的程序,簽名可以保證相當名字,但是簽名不同的包不被替換。
APK如果使用一個key簽名,發佈時另一個key簽名的文件將無法安裝或覆蓋老的版本,這樣可以防止你已安裝的應用被惡意的第三方覆蓋或替換掉。
這樣簽名其實也是開發者的身份標識。交易中抵賴等事情發生時,簽名可以防止抵賴的發生。
我們知道Eclipse中用於簽名的文件是.keystore文件,在調試時用的debug.keystore,這是應用程序默認的簽名文件,這個文件存在C:\Users\pc-名字.android中。這個文件當然可以遷移到android studio中,android studio可以生成.jks文件來對應用簽名。這個跟.keystore作用是一樣的。這時候大家就會問了,這個keystore文件是幹什麼用的呢?問的好,我們當然要知道其所以然.
Keytool 是一個有效的安全鑰匙和證書的管理工具.
Java 中的 keytool.exe (位於 JDK\Bin 目錄下)可以用來創建數字證書,所有的數字證書是以一條一條(採用別名區別)的形式存入證書庫的中,證書庫中的一條證書包含該條證書的私鑰,公鑰和對應的數字證書的信息。證書庫中的一條證書可以導出數字證書文件,數字證書文件只包括主體信息和對應的公鑰。
Keytool 把鑰匙和證書儲存到一個keystore.默任的實現keystore的是一個文件.它用一個密碼保護鑰匙.
(2)
關於證書的幾個概念:
一個證書是一個實體的數字簽名,還包含這個實體的公共鑰匙值.
公共鑰匙 :是一個詳細的實體的數字關聯,並有意讓所有想同這個實體發生信任關係的其他實體知道.公共鑰匙用來檢驗簽名;
數字簽名:是實體信息用實體的私有鑰匙簽名(加密)後的數據.這條數據可以用這個實體的公共鑰匙來檢驗簽名(解密)出實體信息以鑑別實體的身份;
簽名:用實體私有鑰匙加密某些消息,從而得到加密數據;
私有鑰匙:是一些數字,私有和公共鑰匙存在所有用公共鑰匙加密的系統的鑰匙對中.公共鑰匙用來加密數據,私有鑰匙用來計算簽名.公鑰加密的消息只能用私鑰解密,私鑰簽名的消息只能用公鑰檢驗簽名。
實體:一個實體可以是一個人,一個組織,一個程序,一臺計算機,一個商業,一個銀行,或其他你想信任的東西.
實際上,我們用[1]中的命令已經生成了一個自簽名的證書,沒有指定的參數都使用的是默認值。
大家注意加粗字體就明白了。
下面就開始正題了,多渠道打包,我們就用友盟來做爲例子來講吧。
渠道信息一般在 AndroidManifest.xml中修改以下值:

<meta-data
    android:name="UMENG_CHANNEL"
    android:value="${UMENG_CHANNEL_VALUE}" />
其中[UMENG_CHANNEL_VALUE: "XXXX"]就是對應${UMENG_CHANNEL_VALUE}的值。


productFlavors {
baidu {}
c360 {}
uc {}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
    }
}
這段代碼在build.gradle文件中,分配多種渠道。我這裏隨便寫了幾個。
發佈了87 篇原創文章 · 獲贊 7 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章