8
votes

Détecter la configuration de construction (débogage ou libération) au sein du script anti-antérieur

J'ai un script de fourmis qui fait ce qu'il faut faire, mais j'ai besoin de définir quelques valeurs de propriété sur la base de la publication ou du débogage. Comment puis-je faire cela?

Si cela fait une différence, mon script ANT exécute certaines tâches utilitaires personnalisées avant d'effectuer une construction Android.


Pour répondre à ma propre question:

Les propriétés à rechercher sont " build.mode.release " et " build.mode.debug ", mais il y a une réserve > ... si votre manifeste a debuggable = "vrai" , le système revertit au mode de débogage avec une légère "arrivée" (imo)

  1. build.mode.release est pas défini ,
  2. build.mode.debug est non pas défini
  3. La signature de débogage est désactivée (vous devez fournir un keyStore, un alias et un mot de passe)

    Remarque: Ceci s'applique uniquement aux constructions Android


0 commentaires

4 Réponses :


1
votes

ant -d = définira la propriété dans la fourmi


3 commentaires

Je sais que, mais je ne vois pas la partie conditionnelle de cela. Je souhaite soit charger l'un des deux fichiers (version.properties/debug.properties) ou définir manuellement les valeurs de la propriété dans le script en fonction de la configuration. Prenez un chemin de répertoire par exemple, je veux sortir / libération et sortie / débogage


@CopoliII Utilisation Tâche: anth.apache.org/manual/tasks/conditions. HTML


Je suis au courant de la tâche de condition, j'ai besoin de la condition réelle ... quelque chose qui évalue en true si le script anti-ant est exécuté avec "Ant Release" et false avec "Ant Debug" ou inversement. Il doit y avoir une propriété quelque part ... c'est-à-dire à VisualStudio / Msbuild, c'est $ (Configuration), qui évalue à «libérer» ou «débogage»



8
votes

La raison de la "mise en garde" est en fait documentée dans le projet Android Main_Rules.xml Code> ( $ android_sdk_root / Tools / Ant / Main_Rules.xml code>): Xxx pré>

alors ce que vous voulez vérifier est build.mode.debug code> (exécuté via ant débogé code>), build.mode.release code> (quand @ rabuggable = false code> et exécuté avec version ant code>), et enfin à votre mise en garde: build.bugging.debug code> (Quand @ rabuggable = true code> et exécuté avec Version ant code>) p>


Voici un exemple qui fonctionnerait automatiquement: p >

<target name="-my-debug-precompile" if="build.mode.debug">
  <!-- This is executed for any "debug" build ("ant debug") -->
</target>

<target name="-my-release-precompile" unless="build.mode.debug">
  <!-- This is executed for any non-"debug" build (e.g., "ant release",
       regardless of the @debuggable attribute in AndroidManifest.xml) -->
</target>

<!-- This is called automatically by Android's ant tasks, and delegates the
     task to one of the above two targets: -->
<target name="-pre-compile" depends="-my-debug-precompile,-my-release-precompile" />


2 commentaires

Main_Rules est où j'ai trouvé les informations que j'ai postées. Merci :)


@copoliii: La raison pour laquelle j'ai élaboré est parce que vous n'avez pas mentionné la 3ème propriété ( build.packing.debug ) - ce qui est vrai lorsque l'application est supposée Mode de sortie ( Version Ant ), mais est forcé à une construction de débogage en raison de @ rabuggable = true - et n'a pas non plus appelé explicitement pourquoi / I> Votre "mise en garde" s'est produite. Je me rends également compte que vous avez déjà eu une solution qui a fonctionné pour vous et que vous avez décrite par mots, mais comme cela en est ainsi et que d'autres vont trébucher sur cette question plus tard, avoir un exemple d'épelé est utile pour les autres; d'où l'exemple cibles.



3
votes

En tant que mise à jour de la réponse de Joe, on dirait, au moins avec des outils Android révision 22.3, la propriété build.mode.debug n'existe plus, mais vous pouvez utiliser build.is .packaging.debug Pour différencier entre débogage et libération


1 commentaires

M'a pris des heures d'essayer avant de trébucher dessus. Cela ne peut pas être excédité. En effet, il est maintenant build.is.packing.debug



0
votes

Soultion finale pour le module de débogage de Ant et JNI:
1. Dans Custom_Rules.XML, attribuez le mode de débogage à "BuildMode" xxx

  1. Jni / Android.mk, Ajouter après:

    IFEQ ($ (BuildMode), True)
    local_cflags = -Ddebug
    endif


0 commentaires