簡単なリパッケージ対策のコード。参考
Android アプリケーション(.apk)の自己署名を検証する方法 | Tech Booster
どの程度効果があるのかは知らないけど
スキルの低い人には効果があるかもしれない。
気休め程度に導入してみた。
/**
* 正しく署名されているかチェックする
*
* @param context
* @return
*/
public static boolean checkSigneture(Context context){
PackageManager pm = context.getPackageManager();
try{
PackageInfo packageInfo = pm.getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
// 通常[0]のみ
for(int i = 0; i < packageInfo.signatures.length; i++){
Signature signature = packageInfo.signatures[i];
if(BuildConfig.DEBUG){
if(DEBUG_KEY.equals(signature.toCharsString())){
return true;
}
}else{
if(RELEASE_KEY.equals(signature.toCharsString())){
return true;
}
}
}
}catch(NameNotFoundException e){
e.printStackTrace();
}
return false;
}