Example #1
0
    def __init__(self, opts):
        self.TAG = "UnityRuntimeCreator"
        common.LOGI(self.TAG, "opts: " + str(opts))
        self.build_sdk = opts["build_sdk"]
        self.workspace = opts["workspace"]
        self.script_path = opts["script_path"]
        self.target = opts["target"]
        if not self.target:
            self.target = "online"

        self.build_replacer_list = []

        self.proj_unityruntime_dir = os.path.join(
            self.script_path, "../../framework/UnityRuntime")
        self.proj_gplayenginebridge_dir = os.path.join(
            self.script_path, "../../framework/GplayEngineBridge")

        self.proj_unityruntime_dir_src_dir = os.path.join(
            self.proj_unityruntime_dir, "src", "main", "java")
        self.proj_gplayenginebridge_src_dir = os.path.join(
            self.proj_gplayenginebridge_dir, "src", "main", "java")

        self.proj_unityruntime_build_dir = os.path.join(
            self.proj_unityruntime_dir, "build")
        self.proj_gplayenginebridge_build_dir = os.path.join(
            self.proj_gplayenginebridge_dir, "build")

        self.version = self._get_version()
        self.versionName = self._get_version_name().replace('"', "")
        common.LOGI(self.TAG, "Runtime SDK versionCode: " + self.version)

        if not opts["out"]:
            self.out_dir = os.path.join(self.workspace, 'out-unityruntime-sdk')
            self.out_dir = os.path.join(
                self.out_dir,
                self._get_version_name().replace('"', ""))
            common.recreate_folder(self.out_dir)
            self.debug_directory = os.path.join(self.workspace, 'debug')
        else:
            self.out_dir = os.path.join(
                opts["out"],
                self._get_version_name().replace('"', ""))
            self.debug_directory = os.path.join(self.out_dir, 'debug')
        self.out_dir_temp = os.path.join(self.workspace,
                                         "out-unityruntime-sdk-temp")
        common.recreate_folder(self.out_dir_temp)

        self.sdk_file_for_runtimesdk_no_dex = os.path.join(
            self.out_dir,
            "libunityruntime-not-dex-" + self.versionName + ".jar")
        self.sdk_file_for_runtimesdk = os.path.join(
            self.out_dir, "libunityruntime-" + self.versionName + ".jar")

        self.sdk_jar_no_dex_obfuscated_path = os.path.join(
            self.out_dir_temp, "libunityruntime-sdk-no-dex-obfuscated.jar")
        self.sdk_jar_dex_path = os.path.join(self.out_dir_temp,
                                             "libunityruntime-sdk-dex.jar")
        self.output_class_path = os.path.join(self.out_dir_temp, "classes")
        self.proguard = not opts["dont_proguard"]
    def run(self):
        common.LOGI(self.TAG, "RUNNING ...")
        self._clean()
        self._generate_cocosruntime_jar_file()
        self._generate_cut_jar_for_runtime_sdk_dex()
        self._clean()

        common.LOGI(self.TAG, "DONE!")
    def __init__(self, opts):
        self.TAG = "GplaySDKCreator"
        common.LOGI(self.TAG, "opts: " + str(opts))
        self.workspace = opts["workspace"]
        self.script_path = opts["script_path"]
        self.proguard = not opts["dont_proguard"]
        self.target = opts["target"]
        if not self.target:
            self.target = "online"

        self.build_replacer_list = []

        self.proj_gplaysdk_dir = os.path.join(
            self.script_path, "../../../GplaySDK/frameworks/GplaySDK")
        self.proj_gplayruntimebridge_dir = os.path.join(
            self.script_path,
            "../../../GplaySDK/frameworks/GplayRuntimeBridge")
        self.proj_gplayunitsdkplugin_dir = os.path.join(
            self.script_path,
            "../../../GplaySDK/frameworks/GplayUnitSDKPlugin")

        common.LOGI(
            self.TAG, "GplaySDK proj_gplaysdk_dir: " +
            os.path.abspath(self.proj_gplaysdk_dir))

        self.version = self._get_version()
        common.LOGI(self.TAG, "GplaySDK version: " + self.version)

        self.proj_gplayunitsdkplugin_src_dir = os.path.join(
            self.proj_gplayunitsdkplugin_dir, "src", "main", "java")
        self.proj_gplayruntimebridge_src_dir = os.path.join(
            self.proj_gplayruntimebridge_dir, "src", "main", "java")
        self.proj_gplaysdk_src_dir = os.path.join(self.proj_gplaysdk_dir,
                                                  "src", "main", "java")

        self.proj_gplayunitsdkplugin_build_dir = os.path.join(
            self.proj_gplayunitsdkplugin_dir, "build")
        self.proj_gplayruntimebridge_build_dir = os.path.join(
            self.proj_gplayruntimebridge_dir, "build")
        self.proj_gplaysdk_build_dir = os.path.join(self.proj_gplaysdk_dir,
                                                    "build")

        if not opts["out"]:
            self.out_dir = os.path.join(self.workspace, "out-gplaysdk")
            common.recreate_folder(self.out_dir)
            self.debug_directory = os.path.join(self.workspace, 'debug')
        else:
            self.out_dir = os.path.join(
                opts["out"],
                self._get_version_name().replace('"', ""))
            self.debug_directory = os.path.join(self.out_dir, 'debug')
        self.sdk_jar_no_dex_obfuscated_path = os.path.join(
            self.out_dir, "libgplaysdk-" + self._get_version_name() + ".jar")
    def __init__(self, opts):
        self.TAG = "CocosRuntimeCreator"
        common.LOGI(self.TAG, "opts: " + str(opts))
        self.workspace = opts["workspace"]
        self.script_path = opts["script_path"]

        if opts["engineVersion"] == "V2":
            self.cocosEnginePath = "../../../GPlayCPSDKCore/engines/CocosEngineV2"
        else:
            self.cocosEnginePath = "../../../GPlayCPSDKCore/engines/CocosEngine"

        self.proj_cocosruntime_dir = os.path.join(self.script_path,
                                                  self.cocosEnginePath)
        self.proj_gplayenginebridge_dir = os.path.join(
            self.script_path, "../../engines/GplayEngineBridge")

        common.LOGI(
            self.TAG, "cocos engine proj_cocosruntime_dir: " +
            os.path.abspath(self.proj_cocosruntime_dir))

        self.proj_cocosruntime_src_dir = os.path.join(
            self.proj_cocosruntime_dir, "src", "main", "java")
        self.proj_gplayenginebridge_src_dir = os.path.join(
            self.proj_gplayenginebridge_dir, "src", "main", "java")

        self.proj_cocosruntime_build_dir = os.path.join(
            self.proj_cocosruntime_dir, "build")
        self.proj_gplayenginebridge_build_dir = os.path.join(
            self.proj_gplayenginebridge_dir, "build")

        self.version = self._get_version()

        if not opts["out"]:
            self.out_dir = os.path.join(self.workspace, "out-cocosruntime")
            self.out_dir = os.path.join(
                self.out_dir,
                self._get_version_name().replace('"', ""))
            common.recreate_folder(self.out_dir)
            self.debug_directory = os.path.join(self.workspace, 'debug')
        else:
            self.out_dir = os.path.join(
                opts["out"],
                self._get_version_name().replace('"', ""))
            self.debug_directory = os.path.join(self.out_dir, 'debug')
        self.out_dir_temp = os.path.join(self.workspace,
                                         "out-cocosruntime-sdk-temp")
        common.recreate_folder(self.out_dir_temp)
        versionName = self._get_version_name().replace('"', "")
        self.sdk_name_for_cocosruntime = "libcocosruntime-" + versionName + ".jar"
        self.sdk_jar_dex_path = os.path.join(self.out_dir_temp,
                                             "libcocosruntime-dex.jar")
        self.sdk_jar_no_dex_obfuscated_path = os.path.join(
            self.out_dir, "libcocosruntime-no-dex-" + versionName + ".jar")
    def run(self):
        common.LOGI(self.TAG, "RUNNING ...")
        self._clean()
        self._replace_product_mode()
        self._set_loader_mode_is_dynamic()
        self._generate_gplaysdk_jar_file()
        self._clean()

        for replacer in self.build_replacer_list:
            replacer.revert()

        common.LOGI(self.TAG, "DONE!")
Example #6
0
    def run(self):
        common.LOGI(self.TAG, "RUNNING ...")
        # Clean temp files before generate classes files
        self._clean()

        if self.build_sdk == "all" or self.build_sdk == "runtime":
            # Generate runtime for normal channel
            self._generate_unityruntime_jar_file()
            self._generate_cut_jar_for_unityruntime_sdk_dex()
            self.revert()

        # clean after build
        self._clean()

        common.LOGI(self.TAG, "DONE!")
Example #7
0
    def _generate_unityruntime_jar_file(self, force_dont_proguard=False):
        common.LOGI(
            self.TAG,
            "Generating runtime sdk jar file ..., force_dont_proguard:" +
            str(force_dont_proguard))

        common.ensure_folder_exists(self.debug_directory)

        proguard_file_path = "None"
        mapping_file_path = "None"
        if not force_dont_proguard and self.proguard:
            proguard_file_path = os.path.join(self.script_path,
                                              "proguard-unityruntime.txt")
            mapping_file_path = os.path.join(
                self.debug_directory,
                "mapping-libunityruntime-" + self.version + ".txt")

        common.run_command(
            "python " +
            os.path.join(self.script_path, "../jar-maker/JarMaker.py") +
            " -s " + self.proj_unityruntime_dir_src_dir + " -s " +
            self.proj_gplayenginebridge_src_dir + " -o " + self.out_dir_temp +
            " -f " + os.path.split(self.sdk_jar_no_dex_obfuscated_path)[-1] +
            " --ref-lib " + os.path.join(self.script_path, "..", "common",
                                         "lib", "android.jar") + " -p " +
            proguard_file_path + " -m " + mapping_file_path)
Example #8
0
    def _clean(self):
        common.LOGI(self.TAG, "Cleaning ...")

        file_to_remove_list = [
            self.out_dir_temp, self.proj_unityruntime_build_dir,
            self.proj_gplayenginebridge_build_dir
        ]

        common.safe_remove_files(file_to_remove_list)
    def run(self):
        common.LOGI(self.TAG, "RUNNING ...")
        # Clean temp files before generate classes files
        self._clean()

        if self.build_sdk == "all" or self.build_sdk == "runtime":
            # Generate runtime for normal channel
            self._set_loader_mode_is_dynamic()
            self._set_runtime_log_enabled(False)
            self._generate_runtimesdk_jar_file()
            self._generate_cut_jar_for_runtime_sdk_dex()
            self.revert()

            self._set_loader_mode_is_dynamic()
            self._set_runtime_log_enabled(True)
            self._generate_runtimesdk_jar_file()
            self._generate_cut_jar_for_runtime_sdk_dex()
            self.revert()

        # clean after build
        self._clean()

        common.LOGI(self.TAG, "DONE!")
Example #10
0
    def _clean(self):
        common.LOGI(self.TAG, "Cleaning ...")

        file_to_remove_list = [
            self.out_dir_temp, self.proj_gplayruntimebridge_build_dir,
            self.proj_gplayunitsdkplugin_build_dir,
            self.proj_runtimesdk_build_dir,
            self.proj_network_library_build_dir,
            self.proj_gplayunitsdk_build_dir,
            self.proj_gplayenginebridge_build_dir,
            self.proj_gplayruntimeparams_build_dir,
            self.proj_gplayunitsdkbridge_build_dir
        ]

        common.safe_remove_files(file_to_remove_list)
Example #11
0
 def _generate_cut_jar_for_runtime_sdk_dex(self):
     common.LOGI(self.TAG, "Generating jar file for runtime sdk ...")
     out_jar_file_name = common.get_file_name(
         self.sdk_jar_no_dex_obfuscated_path)
     jar_cutter_out_dir = os.path.join(self.out_dir_temp,
                                       "jar-cutter-out-for-runtime-dex")
     jar_cutter_config_path = os.path.join(
         self.script_path, "jar-cutter-for-cocosruntime-dex.json")
     self._generate_cut_jar(self.sdk_jar_no_dex_obfuscated_path,
                            jar_cutter_config_path, jar_cutter_out_dir)
     cut_jar_file_path = os.path.join(jar_cutter_out_dir, out_jar_file_name)
     common.generate_dex_jar(cut_jar_file_path, self.sdk_jar_dex_path)
     # Copy dex sdk file to the output directory
     shutil.copy(self.sdk_jar_dex_path,
                 os.path.join(self.out_dir, self.sdk_name_for_cocosruntime))
     # Remove the dex file since it may be generated with the same name
     # in next step (I means generating cut jar for tencent)
     common.safe_remove_file(self.sdk_jar_dex_path)
Example #12
0
def main():
    common.LOGI("SDKCreator.py:main", "main entry ...")

    from optparse import OptionParser

    parser = OptionParser()

    build_sdk = ("all", "gplay", "runtime", "cocosv2", "cocosv3")

    build_target = ("online", "sandbox", "develop")

    parser.add_option("-t",
                      "--target",
                      action="store",
                      type="choice",
                      choices=build_target,
                      dest="target",
                      default="online",
                      help="SDK run in target to be built, could be " + "'" +
                      "', '".join(build_target) + "'")

    parser.add_option("-o",
                      "--out",
                      action="store",
                      type="string",
                      dest="out",
                      default=None,
                      help="The output folder")

    parser.add_option("-b",
                      "--build-sdk",
                      action="store",
                      type="choice",
                      choices=build_sdk,
                      dest="build_sdk",
                      default="all",
                      help="SDK kind to be built, could be " + "'" +
                      "', '".join(build_sdk) + "'")

    parser.add_option("",
                      "--dont-proguard",
                      action="store_true",
                      dest="dont_proguard",
                      default=False,
                      help="Whether to obfuscate java codes")

    (opts, args) = parser.parse_args()

    common.assert_if_failed(
        len(args) == 0,
        "Don't add parameters without `-t`,`-b` and `--dont-proguard`")

    opts = vars(opts)
    opts['workspace'] = os.path.abspath(os.getcwd())
    opts['script_path'] = os.path.dirname(os.path.realpath(__file__))

    if opts["build_sdk"] == "all" or opts["build_sdk"] == "unityv5":
        opts["engineVersion"] = "V5"
        unity_creator = UnityRuntimeCreator(opts)
        _creator_list.append(unity_creator)
        unity_creator.run()
Example #13
0
    def __init__(self, opts):
        self.TAG = "RuntimeSDKCreator"
        common.LOGI(self.TAG, "opts: " + str(opts))
        self.build_sdk = opts["build_sdk"]
        self.workspace = opts["workspace"]
        self.script_path = opts["script_path"]
        self.target = opts["target"]
        if not self.target:
            self.target = "online"

        self.build_replacer_list = []

        self.proj_runtimesdk_dir = os.path.join(
            self.script_path, "../../frameworks/GplayRuntimeSDK")
        self.proj_gplayenginebridge_dir = os.path.join(
            self.script_path, "../../engines/GplayEngineBridge")
        self.proj_gplayunitsdk_dir = os.path.join(
            self.script_path, "../../../GPlayUnitSDK/GplayUnitSDK")
        self.proj_gplayunitsdkbridge_dir = os.path.join(
            self.script_path, "../../../GPlayUnitSDK/GplayUnitSDKBridge")
        self.proj_gplayruntimeparams_dir = os.path.join(
            self.script_path, "../../frameworks/GplayRuntimeParams")
        self.proj_network_library_dir = os.path.join(
            self.script_path, "../../../GplaySDK/library/NoHttp")
        self.proj_gplayruntimebridge_dir = os.path.join(
            self.script_path,
            "../../../GplaySDK/frameworks/GplayRuntimeBridge")
        self.proj_gplayunitsdkplugin_dir = os.path.join(
            self.script_path,
            "../../../GplaySDK/frameworks/GplayUnitSDKPlugin")

        self.proj_gplayruntimebridge_src_dir = os.path.join(
            self.proj_gplayruntimebridge_dir, "src", "main", "java")
        self.proj_gplayunitsdkplugin_src_dir = os.path.join(
            self.proj_gplayunitsdkplugin_dir, "src", "main", "java")
        self.proj_runtimesdk_src_dir = os.path.join(self.proj_runtimesdk_dir,
                                                    "src", "main", "java")
        self.proj_gplayenginebridge_src_dir = os.path.join(
            self.proj_gplayenginebridge_dir, "src", "main", "java")
        self.proj_gplayunitsdk_src_dir = os.path.join(
            self.proj_gplayunitsdk_dir, "src", "main", "java")
        self.proj_gplayunitsdkbridge_src_dir = os.path.join(
            self.proj_gplayunitsdkbridge_dir, "src", "main", "java")
        self.proj_gplayruntimeparams_src_dir = os.path.join(
            self.proj_gplayruntimeparams_dir, "src", "main", "java")
        self.proj_network_library_src_dir = os.path.join(
            self.proj_network_library_dir, "src", "main", "java")

        self.proj_gplayruntimebridge_build_dir = os.path.join(
            self.proj_gplayruntimebridge_dir, "build")
        self.proj_gplayunitsdkplugin_build_dir = os.path.join(
            self.proj_gplayunitsdkplugin_dir, "build")
        self.proj_gplayenginebridge_build_dir = os.path.join(
            self.proj_gplayenginebridge_dir, "build")
        self.proj_runtimesdk_build_dir = os.path.join(self.proj_runtimesdk_dir,
                                                      "build")
        self.proj_gplayenginebridge_build_dir = os.path.join(
            self.proj_gplayenginebridge_dir, "build")
        self.proj_gplayunitsdk_build_dir = os.path.join(
            self.proj_gplayunitsdk_dir, "build")
        self.proj_gplayunitsdkbridge_build_dir = os.path.join(
            self.proj_gplayunitsdkbridge_dir, "build")
        self.proj_gplayruntimeparams_build_dir = os.path.join(
            self.proj_gplayruntimeparams_dir, "build")
        self.proj_network_library_build_dir = os.path.join(
            self.proj_network_library_dir, "build")

        self.version = self._get_version()
        common.LOGI(self.TAG, "Runtime SDK versionCode: " + self.version)

        if not opts["out"]:
            self.out_dir = os.path.join(self.workspace, 'out-runtime-sdk')
            self.out_dir = os.path.join(
                self.out_dir,
                self._get_version_name().replace('"', ""))
            common.recreate_folder(self.out_dir)
            self.debug_directory = os.path.join(self.workspace, 'debug')
        else:
            self.out_dir = os.path.join(
                opts["out"],
                self._get_version_name().replace('"', ""))
            self.debug_directory = os.path.join(self.out_dir, 'debug')
        self.out_dir_temp = os.path.join(self.workspace,
                                         "out-runtime-sdk-temp")
        common.recreate_folder(self.out_dir_temp)

        self.sdk_jar_no_dex_obfuscated_path = os.path.join(
            self.out_dir_temp, "libruntime-sdk-no-dex-obfuscated.jar")
        self.sdk_jar_dex_path = os.path.join(self.out_dir_temp,
                                             "libruntime-sdk-dex.jar")
        self.output_class_path = os.path.join(self.out_dir_temp, "classes")
        self.proguard = not opts["dont_proguard"]
Example #14
0
    def _clean(self):
        common.LOGI(self.TAG, "Cleaning ...")

        common.safe_remove_file(self.proj_gplayunitsdkplugin_build_dir)
        common.safe_remove_file(self.proj_gplayruntimebridge_build_dir)
        common.safe_remove_file(self.proj_gplaysdk_build_dir)
Example #15
0
        creator = APKCreator(opts)
        _creator_list.append(creator)
        creator.run()

    # Build all projects if -p wasn't assigned
    if len(opts["project"]) == 0:
        for info in _sample_project_list:
            build_project(info)
    else:
        for info in _sample_project_list:
            if info["project_name"] in opts["project"]:
                build_project(info)


if __name__ == '__main__':
    sys.path.append(
        os.path.join(
            os.path.split(os.path.realpath(__file__))[0], '..', 'common'))
    import common
    try:
        main()
    except Exception as e:
        if e.__class__.__name__ == "ErrorMessage":
            common.LOGE("APKCreator.py", e.message)
            sys.exit(1)
        else:
            raise
    finally:
        common.LOGI("APKCreator.py", "Script execution finished!")
        revert()
Example #16
0
    opts['workspace'] = os.path.dirname(os.path.realpath(__file__))

    publisher = Publisher(opts)
    publisher.run()


if __name__ == '__main__':
    sys.path.append(
        os.path.join(
            os.path.split(os.path.realpath(__file__))[0], '..', 'common'))
    import common
    try:
        main()
    except Exception as e:
        if e.__class__.__name__ == "ErrorMessage":
            common.LOGE("publish.py", e.message)
            sys.exit(1)
        else:
            raise
    finally:
        common.LOGI("publish.py",
                    "***************************************************")
        if _success:
            common.LOGI("publish.py",
                        "***** Congratuations, publishing SDK succeed! *****")
        else:
            common.LOGI("publish.py",
                        "***** ERROR, publishing SDK failed! *****")
        common.LOGI("publish.py",
                    "***************************************************")