Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  android-sdk.configure   Sprache: unbekannt

 
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

# Ensure Android SDK and build-tools versions depending on mobile target.


@depends(host, toolchains_base_dir, "--help")
@imports(_from="os.path", _import="isdir")
def default_android_sdk_root(host, toolchains_base_dir, _):
    sdk_basename = {
        "Darwin": "android-sdk-macosx",
        "Linux": "android-sdk-linux",
        "WINNT": "android-sdk-windows",
    }.get(host.kernel, "android-sdk")
    for sdk_basename in (sdk_basename, "android-sdk"):
        path = os.path.join(toolchains_base_dir, sdk_basename)
        if isdir(path):
            return path


option(
    "--with-android-sdk",
    nargs=1,
    default=default_android_sdk_root,
    help="Location where the Android SDK can be found (like ~/.mozbuild/android-sdk-linux){|}",
)


@depends("--with-android-sdk")
@imports(_from="os.path", _import="isdir")
def android_sdk_root(value):
    if value:
        if not isdir(value[0]):
            die(
                "The path you specified with --with-android-sdk (%s) is not "
                "a directory" % value[0]
            )
        return value[0]

    die(
        "You must specify --with-android-sdk=/path/to/sdk when targeting Android, "
        "or try |mach bootstrap|."
    )


@dependable
def android_sdk_version():
    # We support Android SDK version 21 and up by default.
    # See the --enable-android-min-sdk option below.
    #
    # Warning: Before increasing the with-android-min-sdk value, please note several places in
    # and out of tree have to be changed. Otherwise, places like Treeherder or archive.mozilla.org
    # will advertise a bad API level. This may confuse people. As an example, please look at
    # bug 1384482.
    # If you think you can't handle the whole set of changes, please reach out to the Release
    # Engineering team.
    return namespace(
        build_tools_version="35.0.0",
        compile_sdk_version="35",
        target_sdk_version="35",
        min_sdk_version="21",
    )


option(
    "--with-android-min-sdk",
    default=android_sdk_version.min_sdk_version,
    help="Impose a minimum Firefox for Android SDK version",
)


@depends("--with-android-min-sdk", android_sdk_version.target_sdk_version)
@imports(_from="__builtin__", _import="ValueError")
def valid_android_min_sdk(min_sdk_version, target_sdk_version):
    if not min_sdk_version:
        die("--without-android-min-sdk is not a valid option")
    try:
        if int(min_sdk_version[0]) > int(target_sdk_version):
            die(
                "--with-android-min-sdk is expected to be less than {}".format(
                    target_sdk_version
                )
            )
    except ValueError:
        die("--with-android-min-sdk takes a numerical value")
    return min_sdk_version[0]


set_config("MOZ_ANDROID_MIN_SDK_VERSION", valid_android_min_sdk)


@depends(android_sdk_root, android_sdk_version)
@checking("for Android build-tools")
@imports(_from="os.path", _import="exists")
@imports(_from="os.path", _import="isdir")
def android_build_tools(sdk_root, sdk_version):
    android_build_tools_base = os.path.join(sdk_root, "build-tools")
    version = sdk_version.build_tools_version
    if isdir(os.path.join(android_build_tools_base, version)):
        tools = os.path.join(android_build_tools_base, version)
        for zipalign in ("zipalign", "zipalign.exe"):
            if exists(os.path.join(tools, zipalign)):
                return [tools]

    die(
        "You must install the Android build-tools version %s.  "
        "Try |mach bootstrap|.  (Looked for %s/%s)"
        % (version, android_build_tools_base, version)
    )


@depends(android_sdk_root)
@checking("for Android platform-tools")
@imports(_from="os.path", _import="exists")
@imports(_from="os.path", _import="isdir")
def android_platform_tools(sdk_root):
    tools = os.path.join(sdk_root, "platform-tools")
    for adb in ("adb", "adb.exe"):
        if exists(os.path.join(tools, adb)):
            return [tools]

    die(
        "You must install the Android platform-tools.  Try |mach bootstrap|.  (Looked for %s)"
        % tools
    )


@depends(android_sdk_root)
def android_emulator_path(sdk_root):
    return [os.path.join(sdk_root, "emulator")]


@template
def check_android_tools(tool, tool_dir):
    check = check_prog(
        tool.upper(), (tool, tool + ".exe"), paths=tool_dir, allow_missing=True
    )

    @depends(check)
    def require_tool(result):
        if result is None:
            die("The program %s was not found.  Try |mach bootstrap|" % tool)
        return result

    return require_tool


check_android_tools("zipalign", android_build_tools)
check_android_tools("adb", android_platform_tools)
check_android_tools("emulator", android_emulator_path)

set_config("ANDROID_SDK_ROOT", android_sdk_root)

set_config("ANDROID_BUILD_TOOLS_VERSION", android_sdk_version.build_tools_version)
set_config("ANDROID_TARGET_SDK", android_sdk_version.target_sdk_version)
set_config("ANDROID_COMPILE_SDK", android_sdk_version.compile_sdk_version)

[ Dauer der Verarbeitung: 0.24 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge