40 votes

Comment puis-je spécifier l'emplacement du fichier de clés de débogage pour les versions Android et les versions de débogage?

Est-il possible de spécifier l'emplacement d'un auto créé de débogage du fichier de clés lors de la création de débogage .apks' (<project-name>-debug.apk) avec ant debug? Je ne vois que la possibilité de spécifier l'emplacement de la sortie de magasin de clés.

Je voudrais partager le déboguer le fichier de clés sur plusieurs PC sans les copier sur celui qui est placé dans le '.android' annuaire. Le débogage du fichier de clés pourrait, par exemple, de séjourner dans le référentiel de code source. Mais j'ai besoin d'un moyen de dire fourmi où trouver le débogage du fichier de clés.

20voto

codemonkey Points 3509

Vous devriez être en mesure de spécifier le fichier de clés à utiliser avec ces propriétés

key.store=/path/to/key.keystore
key.alias=alias
key.store.password=pass
key.alias.password=pass

Il suffit de passer les propriétés dans Ant.

[MODIFIER] À partir de la documentation à http://developer.android.com/guide/publishing/app-signing.html#setup

Le Android outils de génération de fournir un debug mode de signature qui rend plus facile pour vous de développer et déboguer votre application, tout en respectant le système Android exigence de la signature de votre .apk. Lorsque vous utilisez le mode de débogage pour construire votre application, le SDK outils invoquer Keytool pour créer automatiquement un déboguer le fichier de stockage des clés et des clés. Cette clé de débogage est ensuite utilisé pour connecter automatiquement le .apk, de sorte que vous n'avez pas besoin de signer le package avec votre propre clé.

Le SDK de créer des outils de débogage du fichier de clés/key avec prédéterminée de noms/mots de passe:

Nom de stockage: de débogage".keystore" Mot de passe du fichier de clés: "android" Clé alias: "androiddebugkey" Mot de passe de clé: "android" CN: "CN=Android Debug,O=Android,C=US" Si nécessaire, vous pouvez modifier l'emplacement et le nom du débogage du fichier de clés/key ou la fourniture d'une coutume de débogage du fichier de clés/clé à utiliser. Cependant, toute coutume de débogage du fichier de clés/key doivent utiliser le même fichier de clés/key noms et mots de passe par défaut clé de débogage (comme décrit ci-dessus). (À faire dans Eclipse/ADT, allez dans Fenêtre > Préférences > Android > Construire.)

11voto

heathkit Points 338

Autant que je sache, pour ce faire, vous devez remplacer la cible "-do-debug". J'aimerais savoir s'il existe un moyen plus élégant. J'ai ajouté ceci à mon build.xml

 <property name="build.is.signing.debug" value="false"/>
<target name="-do-debug" depends="-set-debug-mode, -debug-obfuscation-check, -package, -post-package">
    <!-- only create apk if *not* a library project -->
    <do-only-if-not-library elseText="Library project: do not create apk..." >
        <sequential>
            <property name="out.unaligned.file" location="${out.absolute.dir}/${ant.project.name}-debug-unaligned.apk" />

            <!-- Signs the APK -->
            <echo>Signing final apk...</echo>
            <signjar
                    jar="${out.packaged.file}"
                    signedjar="${out.unaligned.file}"
                    keystore="${key.store}"
                    storepass="${key.store.password}"
                    alias="${key.alias}"
                    keypass="${key.alias.password}"
                    verbose="${verbose}" />

            <!-- Zip aligns the APK -->
            <zipalign-helper
                    in.package="${out.unaligned.file}"
                    out.package="${out.final.file}" />
            <echo>Debug Package: ${out.final.file}</echo>
        </sequential>
    </do-only-if-not-library>
    <record-build-info />
</target>
<import file="${sdk.dir}/tools/ant/build.xml" />
 

4voto

Harald Wilhelm Points 2760
  • Créez un nouveau dossier vide dans votre espace de travail Eclipse.

  • Copiez le fichier "debug.keystore" à partir de son emplacement standard (par exemple, "c: /Users/YourAcount/.Android/" sous Windows) dans ce nouveau répertoire.

  • Configurez Eclipse pour utiliser ce nouveau répertoire / fichier pour tous les APK de débogage (Eclipse -> Fenêtre -> Préférences -> Android -> Construire -> Fichier de clés de débogage personnalisé ".

4voto

Russell Collins Points 41

Une méthode simple que vous pouvez utiliser comme solution de contournement (ce qui est particulièrement agréable dans notre système de CI où de nombreux projets sont construits et où une manipulation douce est requise lorsque vous gérez des magasins de clés) consiste à exécuter la génération de débogage à l'aide de la méthode AAPT. pour supprimer le contenu du dossier META-INF et exécutez jarsigner pour le signer avec votre debug.keystore personnalisé.

Dans le pseudo-script, cela ressemble à: # Normal Ant debug build ant debug

 # Remove default debug signing
aapt remove YourDebugApp.apk META-INF/MANIFEST.MF
aapt remove YourDebugApp.apk META-INF/CERT.SF
aapt remove YourDebugApp.apk META-INF/CERT.RSA

# Use Jarsigner and the custom debug.keystore. 
# NOTE: This assumes you explicitly called out MD5withRSA as your signing algorithm 
# when you generated the key; drop the -sigalg tag if you did not.
jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore my-release-key.keystore -storepass android YourDebugApp.apk

# Verify signing
jarsigner -verify YourDebugApp.apk
 

4voto

user2439283 Points 21

Vous pouvez supprimer la signature de l'apk final et la signer à nouveau. C'est juste une construction de débogage afin d'éviter le zipalign (au moins je n'ai aucun problème dans ma construction).

Copiez votre magasin de clés dans un fichier debug.keystore du projet et ajoutez les éléments suivants dans ant.properties

 debug.key.store.password=android
debug.key.alias.password=android
debug.key.store=../debug.keystore
debug.key.alias=androiddebugkey
 

Et ajoutez ce qui suit dans votre build.xml

 <target name="-post-build" if="${build.is.packaging.debug}">
    <!-- Remove the signature of the debug build, and sign it again with our own debug keystore -->
    <delete dir="tmp" includeemptydirs="true" failonerror="false" />
    <mkdir dir="tmp" />
    <unzip src="${out.final.file}" dest="tmp" />
    <delete dir="tmp/META-INF" includeemptydirs="true" verbose="true" failonerror="true" />
    <delete file="${out.final.file}" failonerror="true" />
    <zip destfile="${out.final.file}" basedir="tmp" />
    <delete dir="tmp" includeemptydirs="true" failonerror="false" /> 

    <echo level="info">Signing final DEBUG apk with a common signature...
        signapk
            input="${out.final.file}"
            output="${out.packaged.file}"
            keystore="${debug.key.store}"
            storepass="${debug.key.store.password}"
            alias="${debug.key.alias}"
            keypass="${debug.key.alias.password}"
    </echo>

    <signapk
        input="${out.final.file}"
        output="${out.packaged.file}"
        keystore="${debug.key.store}"
        storepass="${debug.key.store.password}"
        alias="${debug.key.alias}"
        keypass="${debug.key.alias.password}"/>

    <delete file="${out.final.file}" failonerror="true" />
    <move file="${out.packaged.file}" tofile="${out.final.file}" failonerror="true" />

</target>
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X