Creates an android package using gradle :param args: parser args :param package_type: one of 'apk', 'aar', 'aab' :return (gradle output, build_args)
(self, args, package_type)
| 1023 | return env |
| 1024 | |
| 1025 | def _build_package(self, args, package_type): |
| 1026 | """ |
| 1027 | Creates an android package using gradle |
| 1028 | :param args: parser args |
| 1029 | :param package_type: one of 'apk', 'aar', 'aab' |
| 1030 | :return (gradle output, build_args) |
| 1031 | """ |
| 1032 | ctx = self.ctx |
| 1033 | dist = self._dist |
| 1034 | bs = Bootstrap.get_bootstrap(args.bootstrap, ctx) |
| 1035 | ctx.prepare_bootstrap(bs) |
| 1036 | self._fix_args(args) |
| 1037 | env = self._prepare_release_env(args) |
| 1038 | |
| 1039 | with current_directory(dist.dist_dir): |
| 1040 | self.hook("before_apk_build") |
| 1041 | os.environ["ANDROID_API"] = str(self.ctx.android_api) |
| 1042 | build = load_source('build', join(dist.dist_dir, 'build.py')) |
| 1043 | build_args = build.parse_args_and_make_package( |
| 1044 | args.unknown_args |
| 1045 | ) |
| 1046 | |
| 1047 | self.hook("after_apk_build") |
| 1048 | self.hook("before_apk_assemble") |
| 1049 | build_tools_versions = os.listdir(join(ctx.sdk_dir, |
| 1050 | 'build-tools')) |
| 1051 | build_tools_version = max_build_tool_version(build_tools_versions) |
| 1052 | info(('Detected highest available build tools ' |
| 1053 | 'version to be {}').format(build_tools_version)) |
| 1054 | |
| 1055 | if Version(build_tools_version.replace(" ", "")) < Version('25.0'): |
| 1056 | raise BuildInterruptingException( |
| 1057 | 'build_tools >= 25 is required, but %s is installed' % build_tools_version) |
| 1058 | if not exists("gradlew"): |
| 1059 | raise BuildInterruptingException("gradlew file is missing") |
| 1060 | |
| 1061 | env["ANDROID_NDK_HOME"] = self.ctx.ndk_dir |
| 1062 | env["ANDROID_HOME"] = self.ctx.sdk_dir |
| 1063 | |
| 1064 | gradlew = sh.Command('./gradlew') |
| 1065 | |
| 1066 | if exists('/usr/bin/dos2unix'): |
| 1067 | # .../dists/bdisttest_python3/gradlew |
| 1068 | # .../build/bootstrap_builds/sdl2-python3/gradlew |
| 1069 | # if docker on windows, gradle contains CRLF |
| 1070 | output = shprint( |
| 1071 | sh.Command('dos2unix'), gradlew._path, |
| 1072 | _tail=20, _critical=True, _env=env |
| 1073 | ) |
| 1074 | if args.build_mode == "debug": |
| 1075 | if package_type == "aab": |
| 1076 | raise BuildInterruptingException( |
| 1077 | "aab is meant only for distribution and is not available in debug mode. " |
| 1078 | "Instead, you can use apk while building for debugging purposes." |
| 1079 | ) |
| 1080 | gradle_task = "assembleDebug" |
| 1081 | elif args.build_mode == "release": |
| 1082 | if package_type in ["apk", "aar"]: |
no test coverage detected