Para o mesmo aplicativo, eu tenho:
- um APK de uma loja de aplicativos,
- o que é reivindicado ser o código fonte da mesma versão. Com um script e estrutura bastante comuns, o Gradle constrói.
Quero verificar se o APK foi realmente criado a partir desse código-fonte ou não.
Como verificar isso?
Notas:
- O APK não está ofuscado.
- Não tenho motivos para confiar na assinatura de ninguém. Eu confio apenas no código fonte.
- Eu já construí o aplicativo para mim, mas agora quero saber se o APK está bom ou não.
- De preferência com ferramentas de linha de comando do Linux, mas qualquer ferramenta está OK.
diff
método parece legal ... mas e se os caras da loja de aplicativos ofuscarem o APK durante a compilação?
.apk
arquivos e execute uma comparação nos diretórios resultantes. A única diferença então deve ser a assinatura (que não pode corresponder por razões óbvias). Pensando nisso: simplesmente descompactar os.apk
arquivos e fazer uma comparação binária deve fazer o mesmo. Ambos seria, evidentemente exigem ter usado as mesmas versões de bibliotecas etc. durante a compilação, em primeiro lugar :)