Determine if swf is in a “debug” player or mode

前端 未结 1 1817
情深已故
情深已故 2021-02-08 23:38

Is there a way using Flash (CS3+AS3) to determine if the published swf is running in a debug player or in Flash\'s debug mode?

I\'m aware that Flex provides the ability

1条回答
  •  借酒劲吻你
    2021-02-09 00:04

    Check out this class http://blog.another-d-mention.ro/programming/how-to-identify-at-runtime-if-swf-is-in-debug-or-release-mode-build/

    This class provides two pertinent (and different) pieces of information:

    • Was the SWF built with the -debug switch (has debug symbols compiled in)?
    • Is the Flash player a debug player (has the ability to display errors, etc)?

    The Capabilities.isDebugger only answers the second question - is the user running the Flash Debug player. In your case, to gate portions of your application on a debug build, you want the -debug build check (and then don't deliver -debug builds into production).

    Note however, that both these checks are runtime checks. Using conditional compilation (aka CONFIG::debug) around your debug code is still a good idea, as it will ensure that possibly sensitive debug code is NOT delivered in the final SWF, making it as small and secure as possible.

    I'm reproducing the referenced code here, in case the blog link ever goes down:

    package org.adm.runtime
    {
      import flash.system.Capabilities;
    
      public class ModeCheck
      {
        /**
         * Returns true if the user is running the app on a Debug Flash Player.
         * Uses the Capabilities class
         **/
        public static function isDebugPlayer() : Boolean
        {
            return Capabilities.isDebugger;
        }
    
        /**
         * Returns true if the swf is built in debug mode
         **/
        public static function isDebugBuild() : Boolean
        {
            var stackTrace:String = new Error().getStackTrace();
            return (stackTrace && stackTrace.search(/:[0-9]+]$/m) > -1);
        }
    
        /**
         * Returns true if the swf is built in release mode
         **/
        public static function isReleaseBuild() : Boolean
        {
            return !isDebugBuild();
        }
      }
    }
    

    0 讨论(0)
提交回复
热议问题