una por pasar paquete otro nombre enviar compartir como celular cambiar application aplicación aplicaciones aplicacion android maven java-7 jarsigner

android - paquete - como pasar aplicaciones de un celular a otro por bluetooth



¿Qué tipo de pitfals existen para la firma de Android APK? (4)

Descargo de responsabilidad: Sé lo básico de firmar un APK y tengo un problema con solo uno de mis proyectos y solo al firmar con Microsoft Windows como sistema operativo.

Estoy creando mi APK con Maven y los firmo con el complemento maven-jarsigner-plugin:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jarsigner-plugin</artifactId> <executions> <execution> <id>signing</id> <goals> <goal>sign</goal> </goals> <phase>package</phase> <inherited>true</inherited> <configuration> <archive>target/${project.build.finalName}.apk</archive> <sigfile>CERT</sigfile> <keystore>${env.HOME}/.keystore</keystore> <storepass>${env.KEY_STOREPASS}</storepass> <keypass>${env.KEY_KEYPASS}</keypass> <alias>${env.KEY_ALIAS}</alias> </configuration> </execution> </executions> </plugin>

Ahora, con uno de mis proyectos, obtengo el siguiente error al intentar instalar e iniciar la aplicación:

1360 KB/s (2057872 bytes in 1.477s) pkg: /data/local/tmp/FX-602P-Droid-5.0.0.apk Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

Como dije en la primera oración: Funciona bien cuando se firma con Mac OS X. Solo falla cuando se usa Windows 7 para firmar.

Al usar --debug al llamar a Maven, veo que el jarsigner se llama ok y no informa de ningún error:

[INFO] [INFO] --- maven-jarsigner-plugin:1.2:sign (signing) @ FX-602P-Droid --- [DEBUG] org.apache.maven.plugins:maven-jarsigner-plugin:jar:1.2: [DEBUG] org.apache.maven:maven-plugin-api:jar:2.0.6:compile [DEBUG] org.apache.maven:maven-project:jar:2.0.6:compile [DEBUG] org.apache.maven:maven-settings:jar:2.0.6:compile [DEBUG] org.apache.maven:maven-profile:jar:2.0.6:compile [DEBUG] org.apache.maven:maven-model:jar:2.0.6:compile [DEBUG] org.apache.maven:maven-artifact-manager:jar:2.0.6:compile [DEBUG] org.apache.maven:maven-repository-metadata:jar:2.0.6:compile [DEBUG] org.apache.maven:maven-plugin-registry:jar:2.0.6:compile [DEBUG] org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-9-stable-1:compile [DEBUG] junit:junit:jar:3.8.1:compile [DEBUG] classworlds:classworlds:jar:1.1-alpha-2:compile [DEBUG] org.apache.maven:maven-artifact:jar:2.0.6:compile [DEBUG] org.codehaus.plexus:plexus-utils:jar:1.5.15:compile [DEBUG] Created new class realm plugin>org.apache.maven.plugins:maven-jarsigner-plugin:1.2 [DEBUG] Importing foreign packages into class realm plugin>org.apache.maven.plugins:maven-jarsigner-plugin:1.2 [DEBUG] Imported: < project>net.sourceforge.uiq3:FX-602P-Droid:5.0.0 [DEBUG] Populating class realm plugin>org.apache.maven.plugins:maven-jarsigner-plugin:1.2 [DEBUG] Included: org.apache.maven.plugins:maven-jarsigner-plugin:jar:1.2 [DEBUG] Included: junit:junit:jar:3.8.1 [DEBUG] Included: org.codehaus.plexus:plexus-utils:jar:1.5.15 [DEBUG] Excluded: org.apache.maven:maven-plugin-api:jar:2.0.6 [DEBUG] Excluded: org.apache.maven:maven-project:jar:2.0.6 [DEBUG] Excluded: org.apache.maven:maven-settings:jar:2.0.6 [DEBUG] Excluded: org.apache.maven:maven-profile:jar:2.0.6 [DEBUG] Excluded: org.apache.maven:maven-model:jar:2.0.6 [DEBUG] Excluded: org.apache.maven:maven-artifact-manager:jar:2.0.6 [DEBUG] Excluded: org.apache.maven:maven-repository-metadata:jar:2.0.6 [DEBUG] Excluded: org.apache.maven:maven-plugin-registry:jar:2.0.6 [DEBUG] Excluded: org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-9-stable-1 [DEBUG] Excluded: classworlds:classworlds:jar:1.1-alpha-2 [DEBUG] Excluded: org.apache.maven:maven-artifact:jar:2.0.6 [DEBUG] Configuring mojo org.apache.maven.plugins:maven-jarsigner-plugin:1.2:sign from plugin realm ClassRealm[plugin>org.apache.maven.plugins:maven-jarsigner-plugin:1. 2, parent: sun.misc.Launcher$AppClassLoader@214c4ac9] [DEBUG] Configuring mojo ''org.apache.maven.plugins:maven-jarsigner-plugin:1.2:sign'' with basic configurator --> [DEBUG] (f) alias = krischik [DEBUG] (f) archive = C:/Work/uiq3/Java/FX-602P-Droid/target/FX-602P-Droid-5.0.0.apk [DEBUG] (f) arguments = [] [DEBUG] (f) keypass = Atlan. [DEBUG] (f) keystore = C:/Users/martin.krischik/.keystore [DEBUG] (f) processAttachedArtifacts = true [DEBUG] (f) processMainArtifact = true [DEBUG] (f) project = MavenProject: net.sourceforge.uiq3:FX-602P-Droid:5.0.0 @ C:/Work/uiq3/Java/FX-602P-Droid/pom.xml [DEBUG] (f) removeExistingSignatures = false [DEBUG] (f) sigfile = CERT [DEBUG] (f) skip = false [DEBUG] (f) storepass = !AtlanRhodan! [DEBUG] (f) verbose = false [DEBUG] -- end configuration -- [DEBUG] Verarbeite C:/Work/uiq3/Java/FX-602P-Droid/target/FX-602P-Droid-5.0.0.apk [DEBUG] ''cmd.exe /X /C "C:/opt/Java/jdk/1.7.0/bin/jarsigner.exe -keystore C:/Users/martin.krischik/.keystore -storepass ''*****'' -keypass ''*****'' -sigfile CERT C:/Work/u iq3/Java/FX-602P-Droid/target/FX-602P-Droid-5.0.0.apk krischik"'' [INFO] 1 Archiv(e) verarbeitet [INFO]

¿Qué más podría haber salido mal?

PD: Acabo de anotar C:/opt/Java/jdk/1.7.0/bin/jarsigner.exe - ¿Ha habido un cambio en el jarsigner de 1.6 a 1.7? ¿Y por qué Maven usaría el firmante 1.7 para un proyecto 1.6?


Es muy difícil encontrar información sobre el uso con 1.7, pero una vez encontrado, es bastante simple:

Para keytool incluyen:

-sigalg SHA1withDSA -keyalg DSA -keysize 1024

Para jarsigner incluyen:

-sigalg SHA1withDSA -digestalg SHA1

(1024 es el máximo y funciona, menos podría hacer el truco)


Gracias ... Me ayudó a corregir problemas de firma ...

jarsigner -verbose -sigalg SHA1withRSA -digestalg keytool -sigalg MD5withRSA -keyalg RSA

Por último, no te olvides de zipalign .

jarsigner métodos similares de keytool jarsigner y jarsigner y el problema se resolvió.


La solución de Baqueta funciona también para mí.

Usa estos argumentos en la llave:

-sigalg MD5withRSA -keyalg RSA -keysize 1024

Todavía estoy usando allí en jarsigner:

-sigalg MD5withRSA -digestalg SHA1

¡Gracias, el APK compilado e instalado en un dispositivo con Java 7, por fin!


La solución es agregar esto a la <configuration> del complemento maven-jarsigner:

<arguments> <argument>-sigalg</argument><argument>MD5withRSA</argument> <argument>-digestalg</argument><argument>SHA1</argument> </arguments>

Ant issues.apache.org/bugzilla/show_bug.cgi?id=52344 para esto, pero el plugin de Maven no.