1. 程式人生 > >初識馬甲包

初識馬甲包

看部落格瞭解到馬甲包,現在做下總結

馬甲包是指與原APP包除了包名,包id,包名稱圖示等給使用者加以區分的東西,其他功能基本不變的APP包。

作用:馬甲包是利用各大市場規則漏洞,通過技術手段,多次上架同一款產品的方法。馬甲包和主產品包擁有同樣的內容和功能,除了icon和應用名稱不能完全一致,其他基本一致。

1.最核心的作用是獲取有效客戶。增加關鍵詞的覆蓋量,單個APP只能有100個字元的關鍵詞,多個
APP就可以覆蓋N×100個字元的關鍵詞,關鍵詞覆蓋越多,就意味著能夠被更多的客戶搜尋到,有展現量,才有下載量
,有下載量才有可能發展成為有效客戶。

2.抗風險
正常情況下,任何一款產品都是要不斷的更新功能的。如果我們直接在主包上更新,一旦新功能不被使用者接受那就損失大了,我們前期大量投資帶來的使用者將會流失,這對很多產品開發者來說是不可承受之痛。
如果使用馬甲包,則可以隨意測試新功能,好的功能就在主包上迭代,不好的也無所謂,馬甲包本身就是來背鍋的。

3.導量
主包和馬甲包屬於同一個平臺,使用者資訊可以共享
通過彈窗,廣告,Push等引導使用者下載主App。有一部份App接了網盟相互導流。

建立

1.新建一個專案

2.修改build.gradle

清單檔案修改名稱

點選studio的提示sync project 同步專案

 

當我們開啟

至此一個馬甲包就建立成功了

3.執行

選中majiabaoOne 執行可能報錯

此時需要我們給馬甲包配置簽名

選中專案右擊

新增並設定簽名檔案配置

選中build types 選中馬甲包 debuggle 選擇true

至此就可以執行成功馬甲包了

4.簽名

按照正常的簽名流程進行簽名

會生成兩個apk,一個是主應用的,一個是馬甲包的

5.修改圖示 佈局中的文字顯示主題效果等

這些可以通過修改資原始檔進行修改

原理:Android應用在編譯時,會以applicationId字尾編譯資源,所有根據不同的馬甲包,可以編譯不同的資源,如果字尾資原始檔中有對應的資源,則將會用字尾資原始檔中的資源覆蓋主包資源。

先建立一個馬甲包資原始檔

至此就生成了一個馬甲包的資原始檔目錄

(1)替換馬甲包圖示

在馬甲包的資源目錄中新增圖片資源

選擇圖片資源規格

在圖片資源中新增和現有圖示名稱同名的圖片

至此馬甲包的圖示資源就建立好了

(2)修改主題的資原始檔——修改主題資源顏色

在values中建立colors的資原始檔

定義自己的主題顏色

(3)修改佈局檔案中的文字內容

控制元件使用String資原始檔設定文字

在馬甲包中建立string資原始檔,新增同樣名稱的資源,內容不同

(4)許可權宣告

正常的簽名是

<uses-permission
    android:name="com.liunian.majiabaotest.permission.JPUSH_MESSAGE"
    android:protectionLevel="signature" />

這樣的com.liunian.majiabaotest這是專案id

而有馬甲包後,馬甲包使用許可權需要id的話則不能使用,可以使用${applicationId}代表專案id,這樣無論馬甲包還是主應用都能使用許可權

<uses-permission
    android:name="${applicationId}.permission.JPUSH_MESSAGE"
    android:protectionLevel="signature" />

6.修改程式內容

在Activity中對TextView進行不同的設定,可以利用

BuildConfig.BUILD_TYPE進行判斷當前專案是馬甲包還是主應用.

其中

是對應的

程式打簽名後type對應的就是release

 

參考:

https://blog.csdn.net/xiao_nian/article/details/79460952

https://blog.csdn.net/qq_22894275/article/details/81167709

https://blog.csdn.net/qq_27481249/article/details/79897610

https://my.oschina.net/u/3734237/blog/1622166

https://www.jianshu.com/p/b26a95e472c5

https://blog.csdn.net/nwsuafer/article/details/42004197