close

前言

Google LvL 是個保護apk外流氾濫的保護措施,可避免apk被外流後,還可以讓人用.

簡單來說就是固定取得來源 -> 只能從google play下載

License Verification Library (LVL)

LVL 是Google 開放用戶者驗證APP合法的機制,及最主要的目的在於,

防範付費APP外流的機制(擋谷歌生意,嘿嘿

當然免費下載的App也是可以用的,看該開發團隊的想法.

其一般用法在於,開啟APP後便可阻擋用戶使用APP,

之前接到的暗紫做法也蠻有趣的,擋住大部分的功能,留下首頁畫面給他們看(菸)

 

 

LVL Add Your Application


下載 Library

至 SDK Manager 下載Google Play Licesing Library

導入至專案中

使用import modules至你的sdk底下找尋"/extras/google/market_licensing" , 把專案匯入其中.

選擇llibrary或 AndroidManifest把lvl library匯入其專案中,

AS 導入後,會自動幫你build, 但因為build version版本問題,這邊我換成專案目前的版本

buildToolsVersion "23.0.2"

在app的build.gradle的dependencies依赖内添加上module

1. compile project("剛剛匯入的專案名稱")

點擊 Gradle sync 應該就成功了,其他具体可以参考官方文档

實作LVL

1. 加入LVL權限

<!-- google license-->
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />

參考Sample 實作專案

預備資料

  1. 現在google develop console  中的APP取得public key (服務與API中)
  2. 設定 salt 中 20個隨機參數(寫個random 跑一下吧) 

加入LicenseCheckerCallback

在所要擋住的activity中 implements LicenseCheckerCallback,會增加三個抽象method, 並依照需求處理

@Override
public void allow(int reason) {
}

@Override
public void dontAllow(int reason) {
}

@Override
public void applicationError(int errorCode) {
}

初始化 google licensing

private LicenseChecker mChecker;
private void initGoogleLicense(){
    String deviceId = Settings.Secure.getString(getContentResolver(), 
                                                Settings.Secure.ANDROID_ID);
    mChecker = new LicenseChecker(this, new ServerManagedPolicy(this, 
        new AESObfuscator(SALT, getPackageName(), deviceId)), your public key);
    mChecker.checkAccess(this);
}

Android 5.0+ 問題處理

如果你運行程序在Android5.0+的設備上,你會發現應用直接crash.

因為Library中的遠程綁定服務時使用的是隱式綁定,而Android5.0+已經不在支持隱式遠程綁定了,

所以我們需要修改一下Library的源碼:

首先搜索定位到LicenseChecker.java文件的checkAccess()方法,對應於源文件的第153行

Base64.decode("Y29tLmFuZHJvaWQudmVuZGluZy5saWNlbnNpbmcuSUxpY2Vuc2luZ1NlcnZpY2U=")))                                   

改為

Base64.decode("Y29tLmFuZHJvaWQudmVuZGluZy5saWNlbnNpbmcuSUxpY2Vuc2luZ1NlcnZpY2U="))).setPackage("com.android.vending")                                     

模擬測試

若每次測試都需要上架,會有很長得等待時間,這樣效率也不好,好在google 後台那邊有設定測試者權限

這邊可以用來模擬權限處理, 其內容如下:

使用jar檔匯入

使用project方式,並在以下路徑找尋jar檔

build/intermediates/bundles/release/

 

 

參考資料如下:

http://melodyxxx.com/2016/08/21/use_google_play_lvl/

arrow
arrow
    文章標籤
    android apk保護 google lvl
    全站熱搜
    創作者介紹
    創作者 Owen Chen 的頭像
    Owen Chen

    歐文的BLOG

    Owen Chen 發表在 痞客邦 留言(0) 人氣()