MCPcopy Index your code
hub / github.com/kivy/python-for-android / _build_package

Method _build_package

pythonforandroid/toolchain.py:1025–1094  ·  view source on GitHub ↗

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)

Source from the content-addressed store, hash-verified

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"]:

Callers 3

apkMethod · 0.95
aarMethod · 0.95
aabMethod · 0.95

Calls 11

_fix_argsMethod · 0.95
_prepare_release_envMethod · 0.95
hookMethod · 0.95
current_directoryFunction · 0.90
load_sourceFunction · 0.90
max_build_tool_versionFunction · 0.90
shprintFunction · 0.90
get_bootstrapMethod · 0.80
prepare_bootstrapMethod · 0.80
formatMethod · 0.80

Tested by

no test coverage detected