android - एंड्रॉइड एसडीके स्थापना स्वचालित करने का कोई तरीका है?




android-sdk-tools android-avd (6)

अब मुझे एंड्रॉइड एसडीके एबीडी एवीडी मैनेजर डाउनलोड और इंस्टॉल करना है, और उसके बाद यूआई के माध्यम से एपीआई, टूल्स इंस्टॉल करें। क्या इस प्रक्रिया को स्वचालित करने का कोई तरीका है?


'वाई' के साथ सभी लाइसेंसों का उत्तर देने के लिए, आप इसे स्क्रिप्ट में आजमा सकते हैं:

(while :
do
  echo 'y'
  sleep 2
done) | android update sdk -u .....

आप स्वचालन में जितना करीब आ सकते हैं वह है:

$ android update sdk --no-ui

एंड्रॉइड स्वचालित अपडेट के लिए इन विकल्पों को प्रदान करता है:

Action "update sdk":
  Updates the SDK by suggesting new platforms to install if available.
Options:
  -f --force    Forces replacement of a package or its parts, even if something has been modified
  -u --no-ui    Updates from command-line (does not display the GUI)
  -o --obsolete Installs obsolete packages
  -t --filter   A filter that limits the update to the specified types of packages in the form of
                a comma-separated list of [platform, tool, platform-tool, doc, sample, extra]
  -s --no-https Uses HTTP instead of HTTPS (the default) for downloads
  -n --dry-mode Simulates the update but does not download or install anything

यदि आप सूचीबद्ध करना चाहते हैं कि इंस्टॉलेशन के लिए कौन से पैकेज उपलब्ध हैं, तो आप इसका उपयोग कर सकते हैं

$ android list sdk

और उदाहरण के लिए, आपको संकुलों की एक आदेशित सूची प्राप्त होगी

Packages available for installation or update: 9
   1- ARM EABI v7a System Image, Android API 15, revision 2
   2- Intel x86 Atom System Image, Android API 15, revision 1
   3- Android Support, revision 8
   4- Google AdMob Ads SDK, revision 6
   5- Google Analytics SDK, revision 2
   6- Google Play APK Expansion Library, revision 1
   7- Google Play Billing Library, revision 2
   8- Google Play Licensing Library, revision 2
   9- Google Web Driver, revision 2

यदि आप --filter विकल्प का उपयोग करते हैं तो आप केवल वांछित घटक को अपडेट सीमित कर सकते हैं

$ android update sdk --filter <component> --no-ui

जहां घटक एक या अधिक है

  • android list sdk द्वारा लौटाई गई संख्या (यानी 1 , पैकेज सूचकांक के रूप में भी जानी जाती है )
  • ऐड ऑन
  • दस्तावेज़
  • अतिरिक्त
  • मंच
  • मंच-उपकरण
  • नमूना
  • स्रोत
  • प्रणाली की छवि
  • साधन

या एक या अधिक विशिष्ट पहचानकर्ता हो सकते हैं। उदाहरण के लिए, यदि आप केवल विशिष्ट पैकेजों का एक छोटा सा सेट डाउनलोड करना चाहते हैं, तो आप यह कर सकते हैं:

$ android update sdk -u --filter platform-tools,android-16,extra-android-support

और आपको केवल प्लेटफॉर्म टूल्स, एपीआई लेवल 16 और सपोर्ट पैकेज जार मिलेगा। यह वास्तव में आसान है अगर आप केवल बिल्ड मशीन बना रहे हैं और आपको उन सभी अतिरिक्त सामानों को डाउनलोड करने के लिए भुगतान करना होगा जिन्हें आप कभी भी उपयोग नहीं करेंगे।

उपलब्ध विकल्पों को देखने के लिए आप --help का उपयोग कर सकते हैं, उदाहरण के लिए

$ android --help list sdk

       Usage:
       android [global options] list sdk [action options]
       Global options:
  -h --help       : Help on a specific command.
  -v --verbose    : Verbose mode, shows errors, warnings and all messages.
     --clear-cache: Clear the SDK Manager repository manifest cache.
  -s --silent     : Silent mode, shows errors only.

                   Action "list sdk":
  Lists remote SDK repository.
Options:
  -o --obsolete  : Deprecated. Please use --all instead.
  -a --all       : Lists all available packages (including obsolete and
                   installed ones)
     --proxy-host: HTTP/HTTPS proxy host (overrides settings if defined)
     --proxy-port: HTTP/HTTPS proxy port (overrides settings if defined)
  -s --no-https  : Uses HTTP instead of HTTPS (the default) for downloads.
  -e --extended  : Displays extended details on each package
  -u --no-ui     : Displays list result on console (no GUI) [Default: true]

अद्यतन करें

नवीनतम संस्करण sdkmanager , एक कमांड लाइन उपकरण पेश करते हैं जो आपको एंड्रॉइड एसडीके के लिए पैकेज देखने, इंस्टॉल करने, अपडेट करने और अनइंस्टॉल करने की अनुमति देता है।

sdkmanager उपकरण एंड्रॉइड एसडीके उपकरण पैकेज ( 25.2.3 और उच्चतर ) में प्रदान किया जाता है और एंड्रॉइड_एसडीके android_sdk/tools/bin/ में स्थित है।

  sdkmanager [--uninstall] [<common args>] [--package_file <file>] [<packages>...]
  sdkmanager --update [<common args>]
  sdkmanager --list [<common args>]
  sdkmanager --licenses [<common args>]

In its first form, installs, or uninstalls, or updates packages.
    By default, the listed packages are installed or (if already installed)
    updated to the latest version.

    --uninstall: uninstalled listed packages.

    <package> is a sdk-style path (e.g. "build-tools;23.0.0" or
             "platforms;android-23").
    <package-file> is a text file where each line is a sdk-style path
                   of a package to install or uninstall.
    Multiple --package_file arguments may be specified in combination
    with explicit paths.

In its second form (with --update), all installed packages are
    updated to the latest version.

In its third form, all installed and available packages are printed
    out.

In its fourth form (with --licenses), show and offer the option to
     accept licenses for all available packages that have not already been
     accepted.

Common Arguments:
    --sdk_root=<sdkRootPath>: Use the specified SDK root instead of the SDK 
                              containing this tool

    --channel=<channelId>: Include packages in channels up to <channelId>.
                           Common channels are:
                           0 (Stable), 1 (Beta), 2 (Dev), and 3 (Canary).

    --include_obsolete: With --list, show obsolete packages in the
                        package listing. With --update, update obsolete
                        packages as well as non-obsolete.

    --no_https: Force all connections to use http rather than https.

    --proxy=<http | socks>: Connect via a proxy of the given type.

    --proxy_host=<IP or DNS address>: IP or DNS address of the proxy to use.

    --proxy_port=<port #>: Proxy port to connect to.

* If the env var REPO_OS_OVERRIDE is set to "windows",
  "macosx", or "linux", packages will be downloaded for that OS.

इसलिए, संकुल चलाने के लिए अद्यतन करें

$ sdkmanager --update

लाइसेंस स्वीकार करने के लिए

$ yes | sdkmanager --licenses

नए एंड्रॉइड संस्करणों में (उदाहरण के लिए 25.2.5 ) हमें sdkmanager उपयोग करना चाहिए ( android कमांड के बजाए)

पैकेज स्थापित करने का उदाहरण:

android-sdk/tools/bin/sdkmanager "extras;android;m2repository"

सभी उपलब्ध पैकेजों की सूची प्राप्त करने के लिए आदेश:

 android-sdk/tools/bin/sdkmanager --verbose --list

यह वेब पेज एसडीके-टूल्स के लिए डाउनलोड लिंक सूचीबद्ध करता है:

यहां एक ओपन-सोर्स रिपोजिटरी docker-android का एक लिंक है जो एक डॉकर छवि में एंड्रॉइड स्थापित कर सकता है।

आपको इस SO प्रश्न में भी उत्तर मिल सकते हैं : सभी एसडीके लाइसेंसों को स्वचालित रूप से स्वीकार करें


फिर भी एक और स्क्रिप्ट डाउनलोड करने के लिए केवल आवश्यक, गैर- {obsolute, स्रोत, एम्यूलेटर-छवि, डॉक्टर} पैकेज:

#!/bin/bash
set -e

# cd into where tools/android can be found
if [[ -d "$ANDROID_HOME" ]]; then
  cd "$ANDROID_HOME"
elif [[ -x "$(dirname "$0")/tools/android" ]]; then
  cd "$(dirname "$0")"
else
  echo "FAILED: Cannot find ANDROID_HOME/tools/android"
  exit 1
fi

android () {
  "$(dirname $0)/tools/android" "[email protected]"
}

needed_packages () {
  android list sdk -u -s -e         \
    | grep '^id:'                   \
    | cut -d'"' -f2                 \
    | grep -v 'source'              \
    | grep -v 'sys-img'             \
    | grep -v 'doc'                 \
    | paste -d, -s -
}

main () {
  (while : ; do
  echo 'y'
  sleep 1
  done) | android update sdk -u -s -a -t "$(needed_packages)"
}

main

कुछ हिस्सों को इस धागे में अन्य उत्तरों से लिया जाता है।


मैंने एक रूबी स्क्रिप्ट को एक साथ रखा जो बिना किसी मदद के एसडीके को डाउनलोड और इंस्टॉल कर सकता है। https://github.com/ayvazj/andenv


यह मेरे लिए काम नहीं किया ...

echo "y" | android ....

तो मैं यहां समाप्त हुआ:

expect -c '
set timeout -1   ;
spawn sudo /opt/android-sdk/tools/android update sdk -u; 
expect { 
    "Do you accept the license" { exp_send "y\r" ; exp_continue }
    eof
}
'




android-avd