{ "info": { "author": "Tad Fisher", "author_email": "tadfisher@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Software Development :: Build Tools" ], "description": "android-sdk-updater\n===================\n\nA tool for keeping your Android SDK dependencies up-to-date in unattended environments. Pass it your\n:code:`$ANDROID_HOME` and let it update your installed SDK packages as new revisions are released. Optionally, provide a\nlist of package names (from :code:`android list sdk --all --extended`) to bootstrap your environment, or to ensure your\nlatest set of dependencies are installed for your next CI run.\n\nThis tool is especially useful for continuous-integration servers.\n\nWhy do I need this?\n-------------------\n\nThe command-line tools provided by the SDK are not especially useful for unattended use. Among other problems:\n\n- There is no built-in method to list packages that are already installed. This may be because there is no\n easily-consumed index of installed packages provided, so the SDK manager relies on directory scanning and\n name-mangling. So does this tool, by the way.\n\n- Some packages are unnecessarily downloaded and re-installed with no rhyme or reason when the latest version is already\n installed.\n\n- Some packages are *not* automatically updated when an incremental update is available.\n\n- The package installer requires input from STDIN to actually install packages, because it assumes a human is present to\n accept software licenses.\n\nThis tool performs all of the gritty scanning, mangling, parsing, and input-faking necessary to determine:\n\n- Packages you have installed, and their revisions.\n- Packages that are available from the official update sites, and their revisions.\n- Local packages which should be updated due to an available revision-bump.\n- Which packages were actually installed, and which failed to install, after the installer has run.\n\nThe ultimate goal of this project is to cease its existence when the Android Tools team addresses these pain points.\nThese are mostly solved problems in the GUI tool, but they make unattended builds a hassle.\n\nDisclaimer\n----------\n\n**By using this tool you acknowledge that associated licenses of the components downloaded are accepted automatically on\nyour behalf. You are required to have accepted the respective licenses of these components prior to using this tool.**\n\nRequirements\n------------\n\nTested with Python versions 2.7 and 3.5.\n\nDependencies:\n\n- :code:`jprops`\n- :code:`pexpect`\n- :code:`semantic_version`\n\nInstalling\n----------\n\nUsing :code:`pip`::\n\n $ pip install android-sdk-updater\n\nFrom source::\n\n $ git clone https://github.com/tadfisher/android-sdk-updater.git\n $ cd android-sdk-updater\n $ python setup.py install\n\nFor development::\n\n $ python setup.py develop\n\nUsage\n-----\n\n::\n\n usage: android-sdk-updater [-h] [-v] [-a ANDROID_HOME] [-d] [-t TIMEOUT] [-vv]\n [-o ...] [-s {available,installed,updates}]\n [package [package ...]]\n\n Update an Android SDK installation\n\n positional arguments:\n package name of SDK package to install if not already\n installed\n\n optional arguments:\n -h, --help show this help message and exit\n -v, --version show program's version number and exit\n -a ANDROID_HOME, --android-home ANDROID_HOME\n the path to your Android SDK\n -d, --dry-run compute packages to install but do not install\n anything\n -t TIMEOUT, --timeout TIMEOUT\n timeout in seconds for package installation, or 0 to\n wait indefinitely (default)\n -vv, --verbose show extra output from android tools\n -o ..., --options ...\n options to pass to the \"android\" tool; must be the\n final option specified\n -s {available,installed,updates}, --show {available,installed,updates}\n Show available or installed packages\n\nAdditional whitespace-delimited :code:`package` arguments can be piped to this tool over the standard input.\n\nExamples\n--------\n\nPerform an incremental update of all packages in :code:`$ANDROID_HOME`::\n\n $ android-sdk-updater\n\nPerform an incremental update of all packages in :code:`/foo/sdk`::\n\n $ android-sdk-updater --android-home=/foo/sdk\n\nUpdate all packages in :code:`$ANDROID_HOME` and ensure the installation of packages :code:`android-23` and\n:code:`extra-google-google_play_services`::\n\n $ android-sdk-updater android-23 extra-google-google_play_services\n\nUpdate all packages in :code:`ANDROID_HOME` and ensure the installation of packages contained in a file::\n\n $ cat packages.txt\n tools\n platform-tools\n build-tools-23.0.2\n android-23\n addon-google_apis-google-23\n extra-android-m2repository\n extra-google-m2repository\n extra-android-support\n extra-google-google_play_services\n sys-img-x86_64-addon-google_apis-google-23\n\n $ cat packages.txt | android-sdk-updater\n\nSame as the above, but through a proxy::\n\n $ cat packages.txt | android-sdk-updater -o --no-https --proxy-host example.com --proxy-port 3218\n\nShow installed packages, available packags, or packages with updates::\n\n $ android-sdk-updater -s installed\n\n $ android-sdk-updater -s available\n \n $ android-sdk-updater -s updates\n\nCaveats\n-------\n\nThe Android NDK is not supported. We plan to support installing and updating the NDK in a future release. In the\nmeantime, you may see output that includes the following::\n\n Ignoring 'ndk-bundle' as it is blacklisted.\n\nThese warnings may be safely ignored.\n\nLicense\n-------\n\n::\n\n Copyright 2016 Tad Fisher\n Copyright 2016 Tristan Waddington\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/tadfisher/android-sdk-updater", "keywords": "android", "license": "Copyright 2016 Tad Fisher\nCopyright 2016 Tristan Waddington\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.", "maintainer": null, "maintainer_email": null, "name": "android-sdk-updater", "package_url": "https://pypi.org/project/android-sdk-updater/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/android-sdk-updater/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/tadfisher/android-sdk-updater" }, "release_url": "https://pypi.org/project/android-sdk-updater/1.0.1/", "requires_dist": null, "requires_python": null, "summary": "A command-line utility for keeping your Android dependencies up-to-date.", "version": "1.0.1" }, "last_serial": 2256047, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "be3f20a550c402817c0cb5293bd25139", "sha256": "4e8a9df1e4e863ce64ea4b1f5da1d89c502e77438b892c24bbe412f8e4c6e096" }, "downloads": -1, "filename": "android_sdk_updater-0.0.1-py2.7.egg", "has_sig": false, "md5_digest": "be3f20a550c402817c0cb5293bd25139", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 15863, "upload_time": "2015-11-27T10:34:33", "url": "https://files.pythonhosted.org/packages/c8/fe/6c751de084ab1e7e63bce22f602d6b2d655df3ced24d69de9545a9c093c6/android_sdk_updater-0.0.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "38308b7db9eb8c1d6680b332ab4377ab", "sha256": "f0ce93f9712e43dc487298510f1683d3c14367b9c9ae94fbbc34c0baa71485f4" }, "downloads": -1, "filename": "android_sdk_updater-0.0.1-py3.5.egg", "has_sig": false, "md5_digest": "38308b7db9eb8c1d6680b332ab4377ab", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 16133, "upload_time": "2015-11-27T10:32:19", "url": "https://files.pythonhosted.org/packages/8e/cc/4ba06d298c8e07bf6ffffbeadef5e1a786d1aeaa0220b4b80539763d0d5a/android_sdk_updater-0.0.1-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "9505122d73260a927dcc96459cb4935f", "sha256": "67be6fc60b998f58da1683bbcf35fc22ec4df8d8a3a08f628d7d89140945d4ae" }, "downloads": -1, "filename": "android-sdk-updater-0.0.1.tar.gz", "has_sig": false, "md5_digest": "9505122d73260a927dcc96459cb4935f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9989, "upload_time": "2015-11-27T10:32:00", "url": "https://files.pythonhosted.org/packages/2d/b8/1295e9fdafe0f0c200627db7f3bee1e37ecbaa7d93327b2a055297d3673d/android-sdk-updater-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "a586f90974cb2e0025978c4bad3e5859", "sha256": "2fdc2987e383ec07f01eac5bd0d6d6e3a9c463a69a9ebfd7efb12f3434777f85" }, "downloads": -1, "filename": "android_sdk_updater-0.0.2-py2.7.egg", "has_sig": false, "md5_digest": "a586f90974cb2e0025978c4bad3e5859", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 16224, "upload_time": "2015-12-17T20:19:49", "url": "https://files.pythonhosted.org/packages/48/bd/3d2ef21281e318682abb8ce9ed702e5ff93c0012587d030a74bc1945e75b/android_sdk_updater-0.0.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "d7ca49a67aa26b994477cacb45e08f31", "sha256": "eb69f148d877c906159adfe8e632f412b7efd937540344f2ba0a44b973e42582" }, "downloads": -1, "filename": "android_sdk_updater-0.0.2-py3.5.egg", "has_sig": false, "md5_digest": "d7ca49a67aa26b994477cacb45e08f31", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 16519, "upload_time": "2015-12-17T20:18:34", "url": "https://files.pythonhosted.org/packages/4b/d2/0c8af2a806d54d4c429e9920d1db0225c9e373c8400a83ee6e83786e5e9c/android_sdk_updater-0.0.2-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "32c1b5a3d99542b10afb16bc73e64627", "sha256": "e8634d7f13018b28a13c438f9853eac6d29ec36a54c78b76cb23bf71479c1791" }, "downloads": -1, "filename": "android-sdk-updater-0.0.2.tar.gz", "has_sig": false, "md5_digest": "32c1b5a3d99542b10afb16bc73e64627", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8355, "upload_time": "2015-12-17T20:16:27", "url": "https://files.pythonhosted.org/packages/69/cb/e07a94189abe1e90dac0e9c527c9514720e37fb790b34e7bb3c39a5d303d/android-sdk-updater-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "built for Linux-4.7.0-rc7-mainline-x86_64-with-glibc2.2.5", "digests": { "md5": "57e71e1a8d2ca2495de0287044932c80", "sha256": "6a5e5a639bad2c3a5e21ef038d11220ac4540c9c628a1f5cc686dd220a5f0c6b" }, "downloads": -1, "filename": "android-sdk-updater-0.0.3.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "57e71e1a8d2ca2495de0287044932c80", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 12992, "upload_time": "2016-07-24T23:12:23", "url": "https://files.pythonhosted.org/packages/88/f1/76d33736e007fc64edc486f6ef6eac650bff2e8315ee963380d507bbd133/android-sdk-updater-0.0.3.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "6fe2e8aa5da0d316562e21f6858622fe", "sha256": "4b3253cad28c3366499c559073565d518245eb4ecb80119b9bee197ca90c13cb" }, "downloads": -1, "filename": "android_sdk_updater-0.0.3-py2.7.egg", "has_sig": false, "md5_digest": "6fe2e8aa5da0d316562e21f6858622fe", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 16721, "upload_time": "2016-04-17T01:33:42", "url": "https://files.pythonhosted.org/packages/1b/50/9bf211bb729635f11c16e68fa52dbcb8899d3b3bf5e3118f253ff5396ae6/android_sdk_updater-0.0.3-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "846614dc58163f5c416608ef9352e4c9", "sha256": "5ba60e0afb4480c7d6759e7cca6265b76d63d0e62cdc22ecc1fdb9780c9ea6e5" }, "downloads": -1, "filename": "android_sdk_updater-0.0.3-py3.5.egg", "has_sig": false, "md5_digest": "846614dc58163f5c416608ef9352e4c9", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 17071, "upload_time": "2016-04-17T01:33:47", "url": "https://files.pythonhosted.org/packages/e1/ca/5a75269f648b09f6dc3c47d022227274de73b2a1c76bf16ee09037ef3077/android_sdk_updater-0.0.3-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "1f61ddb8b747e7184fb44ee648209a71", "sha256": "fa73e21b1cac06c382f90c4e00b3daaf4783621f2399b5a233900b5d6a589349" }, "downloads": -1, "filename": "android-sdk-updater-0.0.3.tar.gz", "has_sig": false, "md5_digest": "1f61ddb8b747e7184fb44ee648209a71", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11210, "upload_time": "2016-04-17T01:33:56", "url": "https://files.pythonhosted.org/packages/60/60/bd8cc266bcb1ab727b374eea06b03ab0eb58b14013e72778db6992b2553f/android-sdk-updater-0.0.3.tar.gz" } ], "0.0.4": [], "1.0.0": [ { "comment_text": "", "digests": { "md5": "3145f6bd0f1a607fc625b9f4f68e786e", "sha256": "f9a5831457db5964dc83f492d9adaa97a708af7cc5f47115e24046fcca403842" }, "downloads": -1, "filename": "android_sdk_updater-1.0.0-py2.7.egg", "has_sig": false, "md5_digest": "3145f6bd0f1a607fc625b9f4f68e786e", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 13937, "upload_time": "2016-04-17T01:34:16", "url": "https://files.pythonhosted.org/packages/15/38/b9278d8c5e95df855953d9eadf8f91958e32b73a5261d8cc5f0e2040b62d/android_sdk_updater-1.0.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "381a038445290cc741fe71db07c195b4", "sha256": "f1625fca172ac1cdb5b86d3d809d607c67f85382fb7e3c069dfcc3280f33291b" }, "downloads": -1, "filename": "android_sdk_updater-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "381a038445290cc741fe71db07c195b4", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 13548, "upload_time": "2016-07-24T23:30:18", "url": "https://files.pythonhosted.org/packages/27/14/10b5c4cb33c871908ba45c582741108d3778d5f506cd842dfc851a02a984/android_sdk_updater-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d8996aea336e2f0df7e00a893c88f33c", "sha256": "430952ec1f57593e86ab277538da11072656e304ad43e6ab7ef71cf1f43049f6" }, "downloads": -1, "filename": "android-sdk-updater-1.0.0.tar.gz", "has_sig": false, "md5_digest": "d8996aea336e2f0df7e00a893c88f33c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11404, "upload_time": "2016-07-24T23:30:15", "url": "https://files.pythonhosted.org/packages/ec/19/9b8e06876a981f45e21a17c51975d1603499d8a82089cc35ebe0ac35c1f4/android-sdk-updater-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "e50a57e6003cc6d3d91db1d0fe7bb974", "sha256": "1921dfcfe4b3011484475de4034fc0c2be64718b6d0933a998efc61ab75491b2" }, "downloads": -1, "filename": "android_sdk_updater-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e50a57e6003cc6d3d91db1d0fe7bb974", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 13544, "upload_time": "2016-08-01T18:49:29", "url": "https://files.pythonhosted.org/packages/0b/62/a0ad2a6efb77ae1ecd204bf9ab6fa8adf106b433cd0bd690a7f75abb0b63/android_sdk_updater-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f536b823808402b20e02b1f68728c57", "sha256": "e6452886a11642828b8e22f4e2aac04e6cf70485c94136b8968e33842bc03914" }, "downloads": -1, "filename": "android-sdk-updater-1.0.1.tar.gz", "has_sig": false, "md5_digest": "9f536b823808402b20e02b1f68728c57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9297, "upload_time": "2016-08-01T18:49:26", "url": "https://files.pythonhosted.org/packages/70/2f/7bdc0b67030536125af00df57f6e4681ccd1b143604772809585d5e22ea5/android-sdk-updater-1.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e50a57e6003cc6d3d91db1d0fe7bb974", "sha256": "1921dfcfe4b3011484475de4034fc0c2be64718b6d0933a998efc61ab75491b2" }, "downloads": -1, "filename": "android_sdk_updater-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e50a57e6003cc6d3d91db1d0fe7bb974", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 13544, "upload_time": "2016-08-01T18:49:29", "url": "https://files.pythonhosted.org/packages/0b/62/a0ad2a6efb77ae1ecd204bf9ab6fa8adf106b433cd0bd690a7f75abb0b63/android_sdk_updater-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f536b823808402b20e02b1f68728c57", "sha256": "e6452886a11642828b8e22f4e2aac04e6cf70485c94136b8968e33842bc03914" }, "downloads": -1, "filename": "android-sdk-updater-1.0.1.tar.gz", "has_sig": false, "md5_digest": "9f536b823808402b20e02b1f68728c57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9297, "upload_time": "2016-08-01T18:49:26", "url": "https://files.pythonhosted.org/packages/70/2f/7bdc0b67030536125af00df57f6e4681ccd1b143604772809585d5e22ea5/android-sdk-updater-1.0.1.tar.gz" } ] }