Вы можете сделать некоторые из этих вещей. Но вы не можете собрать их в систему, которая не позволит кому-либо запустить «взломанную» версию вашего кода.
Можно ли запустить во время компиляции какую-то контрольную сумму этого класса (выполненную другим классом)?
Если возможно создать криптографическую контрольную сумму класса во время компиляции, запись на стороне сервера, или в «.apk», или в обоих случаях.
Также возможно вычислить такую контрольную сумму на стороне клиента.
То, что вы не можете сделать, это заставить либо платформу Android, либо взломанный «.apk» сгенерировать правдивую контрольную сумму:
Я не думаю, что платформа Android предоставляет эту функциональность, и если бы она это сделала, она могла быть подорвана на «рутированном» устройстве.
Естественно, если бы кто-то попытался взломать ваш «.apk», он мог бы подорвать любой «самоконтролируемый» код в «.apk», чтобы получить исходную контрольную сумму, а не контрольную сумму фактического кода. .
В любом случае, ваш сервер увидит ожидаемую контрольную сумму, а не действительную контрольную сумму фактического кода. Это будет одурачено.
По сути, если вам нужно выполнить свой код на платформе, которая эффективно контролирует пользователя, вы не можете запретить пользователю подрывать ваш код. Лучшее, на что вы можете надеяться, - это заставить трудолюбивого человека, обладающего соответствующими навыками, сделать это.