এখন আমাকে অ্যান্ড্রয়েড এসডিকে এবং এভিডি ম্যানেজারটি ডাউনলোড এবং ইনস্টল করতে হবে এবং তারপরে ইউআই এর মাধ্যমে এপিআই, সরঞ্জামগুলি ইনস্টল করতে হবে। এই প্রক্রিয়াটি স্বয়ংক্রিয় করার কোনও উপায় আছে কি?
এখন আমাকে অ্যান্ড্রয়েড এসডিকে এবং এভিডি ম্যানেজারটি ডাউনলোড এবং ইনস্টল করতে হবে এবং তারপরে ইউআই এর মাধ্যমে এপিআই, সরঞ্জামগুলি ইনস্টল করতে হবে। এই প্রক্রিয়াটি স্বয়ংক্রিয় করার কোনও উপায় আছে কি?
উত্তর:
সর্বশেষ সংস্করণগুলি উপস্থাপন করে 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
(দয়া করে নোট করুন: অ্যান্ড্রয়েড কমান্ডটি অবচয় করা হয়েছে!)
অটোমেশনে আপনি যত কাছাকাছি যেতে পারবেন সম্ভবত:
$ 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]
Error: Ignoring unknown package filter 'tools'
বা তত্ক্ষণাতীত ত্রুটি পাবেন Error: Ignoring unknown package filter 'android-17'
।
--accept-license
পতাকা যুক্ত করবে । ইতিমধ্যে আপনি করতে পারেনecho "y" | android update sdk --no--ui
এটি আমার পক্ষে কাজ করে না ...
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
}
'
ট্র্যাভিস-সিআই-তে এসডিকে ইনস্টল ও আপডেট করতে আমি এটি ব্যবহার করি
curl --location http://dl.google.com/android/android-sdk_r22.3-linux.tgz | tar -x -z -C $HOME
export ANDROID_HOME=$HOME/android-sdk-linux
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) | android update sdk --no-ui --filter platform-tool,android-19,sysimg-19,build-tools-19.0.1
'Y' দিয়ে সমস্ত লাইসেন্সের উত্তর দিতে, আপনি স্ক্রিপ্টে এটি ব্যবহার করে দেখতে পারেন:
(while :
do
echo 'y'
sleep 2
done) | android update sdk -u .....
সমস্ত অ্যান্ড্রয়েড প্যাকেজ ডাউনলোড করার জন্য এখনও যে কোনও পদ্ধতির সন্ধান করছেন, আমি এটি করার জন্য একটি স্ক্রিপ্ট লিখেছি। এটি সমস্ত অপ্রচলিত প্যাকেজ ডাউনলোড করবে ।
#!/binbash
# Install all non-obsolete android sdk packages.
# author: Tai Le Tien (letientai299 at gmail.com)
function install_sdk {
android update sdk -u -s -a -t "$1"
}
function fetch_non_obsoled_package_indices {
# Fetch the sdk list using non-https connections
android list sdk -u -s -a |\
# Filter obsoleted packages
sed '/\(Obsolete\)/d' |\
# Filter to take only the index number of package
sed 's/^[ ]*\([0-9]*\).*/\1/' |\
# Remove the empty lines
sed -n 's/^[^ $]/\0/p'
}
for package_index in $(fetch_non_obsoled_package_indices)
do
echo "====================================================================="
echo "Start to install package: ${package_index}"
echo "====================================================================="
# Auto accept license
echo -e "y" | install_sdk "${package_index}"
echo
echo
done
আপনি এটি আমার গিথুব রেপোতেও দেখতে পাবেন
ভাল:
expect
।ডাউনসাইডস:
android
এবং আপনার পথে প্রবেশ করতে হবে।নতুন অ্যান্ড্রয়েড সংস্করণগুলিতে (উদাঃ 25.2.5
) আমাদের sdkmanager ব্যবহার করা উচিত ( android
কমান্ডের পরিবর্তে )
প্যাকেজ ইনস্টল করার উদাহরণ:
android-sdk/tools/bin/sdkmanager "extras;android;m2repository"
সমস্ত উপলব্ধ প্যাকেজগুলির তালিকা পেতে আদেশ:
android-sdk/tools/bin/sdkmanager --verbose --list
এই ওয়েব পৃষ্ঠাটি এসডিকে-সরঞ্জামগুলির জন্য ডাউনলোড লিঙ্কগুলি তালিকাভুক্ত করে:
এখানে একটি ওপেন-সোর্স রিপোজিটরি ডকার-অ্যান্ড্রয়েডের লিঙ্ক রয়েছে যা ডকার ইমেজে অ্যান্ড্রয়েড ইনস্টল করতে পারে।
আপনি এই এসও প্রশ্নের উত্তরগুলিও পেতে পারেন : সমস্ত এসডিকে লাইসেন্সগুলি স্বয়ংক্রিয়ভাবে গ্রহণ করুন ।
গ্রেডল সংস্করণ ২.২.০ এর জন্য অ্যান্ড্রয়েড প্লাগইন দিয়ে শুরু করে , নিখোঁজ এসডিকে উপাদানগুলি স্বয়ংক্রিয়ভাবে ডাউনলোড হবে ।
আমি একটি রুবি স্ক্রিপ্ট একসাথে রেখেছি যা এসডিকে ডাউনলোড করে ইনস্টল করে যা প্ররোচিত না করে সাহায্য করতে পারে। https://github.com/ayvazj/andenv
তবুও অন্য স্ক্রিপ্টটি কেবলমাত্র প্রয়োজন, অ-bs অস্পষ্ট, উত্স, এমুলেটর-চিত্র, ডক} প্যাকেজগুলি ডাউনলোড করতে হবে:
#!/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" "$@"
}
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
কিছু অংশ এই থ্রেডের অন্যান্য উত্তর থেকে নেওয়া হয়েছে।
sdkmanager.bat --licenses
উইন্ডোজ থেকে প্রম্পট দূরে স্বয়ংক্রিয় করতে (বলুন যে আপনি অবকাঠামো তৈরির জন্য অটোমেশনের মাধ্যমে ইনস্টল করছেন) ... এটি চালাবেন না। y
এটিতে কীভাবে পাইপ করা যায় তা বোঝার চেষ্টা করে সময় নষ্ট করবেন না । আমি চেষ্টা করেছিলাম; অবজেক্ট ব্যর্থ।
বরং - এটি একবার চালান, এবং নোট করুন যে এটি ফাইল তৈরি করে c:\android\android-sdk\licenses
(যেখানে আপনি দৌড়ে যাচ্ছেন c:\android\android-sdk\tools\bin\sdkmanager.bat
- আপনার ইনস্টল রুটটি পৃথক হতে পারে)।
এই ফাইলগুলি নিয়ে যান এবং এগুলিকে কোথাও রাখুন আপনি এগুলি আপনার স্বয়ংক্রিয় সেটআপ স্ক্রিপ্টগুলিতে ধরতে পারেন। ব্যক্তিগতভাবে, উত্তরযোগ্য আমার বিষ, তাই:
# Note to future-us:
# These are magical files generated by running `c:/android/android-sdk/tools/bin/sdkmanager.bat --licenses`
# This, delightfully, is interactive, and wants to _actually_ read the keyboard buffer.
# That's reputedly possible via SendKeys. I elected to not try that.
# So, instead:
# 1) remote to an instance like a cave-dweller
# 2) run `c:/android/android-sdk/tools/bin/sdkmanager.bat --licenses` in a prompt.
# 3) _actually type_ `y` however many godforsaken times you need to.
# 4) meticulously harvest `c:/android/android-sdk/licenses/*` to this task.
# (you don't need the newline that they thoughtfully put before the hash in each file).
- name: set up android licenses by hand
win_lineinfile:
path: c:/android/android-sdk/licenses/{{ item.name }}
line: "{{ item.line }}"
create: true
with_items:
- {name: "android-googletv-license", line: "SOME HASH"}
- {name: "android-sdk-license", line: "SOME OTHER HASH"}
...
আমি এটির সাথে হতাশ হয়ে পড়েছিলাম এবং একটি গ্রেডল প্লাগইন তৈরি করেছি com.quittle.setup-android-sdk
যা আপনাকে যা প্রয়োজন তা সনাক্ত এবং ইনস্টল করবে। এটি উইন্ডোজ, ওএসএক্স এবং লিনাক্সে কাজ করে এবং যদি আপনি গ্রেডল দিয়ে তৈরি করেন তবে কোনও অতিরিক্ত নির্ভরতা প্রয়োজন হয় না।
আপনি যদি আগ্রহী হন তবে আপনি এখানে আমার ডক্সটি চেকআউট করতে পারেন: https://github.com/quittle/gradle-setup-android-sdk
একজন নবজাতক অ্যান্ড্রয়েড বিকাশকারী, তবে অভিজ্ঞ জাভা বিকাশকারী, যা উপরোক্ত দুঃস্বপ্নগুলি পেরিয়ে গেলেও কী নির্ভরশীলতা, এমনকি যদি জেনে থাকে তবে তা সত্যিই বিস্মিত হয়। আমার কলেজই আমাকে পরামর্শ দিয়েছিল যে অ্যান্ড্রয়েড স্টুডিওটি (যা ইন্টেলিজ ভিত্তিক :-) বিশেষভাবে ব্যবহার করতে পারেন)উপরের দুঃস্বপ্নের কারণে আমি তার পরামর্শ অনুসরণ করেছিলাম। তবে আমি ইনস্টলেশনের জন্য ডিফল্ট গ্রহণ করিনি, এবং এটি আমার একটি সফ্টওয়্যার ড্রাইভে ইনস্টল করার চেষ্টা করেছি। এটি একটি দুঃস্বপ্নে পরিণত হয়েছিল। এসডিকে কথোপকথনটি স্তব্ধ হয়ে গেছে বলে মনে হচ্ছে এবং এটি মোটেই স্বজ্ঞাত নয়। যে কারণে আমি এখানে শেষ। উপরেরটি পড়ার পরে, আমি স্টুডিওটিকে আবার চেষ্টা করেছিলাম, এবং এবার অন্তর্ভুক্তির জন্য সমস্ত ডিফল্ট গ্রহণ করেছে। আরে প্রেস্টো ... সিটিএল-শিফট-এস এবং এসকেডি প্রম্পট না করেই বেশ কয়েকটি সংলাপে সমস্ত এসডিকে নির্ভরতা (মূল বিষয়গুলি আমি অনুমান করছি) এর যত্ন নিয়েছিল। আমি তাই একটি নবজাতকের জন্য এটি সুপারিশ করব। ডাউনলোডের সাথে সাথে পুডিংয়ের প্রমাণ:
সুডিওর সংস্করণ আমি ডাউনলোড এবং ইনস্টল করেছি: উইন্ডোজের সংস্করণ: এবং এখানে এটির ভাল জিনিসগুলি করার পরে:
আন্তরিক আশা করি এটি আপনার পক্ষে কাজ করে !!