Eu descobri que isso foi causado pela minha versão do JDK.
Eu estava tendo esse problema com 'ant' e era devido a este CUIDADO mencionado na documentação:
http://developer.android.com/guide/publishing/app-signing.html#signapp
Cuidado: A partir do JDK 7, o algoritmo de assinatura padrão mudou, exigindo que você especifique os algoritmos de assinatura e resumo (-sigalg e -digestalg) ao assinar um APK.
Eu tenho o JDK 7. No meu log Ant, usei -v para verbose e ele mostrou
$ ant -Dadb.device.arg=-d -v release install
[signjar] Executing 'C:\Program Files\Java\jdk1.7.0_03\bin\jarsigner.exe' with arguments:
[signjar] '-keystore'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\release.keystore'
[signjar] '-signedjar'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\bin\PairFinder-release-unaligned.apk'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\bin\PairFinder-release-unsigned.apk'
[signjar] 'mykey'
[exec] pkg: /data/local/tmp/PairFinder-release.apk
[exec] Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
Assinei o JAR manualmente e o zipalignei, mas deu um erro um pouco diferente:
$ "$JAVA_HOME"/bin/jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore release.keystore -signedjar bin/PairFinder-release-unaligned.apk bin/PairFinder-release-unsigned.apk mykey
$ zipalign -v -f 4 bin/PairFinder-release-unaligned.apk bin/PairFinder-release.apk
$ adb -d install -r bin/PairFinder-release.apk
pkg: /data/local/tmp/PairFinder-release.apk
Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]
641 KB/s (52620 bytes in 0.080s)
Eu achei que respondeu aqui.
Como lidar com INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES sem desinstalação
Eu só precisava desinstalá-lo e funcionou!
$ adb -d uninstall com.kizbit.pairfinder
Success
$ adb -d install -r bin/PairFinder-release.apk
pkg: /data/local/tmp/PairFinder-release.apk
Success
641 KB/s (52620 bytes in 0.080s)
Agora só preciso modificar o build.xml para usar essas opções ao assinar!
Ok, aqui está: C: \ Arquivos de programas \ Java \ android-sdk \ tools \ ant \ build.xml
<signjar
sigalg="MD5withRSA"
digestalg="SHA1"
jar="${out.packaged.file}"
signedjar="${out.unaligned.file}"
keystore="${key.store}"
storepass="${key.store.password}"
alias="${key.alias}"
keypass="${key.alias.password}"
verbose="${verbose}" />
INSTALL_PARSE_FAILED_NO_CERTIFICATES
é o erro-103
que você pode obter / ver viaadb log
( src ), por exemplo.D/PackageInstaller(21320): Installation error code: -103