Odkryłem, że jest to spowodowane moją wersją JDK.
Miałem ten problem z 'ant' i wynikało to z tego OSTRZEŻENIA wymienionego w dokumentacji:
http://developer.android.com/guide/publishing/app-signing.html#signapp
Przestroga: od wersji JDK 7 zmienił się domyślny algorytm podpisywania, co wymaga określenia algorytmów podpisu i skrótu (-sigalg i -digestalg) podczas podpisywania pliku APK.
Mam JDK 7. W moim dzienniku Ant, użyłem -v do określenia gadatliwości i to pokazało
$ 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]
Podpisałem JAR ręcznie i wyrównałem go zipem, ale dał trochę inny błąd:
$ "$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)
Znalazłem odpowiedź tutaj.
Jak radzić sobie z INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES bez odinstalowywania
Musiałem go tylko odinstalować, a potem zadziałało!
$ 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)
Teraz muszę tylko zmodyfikować plik build.xml, aby używać tych opcji podczas podpisywania!
OK, oto jest: C: \ Program Files \ 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
jest to błąd-103
, który można uzyskać / zobaczyć przezadb log
( src ) np.D/PackageInstaller(21320): Installation error code: -103