কমান্ড লাইনে অ্যান্ড্রয়েড এসডিকে বিল্ড সরঞ্জামগুলি কীভাবে ইনস্টল করবেন?


292

আমি কমান্ড লাইন থেকে অ্যান্ড্রয়েড ডেভ পরিবেশটি সেটআপ করতে এবং নীচের সমস্যাটির মুখোমুখি হতে চাই:

wget http://dl.google.com/android/android-sdk_r22.0.5-linux.tgz

ফাইলটি বের করার পরে চালান

tools/android update sdk --no-ui

তবে এটি দৌড়াতে খুব ধীর

Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml

ফলাফলটি হ'ল ফোল্ডার বিল্ড-সরঞ্জামগুলিতে কিছুই নেই এবং আমি চাইছি অ্যাপ এবং বিল্ডার, যেহেতু আমি পিপীলিকা ছাড়াই কমান্ড লাইন থেকে এপিপি তৈরি করতে চাই।

উত্তর:


479

ডিফল্টরূপে, কমান্ড লাইন থেকে এসডিকে ম্যানেজার তালিকায় বিল্ড সরঞ্জামগুলি অন্তর্ভুক্ত করে না। তারা "অপ্রচলিত" বিভাগে। সমস্ত উপলব্ধ ডাউনলোড দেখতে, ব্যবহার করুন

android list sdk --all

এবং তারপরে কমান্ড লাইন থেকে সেই তালিকার একটি প্যাকেজ পেতে, ব্যবহার করুন:

android update sdk -u -a -t <package no.>

যেখানে -u মানে --no-ui, -a এর অর্থ দাঁড়ায় - সমস্ত এবং - এটি ফিল্টার হয়।

আপনার যদি একাধিক প্যাকেজ ইনস্টল করতে হয় তবে তা করুন:

Android আপডেট sdk -u -a -t 1,2,3,4, .., এন 

যেখানে 1,2, .., n উপরের তালিকা কমান্ডের সাথে তালিকাভুক্ত প্যাকেজ নম্বর


4
আপনি যদি 18.1.1 এর মতো বিল্ড-সরঞ্জাম অনুপস্থিত থাকেন তবে কমান্ড লাইন ব্যবহার করে এটি ইনস্টল করার সঠিক উপায়।
ক্রে

19
এটি দারুণভাবে চুষছে, তারা সরকারী টিপসে --allবিকল্পটির কথা উল্লেখ করেনি । ধন্যবাদ.
আলেকজান্ডার মালাখভ

4
@ ড্যানিয়েল জোনকার হ্যাঁ, এটি। কমান্ডটিতে কেবল "হ্যাঁ" প্রতিধ্বনি করুন, যেমন প্রতিধ্বনি হ্যাঁ | অ্যান্ড্রয়েড আপডেট এসডিকে
সমস্ত

4
echo "yes"সংক্ষিপ্ত করা যেতে পারে echo "y", তবে যাইহোক এটি সব ক্ষেত্রে কার্যকর হয় না। কিছু ক্ষেত্রে আপনি ফিল্টার এবং নির্দিষ্ট প্যাকেজগুলির উপর নির্ভর করে একাধিক y / n লাইসেন্স প্রম্পট পেতে পারেন। echo "y"শুধুমাত্র প্রথম প্রম্পটে সাড়া দেবে, তবে বাকিটি নয়। আমি এটিকে yesএখন পর্যন্ত কোনও সাফল্য না দিয়ে কমান্ড দিয়ে কাজ করার চেষ্টা করছি ।
i4niac

3
@ আলেকজান্দার মালাখভ আমি সম্মত, আপনার হোস্ট ওএসের যদি ইউটিলিটি থাকে তবে এটি ব্যবহার করা সেরা বিকল্প। আমি প্রথমে প্রত্যাশার দিকে তাকিয়েছিলাম তবে আমার ক্ষেত্রে আমাকে এডাব্লুএস মেঘে চলমান একটি নির্দিষ্ট লিনাক্সের স্ক্রিপ্টটি চালাতে হবে। এই ডিসট্রোর প্রত্যাশিত ইনস্টল নেই এবং বিল্ড পরিকল্পনার অংশ হিসাবে এটি ইনস্টল করার আমার পর্যাপ্ত অধিকার নেই। আশেপাশে দেখার পরে, আমি যে সেরা সমাধানটি পেয়েছি তা হ'ল হেডলেস সার্ভারে অ্যান্ড্রয়েড এসডিকে আপডেট করুন <প্রিয়> <কোড> # অ্যান্ড্রয়েড এসডিকে ফিল্ডার = সরঞ্জাম, প্ল্যাটফর্ম, অ্যান্ড্রয়েড -20 (ঘুম 5 && [[]]; ঘুম 1; ইকো ওয়াই; সম্পন্ন করুন ) \ | অ্যান্ড্রয়েড আপডেট sdk --no-ui - সমস্ত \ - ফিল্টার $ IL ফিল্টার} </code> </pre>
i4niac

140

অন্যান্য উত্তরে উল্লিখিত হিসাবে, আপনি --filterইনস্টল করা প্যাকেজগুলি সীমাবদ্ধ করতে বিকল্পটি ব্যবহার করতে পারেন :

android update sdk --filter ...

অন্যান্য উত্তরগুলি উল্লেখ করে না যে আপনি ফিল্টার বিকল্পগুলির জন্য সূচিগুলির পরিবর্তে ধ্রুব স্ট্রিং আইডেন্টিফায়ার ব্যবহার করতে পারেন (যা পরিবর্তিত হবে)। এটি অপরিবর্তিত বা স্ক্রিপ্টযুক্ত ইনস্টলগুলির জন্য সহায়ক। --filterবিকল্পের জন্য ম্যান :

... এটি 'তালিকা এসডিকে - এক্সটেন্ডেড' দ্বারা ফিরে আসা শনাক্তকারীদেরও গ্রহণ করে।

android list sdk --all --extended :

Packages available for installation or update: 97
----------
id: 1 or "tools"
     Type: Tool
     Desc: Android SDK Tools, revision 22.6.2
----------
id: 2 or "platform-tools"
     Type: PlatformTool
     Desc: Android SDK Platform-tools, revision 19.0.1
----------
id: 3 or "build-tools-19.0.3"
     Type: BuildTool
     Desc: Android SDK Build-tools, revision 19.0.3

তারপরে আপনি স্ট্রিং আইডিকে ফিল্টার অপশন হিসাবে আপনার পছন্দ মতো সংস্করণগুলি নির্দিষ্ট করে উল্লেখ করতে পারেন:

android update sdk --filter tools,platform-tools,build-tools-19.0.3 ইত্যাদি


27
--extendedবিকল্পটির জন্য +1 , এটি সিআই স্ক্রিপ্টগুলির জন্য কী ইনস্টল করতে হবে তা পরিষ্কার করে।
nhaarman

16
android updateঅপশনটিরও প্রয়োজন হবে --all, অন্যথায় ব্যবহারের সাহায্য প্রদর্শিত হবে। উদাহরণস্বরূপ: android update sdk --no-ui --all --filter build-tools-21.1.0(এবং --extendedবিকল্পের জন্য +1 যা আপনাকে এর মতো উপাধি দেখতে দেয় build-tools-21.1.0)
পেট্রাস রেপো

1
বিকল্প --filterএবং --extendedবিকল্পগুলির জন্য লোকটি কোথায় ?
সিওরো সান্তিলি 郝海东 冠状 病 六四 事件

2
আমি সম্মত, সংখ্যার চেয়ে স্ট্রিংটি ব্যবহার করা আরও ভাল, যা স্থির নয়।
উইসবাকী

1
আমি সেই --extendedবিকল্পটি সন্ধান করছিলাম যাতে আমি একটি স্ক্রিপ্ট লিখতে পারি এবং এটি আমার অবিচ্ছিন্ন ইন্টিগ্রেশন সার্ভারে ব্যবহার করতে পারি যেখানে এটি এসডিকে সংস্থানগুলি নিজেই রিফ্রেশ করতে পারে। সুন্দর টিপ!
osayilgan

73

সংস্করণ 25.2.3 (এবং উচ্চতর) Android SDK Toolsপ্যাকেজের মধ্যে নতুন সরঞ্জাম রয়েছে - sdkmanager - যা কমান্ড লাইন থেকে বিল্ড-সরঞ্জামগুলি ইনস্টল করার এই কাজটিকে সহজতর করে।
এটি android_sdk/tools/binফোল্ডারে অবস্থিত ।

ব্যবহার ( ডকুমেন্টেশন থেকে ):

sdkmanager packages [options]

packagesযুক্তি একটি SDK এর স্টাইলের পাথ, (উদাহরণস্বরূপ, কোট জড়িয়ে রাখা হয়েছে "build-tools;25.0.0"বা "platforms;android-25")। আপনি একাধিক প্যাকেজ পাথ পাস করতে পারেন, একটি স্পেসের সাথে পৃথক করে, তবে সেগুলি অবশ্যই প্রতিটিকে তাদের নিজস্ব উদ্ধৃতিতে আবৃত করতে হবে।

ব্যবহারের উদাহরণ (আমার ম্যাক):

alex@mbpro:~/sdk/tools/bin$ ls ../../build-tools/  
25.0.0/   
alex@mbpro:~/sdk/tools/bin$ ./sdkmanager "build-tools;25.0.2"  
done   
alex@mbpro:~/sdk/tools/bin$ ls ../../build-tools/  
25.0.0/ 25.0.2/

আপনি বিভিন্ন বিকল্পগুলিও নির্দিষ্ট করতে পারেন , উদাহরণস্বরূপ, সমস্ত সংযোগকে HTTP ( --no_https) ব্যবহার করতে বাধ্য করা , বা প্রক্সি সার্ভার ( --proxy_host=addressএবং --proxy_port=port) ব্যবহার করার জন্য ।

উপলব্ধ বিকল্পগুলি পরীক্ষা করতে, --helpপতাকাটি ব্যবহার করুন । আমার মেশিনে (ম্যাক) আউটপুটটি নিম্নরূপ:

alex@mbpro:~/sdk/tools/bin$ ./sdkmanager --help
Usage: 
  sdkmanager [--uninstall] [<common args>] \
    [--package_file <package-file>] [<packages>...]
  sdkmanager --update [<common args>]
  sdkmanager --list [<common args>]

In its first form, installs, or uninstalls, or updates 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), currently installed packages are
    updated to the latest version.
In its third form, all installed and available packages are printed out.

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.

1
আর কেউ পাচ্ছেন Warning: Unknown argument --package_file?
ulidtko

3
@ulidtko ব্যবহারের ডকুমেন্টেশনের মধ্যে একটি ত্রুটি রয়েছে। সঠিক উপায় সমান চিহ্নটি যুক্ত করা, যেমন --package_file=packages.txt
অ্যালেক্স লিপভ

দুর্ভাগ্যক্রমে এটি ইনস্টল করার কাজটি সহজ করে না। সমস্ত অ্যান্ড্রয়েড প্রোগ্রামার জিইআইআই ছাড়াই লিনাক্সে তাদের প্রোগ্রামিংগুলি করে না। আমাদের মধ্যে কিছু এটি উইন্ডোতে করে এবং এমন একটি ইউআই পছন্দ করে যা অন্যান্য উইন্ডোজ অ্যাপ্লিকেশনটির মতো চলমান। এটি এগিয়ে না গিয়ে পিছিয়ে চলেছে
এএএ

2
@ এএএ এটি কমান্ড লাইন থেকে ইনস্টল করার কাজটিকে সহজতর করে । ওপি স্পষ্টতই বলেছে যে তিনি একটি কমান্ড লাইন সমাধান খুঁজছেন , এবং সুতরাং আপনার মন্তব্য এই প্রসঙ্গে অপ্রাসঙ্গিক।
অ্যালেক্স লিপভ

55

এডিবি বিল্ড-সরঞ্জামগুলি অ্যান্ড্রয়েড আপডেট এসডিকে --no-ui দ্বারা স্বয়ংক্রিয়ভাবে ডাউনলোড হবে না

সুতরাং বুয়েল-টুল প্রকারটি ইনস্টল করার জন্য (কনসোলে):

android list sdk --all

আইটেমের আগে তালিকাভুক্ত নম্বরটি মনে রাখুন এবং নিম্নলিখিতগুলি সম্পাদন করুন:

android update sdk -u --all --filter <number>

কমান্ডগুলি আপনার / আপনার ফোল্ডার / অ্যান্ড্রয়েড-এসডিকে-লিনাক্স / সরঞ্জামগুলিতে টাইপ করা উচিত

দূরবর্তী ফোল্ডারের জন্যও (উদাহরণস্বরূপ ssh দ্বারা সার্ভার খোলা হয়েছে) প্রকার:

**./android** list sdk --all
**./android** update sdk -u --all --filter <number>

এডিবি প্যাকেজগুলির সহজ তালিকার জন্য টার্মিনালে টাইপ করুন:

android list sdk

সমস্ত প্যাকেজ ইনস্টল করার জন্য:

android update sdk --no-ui

বা ফিল্টার সহ (কমা বিভাজক):

android update sdk --no-ui --filter 3,5,8,14

পুরানো অবহেলিত এসডিসির জন্য আপনাকে অবশ্যই সমস্ত ব্যবহার করতে হবে। উদাহরণস্বরূপ অ্যান্ড্রয়েড আপডেট এসডিকে --no-ui - সমস্ত - ফিল্টার প্ল্যাটফর্ম -8 ইনস্টল করতে 27
ফ্লুক করুন

যেহেতু আমি জিইআইআই ব্যবহার করার সময় এসডিকে ইনস্টলারটি ক্র্যাশ করে চলেছিল, তাই আমাকে কমান্ড-লাইনে স্যুইচ করতে হয়েছিল, তাই এটি সত্যই সহায়তা করেছিল। ধন্যবাদ।
যোভোনে আবুরো

32

কমান্ড লাইন থেকে সম্পর্কিত সমস্ত অ্যান্ড্রয়েড এসডিকে ইনস্টল করার চেষ্টা করার সময় আমি যে দুর্দান্ত তথ্য উত্স পেয়েছিলাম তা হ'ল এই ডকফেরফাইল। ডকফাইফিলের অভ্যন্তরে আপনি দেখতে পাবেন যে লেখক ইনস্টল করতে platform toolsএবং build toolsঅন্য কোনও মিথস্ক্রিয়া ছাড়াই একটি একক আদেশ প্রয়োগ করে utes ওপি যে ক্ষেত্রে উল্লেখ করেছে, কমান্ডটি এর সাথে মানিয়ে নেওয়া হবে:

echo y | $ANDROID_HOME/tools/android update sdk --all --filter build-tools-21.1.0 --no-ui

আমি যদি সমস্ত প্যাকেজ না চাই ? শুধু 21.1.0 চান ।
ইগোরগানাপলস্কি

@ ইগরগানাপলস্কি সম্ভবত আপনার --allপতাকাটি ছাড়া চেষ্টা করা উচিত
জিওন্ড এবং

21

আমি কমান্ড লাইনের মাধ্যমে অ্যান্ড্রয়েড এসডিকে নির্ভরতা ইনস্টল করার সময় পেয়েছি এবং যেহেতু সরঞ্জামগুলি এবং অনলাইন নিয়ে আসা ডকুমেন্টেশনটি খুব খারাপভাবে অভাবযুক্ত, তাই আমি ভেবেছিলাম যে আমি এখানে আবিষ্কার করেছি তা পোস্ট করব।

আমি কাজ করছি android sdk r24.4.1জন্য linux। দুটি কমান্ড রয়েছে যা আপনি উপলব্ধ প্যাকেজগুলির তালিকাতে চালাতে পারেন:

android list sdk

এবং আরও পরিস্কার:

android list sdk --all

উপরের প্রতিটি কমান্ডের জন্য নির্দিষ্ট প্যাকেজের প্যাকেজ সংখ্যা পৃথক! উদাহরণস্বরূপ, পূর্ববর্তী প্যাকেজগুলি প্যাকেজ API 23.1 revision 3হিসাবে #3তালিকাভুক্ত করে এবং পরবর্তীকালে এটি তালিকাভুক্ত করে #29

এখন, অ্যান্ড্রয়েড কমান্ড ব্যবহার করে ইনস্টল করার দুটি ভিন্ন উপায় রয়েছে।

tools/android update sdk --no-ui --filter <package number>

এবং

tools/android update sdk -u -a -t <package number>

প্রদত্ত প্রতিটি ইনস্টল কমান্ড প্যাকেজটিকে # প্যারামিটার হিসাবে নিতে পারে, আপনি কোন প্যাকেজ নম্বরটি ব্যবহার করেন? অনেক অনলাইন অনুসন্ধান এবং পরীক্ষা এবং ত্রুটির পরে, আমি এটি আবিষ্কার করেছি

android update sdk --no-ui --filter থেকে প্যাকেজ নম্বর ব্যবহার করে android list sdk

এবং

android update sdk -u -a -t থেকে প্যাকেজ নম্বর ব্যবহার করে android list sdk --all

অন্য কথায় - ইনস্টল API 23.1 revision 3করতে আপনি যা করতে পারেন:

android update sdk --no-ui --filter 3

অথবা

android update sdk -u -a -t 29

পাগল, তবে এটি কাজ করে।


1
-aএর সংক্ষিপ্ত সংস্করণ হ'ল এটি --allকেন সেই প্যাকেজ নম্বরটি ব্যবহার করছে। (এর -uজন্য সংক্ষিপ্ত --no-uiএবং -tসংক্ষিপ্ত --filter।)
দার্থমাইম

আইপিএস যা বলে আমি বিশ্বাস করি। গুগল তাদের usage()পাঠ্যকে বাস্তবের সাথে আপ টু ডেট না রাখার জন্য পরিচিত ।
not2qubit

উবুন্টুতে আমি দৌড়েছি: cho প্রতিধ্বনি y | RO এন্ড্রয়েডহোম / সরঞ্জাম / অ্যান্ড্রয়েড আপডেট এসডিকে-ইউ-এ -t 27 এখন কীভাবে নিশ্চিত করব যে আমি Android 8 এ আপডেট হয়েছিল?
আশীষ কার্পে 8'17

। এন্ড্রয়েডহোম / সরঞ্জাম / অ্যান্ড্রয়েড তালিকার লক্ষ্য গ্রেপ "অ্যান্ড্রয়েডের উপর ভিত্তি করে" অ্যান্ড্রয়েড 4.0.3 উপর ভিত্তি করে (এপিআই স্তর 15) অ্যান্ড্রয়েড 4.1.2 উপর ভিত্তি করে (এপিআই স্তর 16) অ্যান্ড্রয়েড 4.2.2 উপর ভিত্তি করে (এপিআই স্তর 17) অ্যান্ড্রয়েড 4.3.1 উপর ভিত্তি করে (এপিআই স্তর 18) অ্যান্ড্রয়েড 4.৪.২ (এপিআই স্তর ১৯) এর ভিত্তিতে অ্যান্ড্রয়েড ৪.৪.২ (এপিআই স্তর ১৯) অ্যান্ড্রয়েড 5.0.1 এর ভিত্তিতে (এপিআই স্তর 21) অ্যান্ড্রয়েড 5.1.1 এর ভিত্তিতে (এপিআই স্তর 22) অ্যান্ড্রয়েড 6.0 (এপিআই স্তর 22) এর ভিত্তিতে স্তর 23) অ্যান্ড্রয়েড 7.0 এর ভিত্তিতে (এপিআই স্তর 24)
আশীষ কার্পে 8'17

যখন আমি দৌড়েছি এর কারণ: or এন্ড্রয়েডহোম / সরঞ্জাম / অ্যান্ড্রয়েড তালিকার এসডিকে প্যাকেজগুলি ইনস্টলেশন বা আপডেটের জন্য উপলভ্য: 1 1- এসডিকে প্ল্যাটফর্ম অ্যান্ড্রয়েড 8.1.0, এপিআই 27, পুনর্বিবেচনা 1
আশীষ কার্পে

20

বেশিরভাগ উত্তর এই সত্যটিকে অগ্রাহ্য করে বলে মনে হয় যে আপনার কোনও সুপার ব্যবহারকারীর অধিকার ছাড়াই একটি মাথাবিহীন পরিবেশে আপডেটটি চালানোর প্রয়োজন হতে পারে, যার অর্থ স্ক্রিপ্টটির সমস্ত y/nলাইসেন্স স্বয়ংক্রিয়ভাবে অনুরোধ করা উচিত।

কৌতুকটি করে এমন উদাহরণ এখানে।

FILTER=tool,platform,android-20,build-tools-20.0.0,android-19,android-19.0.1

( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) \
    | android update sdk --no-ui --all \
    --filter ${FILTER}

আপনি যতই প্রম্পট পান না কেন, সেগুলির সমস্ত উত্তর দেওয়া হবে। এই while/sleepলুপ সিমুলেশন মত দেখায় হ্যাঁ কমান্ড, এবং আসলে এটা, ভাল প্রায় । সমস্যাটি yesহ'ল এটি অবিচ্ছিন্নভাবে বন্যার সাথে সাথে 'y'সেই চরিত্রগুলি এবং যে সংস্করণটি আমার সাথে মোকাবিলা করতে হয়েছিল তা প্রেরণের মধ্যে কার্যত কোনও বিলম্ব নেই যার কোনও টাইমআউট বিকল্প ছিল না। এটি স্টডআউট "দূষিত" করবে এবং স্ক্রিপ্ট ভুল ইনপুট সম্পর্কে অভিযোগ ব্যর্থ হবে fail সমাধানটি হ'ল 'y'স্টডআউটে প্রেরণের মধ্যে একটি বিলম্ব করা এবং এটি ঠিক while/sleepকম্বো করে।

expect কিছু লিনাক্স ডিস্ট্রোজে ডিফল্টরূপে উপলভ্য নয় এবং আমার সিআই স্ক্রিপ্টগুলির অংশ হিসাবে এটি ইনস্টল করার আমার কোনও উপায় ছিল না, তাই সর্বাধিক জেনেরিক সমাধানটি ব্যবহার করতে হয়েছিল এবং সরল বাশ স্ক্রিপ্টের চেয়ে কিছুই আর জেনেরিক হতে পারে না, তাই না?

প্রকৃতপক্ষে, আমি এটি ( এনএসবোগান ) সম্পর্কে ব্লগ করেছি , আপনি যদি আগ্রহী হন তবে এখানে আরও বিশদ জানতে এটি পরীক্ষা করে দেখুন।


- সমস্ত সম্ভব sdk ইনস্টল করা হবে। আপনি যদি কোনও নির্দিষ্ট ফিল্টারে সীমাবদ্ধ রাখতে চান তবে আদর্শ নয়।
ইগোরগানাপলস্কি

17

আপনি যদি sdkmanagerইনস্টল করে থাকেন (আমি ম্যাক ব্যবহার করছি)

sdkmanager --listউপলব্ধ প্যাকেজ তালিকা চালানোর জন্য।

আপনি যদি বিল্ড সরঞ্জাম ইনস্টল করতে চান তবে উপলব্ধ প্যাকেজগুলির তালিকা থেকে পছন্দসই সংস্করণটি অনুলিপি করুন।

পছন্দসই সংস্করণ রান ইনস্টল করতে

sdkmanager "build-tools;27.0.3"

1
ধন্যবাদ। এটি কাজ করে! "অ্যান্ড্রয়েড" কমান্ডটি এখন অ্যান্ড্রয়েড-এসডকের সর্বশেষ সংস্করণ সহ অবচিত করা হয়েছে, আমাদেরকে / সরঞ্জাম / বিন ডিরেক্টরি থেকে ./sdkmanager ব্যবহার করতে হবে
JLavoie

8

তবে এটি দৌড়াতে খুব ধীর

হ্যাঁ, আমারও একই সমস্যা ছিল। কিছু ফাইল ডাউনলোড অত্যন্ত ধীর (বা কমপক্ষে সেগুলি গত কয়েক দিনের মধ্যে হয়েছে)। আপনি যদি সমস্ত কিছু ডাউনলোড করতে চান তবে এগুলি করতে পারবেন না।

ফলাফলটি হ'ল ফোল্ডার বিল্ড-সরঞ্জামগুলিতে কিছুই নেই এবং আমি চাইছি অ্যাপ এবং বিল্ডার, যেহেতু আমি পিপীলিকা ছাড়াই কমান্ড লাইন থেকে এপিপি তৈরি করতে চাই।

আপনি কি এটি সম্পূর্ণরূপে চালাতে দিয়েছেন?

আপনি যা করতে পারেন তা হ'ল -tস্যুইচ ব্যবহার করে ডাউনলোড করা প্যাকেজগুলি ফিল্টার করে ।

উদাহরণ স্বরূপ:

tools/android update sdk --no-ui -t platform-tool

অন্য দিন আমি যখন এটি চেষ্টা করেছিলাম তখন বিল্ড সরঞ্জাম ইনস্টল করার 18.0.0 সংস্করণ পেয়েছি। কিছু কারণে 18.0.1 সর্বশেষতম সংস্করণটি এই ফিল্টারটির দ্বারা অন্তর্ভুক্ত করা হয়নি এবং এটি পাওয়ার একমাত্র উপায় হ'ল --allস্যুইচ দিয়ে সবকিছু ইনস্টল করা ।


2
উপলব্ধ ফিল্টারগুলি পাওয়ার জন্য এটি চালান: "অ্যান্ড্রয়েড আপডেট এসডিকে-এইচ ... ... একটি প্ল্যাটফর্ম যা [প্ল্যাটফর্ম, সিস্টেম-চিত্র, সরঞ্জাম, প্ল্যাটফর্মের কমা-বিচ্ছিন্ন তালিকার আকারে নির্দিষ্ট ধরণের প্যাকেজগুলির মধ্যে আপডেটকে সীমাবদ্ধ করে" -টোল, ডক, নমুনা, উত্স]। এটি 'list sdk --extended' দ্বারা ফিরে আসা শনাক্তকারীদেরও গ্রহণ করে।
aleb

6

আমি এমন একটি স্ক্রিপ্ট রাখতে পছন্দ করি যা আমার নির্ভরতাগুলি ইনস্টল করে

কিছুটা এইরকম:

#!/usr/bin/env bash
#
# Install JUST the required dependencies for the project.
# May be used for ci or other team members.
#

for I in android-25 \
         build-tools-25.0.2  \
         tool \
         extra-android-m2repository \
         extra-android-support \
         extra-google-google_play_services \
         extra-google-m2repository;

 do echo y | android update sdk --no-ui --all --filter $I ; done

https://github.com/caipivara/android-scripts/blob/master/install-android-dependencies.sh


ধন্যবাদ, আমাকে অনেক সময় বাঁচাতে সহায়তা করুন।
utzcoz

4

আমার কেবল এই সমস্যাটি ছিল, তাই অবশেষে আমি এক লাইনের বাশ নোংরা সমাধানটি উপলভ্য সরঞ্জামগুলির তালিকাটি পড়ে এবং বিশ্লেষণ করে লিখেছিলাম:

 tools/android update sdk -u -t $(android list sdk | grep 'Android SDK Build-tools' | sed 's/ *\([0-9]\+\)\-.*/\1/')

আমি পরিষেবাগুলি খেলতে আমার প্রকল্পটি স্যুইচ করেছি, এটি কেবল বিল্ড সরঞ্জামগুলির চেয়ে অনেক বেশি লাইসেন্সের জন্য জিজ্ঞাসা করেছিল, তাই এই সমাধানটি খুব সীমাবদ্ধ।
নুরেটিন


4

@ I4niac এবং @ অরলিয়ান ল্যামবার্টের উত্তর থেকে অনুপ্রাণিত, আমি এটাই সামনে নিয়ে এসেছি

csv_update_numbers=$(./android list sdk --all | grep 'Android SDK Build-tools' | grep -v 'Obsolete' | sed 's/\(.*\)\- A.*/\1/'|sed '/^$/d'|sed -e 's/^[ \t]*//'| tr '\n' ',')
csv_update_numbers_without_trailing_comma=${csv_update_numbers%?}

( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) \
    | ./android update sdk --all -u -t $csv_update_numbers_without_trailing_comma

ব্যাখ্যা

  • android list sdk --allকমান্ডের ফলে (অপ্রচলিত প্যাকেজ উপেক্ষা করে) বিল্ড সরঞ্জাম প্যাকেজগুলির সূচী যা সংখ্যার কমা দ্বারা পৃথক করা তালিকা পান ।
  • লাইসেন্সগুলি গ্রহণের জন্য প্রতি কয়েক মিলিয়ন সেকেন্ডে টার্মিনালে 'y'গুলি নিক্ষেপ করুন।

4

ডেভেলপার.অ্যান্ড্রয়েড.কম (এটি বর্তমানে উইন্ডোজ ওএসের জন্য একটি 149mb ফাইল) থেকে অ্যান্ড্রয়েড এসডিকে ডাউনলোড করুন। এটি লক্ষণীয় যে অ্যান্ড্রয়েড sdkmanager GUI সরিয়ে ফেলেছে তবে বিন ফোল্ডারে sdkmanager এর একটি কমান্ড লাইন সংস্করণ রয়েছে যা সরঞ্জাম ফোল্ডারের ভিতরে অবস্থিত।

  1. বিন ফোল্ডারের অভ্যন্তরে, শিফট কীটি ধরে রাখুন, ডান ক্লিক করুন, তারপরে এখানে ওপেন কমান্ড লাইনটি নির্বাচন করুন। শিফট + ডান ক্লিক করুন >> কমান্ড লাইনটি এখানে খুলুন।
  2. কমান্ড লাইন খুললে, sdkmanagerএন্টার টিপুন।
  3. তারপরে রান টাইপ sdkmanager(স্পেস), ডাবল হাইফেন ( --), টাইপ তালিকা sdkmanager --list (এটি এসডিকে পরিচালকের সমস্ত প্যাকেজ তালিকাভুক্ত করে)
  4. Sdkmanager (স্পেস) টাইপ করুন তারপরে প্যাকেজের নাম লিখুন, এন্টার টিপুন। যেমন। sdkmanager প্ল্যাটফর্ম-সরঞ্জামসমূহ (এন্টার টিপুন) এটি লাইসেন্স চুক্তিটি লোড করবে। বিকল্পগুলির সাথে (y / n)। গ্রহণ করতে y লিখুন এবং এটি আপনার নির্দিষ্ট প্যাকেজটি ডাউনলোড করবে।

আরও রেফারেন্সের জন্য এখানে অফিসিয়াল ডকুমেন্ট অনুসরণ করুন

আশা করি এটা কাজে লাগবে. :)


4

"অ্যান্ড্রয়েড" কমান্ড হ্রাস করা হয়েছে।

কমান্ড-লাইন সরঞ্জামগুলির জন্য, সরঞ্জামগুলি / বিন / এসডিমানজার এবং সরঞ্জামগুলি / বিন / অ্যাভিডম্যানার ব্যবহার করুন

আপনার যদি অ্যান্ড্রয়েড স্টুডিওর প্রয়োজন না হয় তবে আপনি কেবল বিভাগ কমান্ড লাইন সরঞ্জামগুলিতে বিকাশকারী.অ্যান্ড্রয়েড ডট কম থেকে অ্যান্ড্রয়েড কমান্ড লাইন সরঞ্জামগুলি ডাউনলোড করতে পারেন ।

সিএলআই থেকে এটি মতলবময় হওয়া উচিত:

curl --output sdk-tools-linux.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip

অথবা

wget --output-document sdk-tools-linux.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip

এর পরে কেবল সংরক্ষণাগারটিকে লক্ষ্য ফোল্ডারে আনপ্যাক করুন

unzip sdk-tools-linux.zip

এবং এখন আমরা আপনার প্রয়োজনীয় সমস্ত কিছু ইনস্টল করতে পারি ...

./tools/bin/sdkmanager --install 'build-tools;29.0.2' 'platform-tools' 'platforms;android-29' 'tools'

কমান্ডটি ব্যবহার করে আপনি প্যাকেজগুলির সম্পূর্ণ তালিকা পেতে পারেন ./tools/bin/sdkmanager --list

কিছু প্যাকেজগুলির লাইসেন্স চুক্তির স্বীকৃতি প্রয়োজন। আপনি এটি ইন্টারেক্টিভভাবে গ্রহণ করতে পারেন বা কেবল "y" ইনপুট স্ট্রিমে পাস করতে পারেন, এর মতো (দুটি চুক্তি ক্ষেত্রে):

echo -ne "y\ny" | ./tools/bin/sdkmanager --install 'system-images;android-29;default;x86_64'

এবং অবশ্যই আপনার সুবিধার জন্য, আপনি এ্যান্ড্রয়েডহোম বা এ্যান্ড্রয়েড_ SDK_ROOT এর মতো ভেরিয়েবলগুলি (~ /। প্রফাইলে বা ~ / .bash_profile এ এটি সহ) রফতানি করতে পারেন বা PATH ভেরিয়েবলটি প্যাচ করতে পারেন - এটি আপনার বিবেচনার ভিত্তিতে।

স্ক্রিপ্ট উদাহরণ:

mkdir /opt/android-sdk
cd /opt/android-sdk
curl --output sdk-tools-linux.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
unzip sdk-tools-linux.zip
echo -ne "y" | ./tools/bin/sdkmanager --install 'build-tools;29.0.2' 'platform-tools' 'platforms;android-29' 'tools'

প্রয়োজনীয়তা: কার্ল (বা উইজেট) এবং আনজিপ করুন

সমস্যা সমাধান:

যদি আপনি দেখেন Warning: Could not create settings, আপনার দরকার হবে toolsভিতরে ডিরেক্টরির cmdline-toolsANDROID_HOME (যদি ঠিক এই নামে প্রয়োজন এটা তৈরি করুন) ভিতরে ডিরেক্টরির দেখতে অ্যান্ড্রয়েড কমান্ড লাইন টুলস সবসময় শো sdkmanager: সতর্কতা: সেটিংস তৈরী করা যায়নি


2

নাট যেমন https://stackoverflow.com/a/19416222/1104031 পোস্টে বলেছিলেন তেমন বিল্ড সরঞ্জামগুলি ডিফল্টরূপে স্বয়ংক্রিয়ভাবে ডাউনলোড করা যায় নি ।

তবে আমি একটি ছোট সরঞ্জাম লিখেছিলাম যা আপনার জন্য সবকিছু তৈরি করে

Https://stackoverflow.com/a/17863931/1104031 পোস্টে আমি "প্রত্যাশা" সরঞ্জামটি ড্যানব হিসাবে ব্যবহার করেছি । আপনি শুধুমাত্র অ্যান্ড্রয়েড-SDK প্রয়োজন এবং python27, expect

এই স্ক্রিপ্টটি সমস্ত বিল্ড সরঞ্জাম, সমস্ত এসডিস্ক এবং স্বয়ংক্রিয় বিল্ডের জন্য আপনার প্রয়োজনীয় সমস্ত কিছু ইনস্টল করবে:

import subprocess,re,sys

w = subprocess.check_output(["android", "list", "sdk", "--all"])
lines = w.split("\n")
tools = filter(lambda x: "Build-tools" in x, lines)
filters = []
for tool in tools:
  m = re.search("^\s+([0-9]+)-", tool)
  tool_no = m.group(1)
  filters.append(tool_no)

if len(filters) == 0:
  raise Exception("Not found build tools")


filters.extend(['extra', 'platform', 'platform-tool', 'tool'])

filter = ",".join(filters)

expect= '''set timeout -1;
spawn android update sdk --no-ui --all --filter %s;
expect {
  "Do you accept the license" { exp_send "y\\r" ; exp_continue }
  eof
}''' % (filter)

print expect

ret = subprocess.call(["expect", "-c", expect])
sys.exit(ret)

কীভাবে echo "yes" | ./android update sdk --no-https --no-ui --filter 1,6?
স্কিমে্যাকস

1
আমি ভুল হলে আমাকে সংশোধন করুন তবে মনে হয় যে এই স্ক্রিপ্টটি এটি চালানো সমস্ত কিছু আবার ডাউনলোড করে। আমি -উ পরম দিয়ে চেষ্টা করেছি কিন্তু মনে হচ্ছে এটি কার্যকর হয়নি: /
gbero

1

অন্যান্য প্রতিক্রিয়াগুলিতে যেমন বলা হয়েছে, বিল্ড সরঞ্জামগুলির জন্য --allপতাকা ইনস্টল করা প্রয়োজন। -tসমস্ত প্যাকেজ ইনস্টল করা এড়াতে আপনি আরও ভাল একটি ফিল্টার পতাকা ব্যবহার করুন তবে সমস্ত বিল্ড সরঞ্জামগুলিকে ফিল্টার করার কোনও উপায় নেই।

এওএসপি বাগ ট্র্যাকারে এই দুটি পয়েন্টের জন্য ইতিমধ্যে বৈশিষ্ট্যগুলির অনুরোধ রয়েছে। তাদের বিনা দ্বিধায় ভোট দিন, এটি তাদের কোনও দিন ঘটতে পারে:


1

আমি সমস্ত আপডেট করার জন্য এটি চেষ্টা করেছিলাম, এবং এটি কার্যকর হয়েছে!

echo y | $ANDROID_HOME/tools/android update sdk --no-ui


-1

অ্যান্ড্রয়েড আপডেট এসডিকে

এই কমান্ডটি এসডিকে সরঞ্জাম, বিল্ড সরঞ্জাম, এসডিকে প্ল্যাটফর্ম সরঞ্জামগুলির জন্য সর্বশেষ প্রকাশের আপডেট এবং ইনস্টল করবে।

এটা আমার জন্য কাজ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.