Como assinar um ficheiro APK android
6 answers
Https://developer.android.com/studio/publish/app-signing.html
OK, uma pequena visão geral sem referência ou eclipse ao redor, então deixe algum espaço para erros, mas funciona assim
- Abre o teu projecto no eclipse.
- pressione o botão direito do rato - > ferramentas (ferramentas android?)- > exportar aplicação assinada (apk?)
- passa. o feiticeiro: Faz uma nova loja de chaves. lembre-se dessa senha
- assina a tua aplicação
- Guarde-o, etc.
Também, a partir da ligação:
Compilar e assinar com o ADT do Eclipse
Se estiver a usar o Eclipse com o ADT plugin, poderá usar o Assistente de exportação para exportar um assinado .apk (e mesmo criar um novo teclado, Se necessário). O Assistente de exportação executa todos os interacção com o teclado e Jarsigner para ti, o que te permite assinar o pacote com uma interface gráfica em alternativa de executar os procedimentos manuais para compilar, assinar e alinhar, como discutido acima. Logo que o assistente tenha compilado e assinou o seu pacote, ele também efectuar o alinhamento dos pacotes com zip align. Porque o Assistente de exportação usa tanto o Keytool como o Jassigner, tu devem assegurar a sua acessibilidade no seu computador, como descrito acima na configuração básica para a Assinatura.
Para criar um assinado e alinhado .apk in Eclipse:
- Seleccione o projecto no Pacote Explorer e seleccione o ficheiro > Exportar.
Abra a pasta Android, seleccione Exportar a aplicação Android e carregue em Proximo.
O Assistente de aplicações Android de exportação começa agora, que irá guiar você através do processo de assinatura sua aplicação, incluindo passos para seleccionar a chave privada com a qual para assinar .apk (ou criar um novo keystore e private key).
- completar o Assistente de exportação e a sua aplicação será compilada, assinado, alinhado e pronto para distribuicao.
apk-signer
introduzido em build-tools 24.0.3
(10/2016)
Processo Automatizado:
Utilize esta ferramenta (usa o novo apksigner do Google):
Https://github.com/patrickfav/uber-apk-signer
Declaração de exoneração de Responsabilidade: Im o programador :)
Processo Manual:
Passo 1: Gerar um teclado (apenas uma vez)
Precisas de gerar uma chave uma vez. e usa-o para assinar o teu apk. Use okeytool
fornecida pelo JDK encontrado em %JAVA_HOME%/bin/
keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app
Passo 2 ou 4: Zipalign
zipalign
que é uma ferramenta fornecida pelo Android SDK encontrada em, por exemplo, %ANDROID_HOME%/sdk/build-tools/24.0.2/
é um passo de otimização obrigatório se você quiser enviar a apk para a Loja de jogos.
zipalign -p 4 my.apk my-aligned.apk
Nota: ao usar o antigo jarsigner
, terá de fazer o zipalign depois de assinar. Ao usar o novo método apksigner
faça-o antes de assinar (confuso, eu sei). invocar o zipalign antes do apksigner funcionar bem porque o apksigner preserva o alinhamento e compressão do APK (ao contrário do jarsigner).
Podes verificar {[24] } O alinhamento com
zipalign -c 4 my-aligned.apk
Passo 3: Assinar E Verificar
Usando ferramentas de compilação 24. 0. 2 e mais antigas
Uso jarsigner
que, como o teclado, vem com a distribuição JDK encontrada em %JAVA_HOME%/bin/
e usá-la assim:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore my-app.apk my_alias_name
E pode ser verificado com
jarsigner -verify -verbose my_application.apk
Usando ferramentas de compilação 24.0.3 e mais recentes
O Android 7.0 introduz o esquema de assinatura de APK v2, um novo esquema de assinatura de app que oferece tempos de instalação mais rápidos e mais protecção contra alterações não autorizadas nos ficheiros APK (ver aqui e aqui para mais detalhes). Thefore Google implementou o seu próprio apk signer chamado apksigner
(duh!)
O ficheiro do programa pode ser encontrado em %ANDROID_HOME%/sdk/build-tools/24.0.3/
(the .jar está na subpasta /lib
. Usa-o como este
apksigner sign --ks my.keystore my-app.apk --ks-key-alias alias_name
E pode ser verificado com
apksigner verify my-app.apk
- exportar o pacote sem assinatura:
Carregue com o botão direito no Projecto do Eclipse -> Ferramentas Android -> exportar o pacote de aplicações não assinado (como aqui exportamos o nosso GoogleDriveApp.apk para o ecrã)
Assine a aplicação usando o seu teclado e o ferramenta jarsigner (siga os passos abaixo):
Abra o cmd-- > mude a pasta onde está o seu " jarsigner.exe" existe (como aqui, no meu sistema, ele existe "C:\Program Files\Java\jdk1.6.0_17\bin"
Agora introduza o comando belwo no cmd:
Jarsigner-verbose-keystore c:\users\android\debug.armazenamento c:\users\pir fahim \ Desktops\GoogleDriveApp.apk my_keystore_alias
Pedir-lhe-á para fornecer a sua senha: Indique a frase-senha do teclado: Vai assinar o seu apk.Para verificar se a assinatura foi bem sucedida, pode executar:
Jarsigner -verificar c:\users\pir fahim\Desktops\GoogleDriveApp.apk
Deve voltar com: jar verificado.
Método 2
Se estiver a usar o eclipse com o ADT, então é simples compilar, assinar, alinhar e preparar o ficheiro para distribuição.o que tens de fazer é seguir estes passos.
- Ficheiro > Exportar.
- exportar a aplicação android
- procurar-- > seleccionar o seu projecto
- Próximo -- > Próximo
Estes passos irão compilar, assinar e alinhar o seu projecto com o zip e agora está pronto para distribuir o seu projecto ou enviar para a Play store do Google.
Para os utilizadores do Intelij IDEA ou do Android Studio, façam estes passos:
* Do menu Build/Generate signed APK
* Você precisa criar um caminho de teclado. Na janela, carregue em Create new
. Você vai criar um arquivo jks que inclui suas chaves. Seleccione a pasta, defina uma senha. Então, o teu teclado está bem.
* Crie uma nova chave para a sua aplicação usando alias, senha da Chave, seu nome, etc.
* Clique em Seguinte.
* Na janela seleccione Proguard ou não.
O teu ficheiro APK assinado é pronto.
Ficheiro de Ajuda: https://www.jetbrains.com/idea/webhelp/generate-signed-apk-wizard.html
APK Signing Process
Para assinar manualmente o ficheiro APK do Android, precisamos de três comandos abaixo.
1 gerar um ficheiro de teclado
keytool -genkey -v -keystore <_YOUR_KEYSTORE_NAME>.keystore -alias <_ALIAS_NAME> -keyalg RSA -keysize 2048 -validity 10000
2 assinar o seu ficheiro APK com o Jarsigner
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <_KEYSTORE_FILE_PATH> <_UNSIGNED_APK_PATH> <_ALIAS_NAME>
3 alinhar a APK assinada com a ferramenta zipalign
zipalign -v 4 <_jarsigned_APK_FILE_PATH> <_ZIPALIGNED_SIGNED_APK_FILE_PATH>
#STEP-1#
Generate Keystore file
F:\ru\ru_doc\Signed_apk\MySignedApp > keytool-genkey-v-keystore <_your_keystore_name>.keystore-também conhecido por -keyalg RSA - keysize 2048-validity 10000
Example_
F:\ru\ru_doc\Signed_apk\MySignedApp>keytool -genkey -v -keystore id.keystore -alias MySignedApp -keyalg RSA -keysize 2048 -validity 10000
Senha do teclado: yourApp@123 senha da chave: yourApp@123
CMD O / P-
D:\ru\SignedBuilds\MySignedApp>keytool -genkey -v -keystore id.keystore
-alias MySignedApp -keyalg RSA -keysize 2048 -validity 10000
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: MySignedApp Sample
What is the name of your organizational unit?
[Unknown]: Information Technology
What is the name of your organization?
[Unknown]: MySignedApp Demo
What is the name of your City or Locality?
[Unknown]: Mumbai
What is the name of your State or Province?
[Unknown]: Maharashtra
What is the two-letter country code for this unit?
[Unknown]: IN
Is CN=MySignedApp Demo, OU=Information Technology, O=MySignedApp Demo, L=Mumbai, ST=Maharashtra, C=IN corr
ect?
[no]: y
Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 10,
000 days
for: CN=MySignedApp Demo, OU=Information Technology, O=MySignedApp Demo, L=Mumbai, ST=Maharashtra,
C=IN
Enter key password for <MySignedApp>
(RETURN if same as keystore password):
Re-enter new password:
They don't match. Try again
Enter key password for <MySignedApp>
(RETURN if same as keystore password):
Re-enter new password:
[Storing id.keystore]
D:\ru\SignedBuilds\MySignedApp>
#STEP-2#
Sign your app with your private keystore using jarsigner
Jarsigner -verbose-sigalg SHA1withRSA -digestalg SHA1 -keystore <_keystore_file_path><_alias_name>
Example_
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore D:\ru\SignedBuilds\MySignedApp\id.keystore D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk id
CMD O / P-
D:\ru\SignedBuilds\MySignedApp>jarsigner -verbose -sigalg SHA1withRSA -
digestalg SHA1 -keystore D:\ru\SignedBuilds\MySignedApp\id.keystore D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk id ---
ect
Enter Passphrase for keystore:
adding: META-INF/MANIFEST.MF
adding: META-INF/---.SF
adding: META-INF/---.RSA
signing: AndroidManifest.xml
.....
signing: classes.dex
signing: lib/commons-codec-1.6.jar
signing: lib/armeabi/libkonyjsvm.so
jar signed.
Warning:
No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not
be able to validate this jar after the signer certificate's expiration date (2044-02-07) or after an
y future revocation date.
D:\ru\SignedBuilds\MySignedApp>
Verify that your APK is signed
Jarsigner-verify-verbose-certs <_jarsigned_apk_>
Example_
jarsigner -verify -verbose -certs MySignedAppS1-release-unsigned.apk
CMD O / P-
D:\ru\SignedBuilds\MySignedApp>jarsigner -verify -verbose -certs MySignedAppS1-release-unsigned.apk
s = signature was verified
m = entry is listed in manifest
k = at least one certificate was found in keystore
i = at least one certificate was found in identity scope
jar verified.
Warning:
This jar contains entries whose certificate chain is not validated.
This jar contains signatures that does not include a timestamp. Without a timestamp, users may not b
e able to validate this jar after the signer certificate's expiration date (2044-02-09) or after any
future revocation date.
D:\ru\SignedBuilds\MySignedApp>
#STEP 3#
Alinhar o pacote final da APK usando o zipalign
Zipalign-v 4 <_jarsigned_apk_file_bath><_zipaligned_signed_apk_file_path_>
Example_
zipalign -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk
CMD O / P-
D:\Android\android-sdk\build-tools\19.1.0>zipalign -v 4 D:\ru\ru_doc\Signed_apk\MySignedApp\28.09.16
_prod_playstore\MySignedAppS1-release-unsigned.apk D:\ru\ru_doc\Signed_apk\MySignedApp\28.09.16_prod
_playstore\MySignedApp.apk
Verifying alignment of D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk (
4)...
4528613 classes.dex (OK - compressed)
5656594 lib/commons-codec-1.6.jar (OK - compressed)
5841869 lib/armeabi/libkonyjsvm.so (OK - compressed)
Verification succesful
D:\Android\android-sdk\build-tools\19.1.0>
Verify that your APK is Aligned succesfully
Zipalign-C-v 4
Example_
zipalign -c -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk
CMD O / P-
D:\Android\android-sdk\build-tools\19.1.0>zipalign -c -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk
Verifying alignment of D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk (
4)...
4453984 res/drawable/zoomout.png (OK)
4454772 res/layout/tabview.xml (OK - compressed)
4455243 res/layout/wheel_item.xml (OK - compressed)
4455608 resources.arsc (OK)
4470161 classes.dex (OK - compressed)
5597923 lib/commons-codec-1.6.jar (OK - compressed)
5783198 lib/armeabi/libkonyjsvm.so (OK - compressed)
Verification succesful
D:\Android\android-sdk\build-tools\19.1.0>
Nota:
Verify
comandos são apenas para verificar o whwther APK é compilado e assinado corretamente!