Set Android variables and write Android SDK WORKSPACE rule.
(environ_cp)
| 709 | |
| 710 | |
| 711 | def create_android_sdk_rule(environ_cp): |
| 712 | """Set Android variables and write Android SDK WORKSPACE rule.""" |
| 713 | if is_windows() or is_cygwin(): |
| 714 | default_sdk_path = cygpath('%s/Android/Sdk' % environ_cp['APPDATA']) |
| 715 | elif is_macos(): |
| 716 | default_sdk_path = '%s/library/Android/Sdk' % environ_cp['HOME'] |
| 717 | else: |
| 718 | default_sdk_path = '%s/Android/Sdk' % environ_cp['HOME'] |
| 719 | |
| 720 | def valid_sdk_path(path): |
| 721 | return (os.path.exists(path) and |
| 722 | os.path.exists(os.path.join(path, 'platforms')) and |
| 723 | os.path.exists(os.path.join(path, 'build-tools'))) |
| 724 | |
| 725 | android_sdk_home_path = prompt_loop_or_load_from_env( |
| 726 | environ_cp, |
| 727 | var_name='ANDROID_SDK_HOME', |
| 728 | var_default=default_sdk_path, |
| 729 | ask_for_var='Please specify the home path of the Android SDK to use.', |
| 730 | check_success=valid_sdk_path, |
| 731 | error_msg=('Either %s does not exist, or it does not contain the ' |
| 732 | 'subdirectories "platforms" and "build-tools".')) |
| 733 | |
| 734 | platforms = os.path.join(android_sdk_home_path, 'platforms') |
| 735 | api_levels = sorted(os.listdir(platforms)) |
| 736 | api_levels = [x.replace('android-', '') for x in api_levels] |
| 737 | |
| 738 | def valid_api_level(api_level): |
| 739 | return os.path.exists( |
| 740 | os.path.join(android_sdk_home_path, 'platforms', |
| 741 | 'android-' + api_level)) |
| 742 | |
| 743 | android_api_level = prompt_loop_or_load_from_env( |
| 744 | environ_cp, |
| 745 | var_name='ANDROID_API_LEVEL', |
| 746 | var_default=api_levels[-1], |
| 747 | ask_for_var=('Please specify the Android SDK API level to use. ' |
| 748 | '[Available levels: %s]') % api_levels, |
| 749 | check_success=valid_api_level, |
| 750 | error_msg='Android-%s is not present in the SDK path.') |
| 751 | |
| 752 | build_tools = os.path.join(android_sdk_home_path, 'build-tools') |
| 753 | versions = sorted(os.listdir(build_tools)) |
| 754 | |
| 755 | def valid_build_tools(version): |
| 756 | return os.path.exists( |
| 757 | os.path.join(android_sdk_home_path, 'build-tools', version)) |
| 758 | |
| 759 | android_build_tools_version = prompt_loop_or_load_from_env( |
| 760 | environ_cp, |
| 761 | var_name='ANDROID_BUILD_TOOLS_VERSION', |
| 762 | var_default=versions[-1], |
| 763 | ask_for_var=('Please specify an Android build tools version to use. ' |
| 764 | '[Available versions: %s]') % versions, |
| 765 | check_success=valid_build_tools, |
| 766 | error_msg=('The selected SDK does not have build-tools version %s ' |
| 767 | 'available.')) |
| 768 |
no test coverage detected