Пример #1
0
def check_environment_variable(var):
    ''' Checking the environment variable, if found then return it's value, else raise error
    '''
    try:
        value = ExtendEnv.get_extend_env_value(var)
        if value is None:
            value = os.environ[var]
    except Exception:
        raise CCPluginError(
            MultiLanguage.get_string('COCOS_ERROR_ENV_NOT_DEFINED_FMT', var),
            CCPluginError.ERROR_ENV_VAR_NOT_FOUND)

    return value
Пример #2
0
    def compile_android(self):
        # build .so for android
        CONSOLE_PATH = "tools/cocos2d-console/bin"
        ANDROID_A_PATH = "frameworks/runtime-src/proj.android/obj/local"

        android_out_dir = os.path.join(self.lib_dir, "android")
        engine_dir = self.repo_x
        console_dir = os.path.join(engine_dir, CONSOLE_PATH)
        if cocos.os_is_win32():
            cmd_path = os.path.join(console_dir, "cocos.bat")
        else:
            cmd_path = os.path.join(console_dir, "cocos")

        # build the simulator project
        proj_path = os.path.join(engine_dir, 'tools/simulator')
        build_cmd = "%s compile -s %s -p android --ndk-mode %s --app-abi %s" % (
            cmd_path, proj_path, self.mode, self.app_abi)

        env_param = ExtendEnv.get_extend_env_str()
        if env_param and len(env_param) > 0:
            build_cmd += (' --env "%s"' % env_param)
        self._run_cmd(build_cmd)

        # copy .a to prebuilt dir
        obj_dir = os.path.join(proj_path, ANDROID_A_PATH)
        copy_cfg = {
            "from": obj_dir,
            "to": android_out_dir,
            "include": ["*.a$"]
        }
        cocos.copy_files_with_config(copy_cfg, obj_dir, android_out_dir)

        if not self.disable_strip:
            # strip the android libs
            ndk_root = cocos.check_environment_variable("NDK_ROOT")
            if cocos.os_is_win32():
                if cocos.os_is_32bit_windows():
                    check_bits = ["", "-x86_64"]
                else:
                    check_bits = ["-x86_64", ""]

                sys_folder_name = "windows"
                for bit_str in check_bits:
                    check_folder_name = "windows%s" % bit_str
                    check_path = os.path.join(
                        ndk_root,
                        "toolchains/arm-linux-androideabi-4.8/prebuilt/%s" %
                        check_folder_name)
                    if os.path.isdir(check_path):
                        sys_folder_name = check_folder_name
                        break
            elif cocos.os_is_mac():
                sys_folder_name = "darwin-x86_64"
            else:
                sys_folder_name = "linux-x86_64"

            # set strip execute file name
            if cocos.os_is_win32():
                strip_execute_name = "strip.exe"
            else:
                strip_execute_name = "strip"

            # strip arm libs
            strip_cmd_path = os.path.join(
                ndk_root,
                "toolchains/arm-linux-androideabi-4.8/prebuilt/%s/arm-linux-androideabi/bin/%s"
                % (sys_folder_name, strip_execute_name))
            if os.path.exists(strip_cmd_path):
                armlibs = ["armeabi", "armeabi-v7a"]
                for fold in armlibs:
                    self.trip_libs(strip_cmd_path,
                                   os.path.join(android_out_dir, fold))

            # strip x86 libs
            strip_cmd_path = os.path.join(
                ndk_root,
                "toolchains/x86-4.8/prebuilt/%s/i686-linux-android/bin/%s" %
                (sys_folder_name, strip_execute_name))
            if os.path.exists(strip_cmd_path) and os.path.exists(
                    os.path.join(android_out_dir, "x86")):
                self.trip_libs(strip_cmd_path,
                               os.path.join(android_out_dir, 'x86'))
Пример #3
0
        MultiLanguage.set_language(sys.argv[idx + 1])

        # remove the argument '--ol' & the value
        sys.argv.pop(idx)
        sys.argv.pop(idx)

    # Parse the extend environment variables
    env_arg = '--env'
    if env_arg in sys.argv:
        idx = sys.argv.index(env_arg)
        if idx == (len(sys.argv) - 1):
            Logging.error(MultiLanguage.get_string('COCOS_ERROR_ENV_NO_VALUE'))
            sys.exit(CCPluginError.ERROR_WRONG_ARGS)

        # add extend environment variables
        ExtendEnv.parse_extend_env(sys.argv[idx + 1])

        # remove the argument '--env' & the value
        sys.argv.pop(idx)
        sys.argv.pop(idx)

    if not _check_python_version():
        DataStatistic.terminate_stat()
        sys.exit(CCPluginError.ERROR_TOOLS_NOT_FOUND)

    parser = Cocos2dIniParser()
    plugins_path = parser.get_plugins_path()
    sys.path.append(plugins_path)

    if len(sys.argv) == 1 or sys.argv[1] in ('-h', '--help'):
        help()
Пример #4
0
    def compile_android(self):
        # build .so for android
        CONSOLE_PATH = "tools/cocos2d-console/bin"
        ANDROID_A_PATH = "frameworks/runtime-src/proj.android/obj/local"
        if self.use_studio is not None:
            ANDROID_A_PATH = "frameworks/runtime-src/proj.android-studio/app/build/intermediates/ndkBuild/" + self.mode + "/obj/local"

        android_out_dir = os.path.join(self.lib_dir, "android")
        engine_dir = self.repo_x
        console_dir = os.path.join(engine_dir, CONSOLE_PATH)
        cocos_py_path = os.path.join(console_dir, 'cocos.py')

        # build the simulator project
        proj_path = os.path.join(engine_dir, 'tools/simulator')
        python_path = cocos.check_environment_variable('COCOS_PYTHON_HOME',
                                                       raise_error=False)
        if python_path is None:
            python_path = 'python'
        else:
            python_path = os.path.join(python_path, 'python')
        build_cmd = "\"%s\" \"%s\" compile -s %s -p android --ndk-mode %s --app-abi %s -m %s" % (
            python_path, cocos_py_path, proj_path, self.mode, self.app_abi,
            self.mode)
        if self.android_platform is not None:
            build_cmd += ' --ap %s' % self.android_platform
        if self.use_studio is not None:
            build_cmd += ' --android-studio'

        env_param = ExtendEnv.get_extend_env_str()
        if env_param and len(env_param) > 0:
            build_cmd += (' --env "%s"' % env_param)
        self._run_cmd(build_cmd)

        # copy .a to prebuilt dir
        obj_dir = os.path.join(proj_path, ANDROID_A_PATH)
        copy_cfg = {
            "from": obj_dir,
            "to": android_out_dir,
            "include": ["*.a$"]
        }
        cocos.copy_files_with_config(copy_cfg, obj_dir, android_out_dir)

        if not self.disable_strip:
            # strip the android libs
            ndk_root = cocos.check_environment_variable("NDK_ROOT")
            if cocos.os_is_win32():
                if cocos.os_is_32bit_windows():
                    check_bits = ["", "-x86_64"]
                else:
                    check_bits = ["-x86_64", ""]

                sys_folder_name = "windows"
                for bit_str in check_bits:
                    check_folder_name = "windows%s" % bit_str
                    check_path = os.path.join(
                        ndk_root,
                        "toolchains/arm-linux-androideabi-4.9/prebuilt/%s" %
                        check_folder_name)
                    if os.path.isdir(check_path):
                        sys_folder_name = check_folder_name
                        break
            elif cocos.os_is_mac():
                sys_folder_name = "darwin-x86_64"
            else:
                sys_folder_name = "linux-x86_64"

            # set strip execute file name
            if cocos.os_is_win32():
                strip_execute_name = "strip.exe"
            else:
                strip_execute_name = "strip"

            # strip arm libs
            strip_cmd_path = os.path.join(
                ndk_root,
                "toolchains/arm-linux-androideabi-4.9/prebuilt/%s/arm-linux-androideabi/bin/%s"
                % (sys_folder_name, strip_execute_name))
            if os.path.exists(strip_cmd_path):
                armlibs = ["armeabi", "armeabi-v7a"]
                for fold in armlibs:
                    self.trip_libs(strip_cmd_path,
                                   os.path.join(android_out_dir, fold))
            else:
                raise Exception("(%s) wasn't found." % strip_cmd_path)

            # strip arm64-v8a libs
            strip_cmd_path = os.path.join(
                ndk_root,
                "toolchains/aarch64-linux-android-4.9/prebuilt/%s/aarch64-linux-android/bin/%s"
                % (sys_folder_name, strip_execute_name))
            if os.path.exists(strip_cmd_path):
                if os.path.exists(os.path.join(android_out_dir, "arm64-v8a")):
                    self.trip_libs(strip_cmd_path,
                                   os.path.join(android_out_dir, 'arm64-v8a'))
            else:
                raise Exception("(%s) wasn't found." % strip_cmd_path)

            # strip x86 libs
            strip_cmd_path = os.path.join(
                ndk_root,
                "toolchains/x86-4.9/prebuilt/%s/i686-linux-android/bin/%s" %
                (sys_folder_name, strip_execute_name))
            if os.path.exists(strip_cmd_path):
                if os.path.exists(os.path.join(android_out_dir, "x86")):
                    self.trip_libs(strip_cmd_path,
                                   os.path.join(android_out_dir, 'x86'))
            else:
                raise Exception("(%s) wasn't found." % strip_cmd_path)