ยอมรับใบอนุญาต SDK ทั้งหมดโดยอัตโนมัติ


441

ตั้งแต่ปลั๊กอิน android gradle 2.2-alpha4 :

Gradle จะพยายามดาวน์โหลดแพ็คเกจ SDK ที่หายไปซึ่งขึ้นอยู่กับโครงการ

ซึ่งเป็นที่น่าอัศจรรย์ใจเย็นและได้รับรู้เพื่อจะเป็นโครงการ JakeWharton

แต่ในการดาวน์โหลดไลบรารี SDK คุณต้อง: ยอมรับข้อตกลงสิทธิ์ใช้งานหรือ gradle บอกคุณ:

คุณยังไม่ได้ยอมรับข้อตกลงสิทธิ์การใช้งานของส่วนประกอบ SDK ต่อไปนี้: [Android SDK Build-Tools 24, แพลตฟอร์ม Android SDK 24] ก่อนที่จะสร้างโครงการของคุณคุณต้องยอมรับข้อตกลงสิทธิ์การใช้งานและทำการติดตั้งส่วนประกอบที่ขาดหายไปโดยใช้ Android Studio SDK Manager หรือหากต้องการเรียนรู้วิธีโอนข้อตกลงสิทธิ์การใช้งานจากเวิร์กสเตชันเครื่องหนึ่งไปยังอีกเครื่องหนึ่งให้ไปที่ http://d.android.com/r/studio-ui/export-licenses.html

และปัญหานี้เป็นปัญหาเพราะผมชอบที่จะติดตั้งการอ้างอิง SDK gradle buildทั้งหมดในขณะที่ทำที่

ฉันกำลังมองหาวิธีการที่จะยอมรับใบอนุญาตอัตโนมัติทั้งหมด อาจเป็นสคริปต์การไล่ระดับสี คุณมีความคิดใด ๆ

ขอบคุณ!

[แก้ไข]

ทางออกคือการดำเนินการ:

android update sdk --no-ui --filter build-tools-24.0.0,android-24,extra-android-m2repository

และติดตั้งด้วยตนเอง แต่มันเป็นคุณสมบัติใหม่ของ gradle ที่จะทำ

[แก้ไข 2]

ทางออกที่ดีกว่าคือการใช้ sdkmananger:

yes | sdkmanager --licenses

12
นอกจากนี้คุณยังสามารถปรากฏecho y |ขึ้นด้านหน้าของคำสั่งนั้นเพื่อยอมรับใบอนุญาตอัตโนมัติ มีประโยชน์เมื่อทำงานบนกล่อง CI หัวขาด :)
Dori

3
ฉันต้องทำ~/.android/tools/android update sdk --no-ui --filter build-tools-25.0.0,android-25,extra-android-m2repositoryเพราะandroidเครื่องมือแปลเป็นภาษาท้องถิ่นถึงบ้านของฉัน
Jacksonkr

7
sdkmanager --licenses ใช้งานไม่ได้อีกต่อไป ฉันใช้ - อัปเกรดละเว้นข้อผิดพลาดและสิ่งนี้เรียงลำดับปัญหาสิทธิ์ใช้งาน
jcsubmit

6
ฉันใช้คำสั่งนี้สำหรับสคริปต์สร้างสภาพแวดล้อม CI ด้วยการปรับเล็กน้อย ฉันได้เพิ่ม --sdk_root = $ ANDROID_SDK_PATH ปัญหาคือว่าใบอนุญาตได้รับการยอมรับและไม่ได้บันทึกลงในโฟลเดอร์รากของ Android SDK คำสั่งสุดท้าย: ใช่ | sdkmanager --licenses --sdk_root = $ ANDROID_SDK_PATH (โดยไม่ต้อง sudo)
adi9090

3
ต้องแน่ใจว่ามีการตั้งค่า$ANDROID_SDK_PATHไปยังเส้นทางรากที่เกิดขึ้นจริงที่คุณติดตั้ง SDK (เช่น: /opt/android-sdk) หรือเพียงแค่ใส่เส้นทางโดยตรง (เช่น: yes | sdkmanager --licenses --sdk_root=/opt/android-sdk)
GMC

คำตอบ:


365

AndroidSDK สามารถรับใบอนุญาตในที่สุด

yes | sdkmanager --licenses

แก้ไข:

ตามที่ระบุไว้ในความคิดเห็นโดย @MoOx บน macOS คุณสามารถทำได้

yes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses

ตามที่ระบุไว้ในความคิดเห็นโดย @pho, @mikebridge และ @ Noitidart บน Windows คุณสามารถทำได้

cmd.exe ""/K"%LocalAppData%\Android\sdk\tools\bin\sdkmanager.bat --licenses"

ต้องแน่ใจว่าติดตั้ง java ก่อน


4
ใน Widows ฉันต้องไปที่ Run จากC:\Users\x1\AppData\Local\Android\sdk\tools\androidนั้นก็เปิดป๊อปอัปแล้วติดตั้งหายไปจากนั้นคลิก "Accept Liscenses" ในกล่องโต้ตอบใหม่ที่ปรากฏ
Noitidart

8
สิ่งนี้ไม่ทำงานสำหรับ linux ไม่มีไฟล์ sdkmanager ภายใต้ tools / bin dir หรือที่อื่น คุณช่วยได้ไหม
Mehmed Mert

36
ใน macOS คุณสามารถทำได้yes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
MoOx

5
ฉันจะยอมรับใบอนุญาตอัตโนมัติจาก wrapper gradle ได้อย่างไร
Howard Swope

7
upvote ไปที่ @Noitidart สำหรับพา ธ แต่มันใช้งานไม่ได้ฉันต้องใช้ C: \ Users \ x1 \ AppData \ Local \ Android \ sdk \ tools \ bin \ sdkmanager - ส่วนขยายจากพร้อมรับคำสั่งและกด "y "+ เข้าสู่พรอมต์
GaneshT

177

ฉันพบสิ่งนี้ด้วยการalpha5แสดงตัวอย่าง

Jake Wharton ชี้ให้ฉันเห็นว่าคุณสามารถใช้งานได้

mkdir -p "$ANDROID_SDK/licenses"
echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"
echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_SDK/licenses/android-sdk-preview-license"

เพื่อสร้าง$ANDROID_HOME/licenseโฟลเดอร์ปัจจุบันบนเครื่องของคุณ นี้จะมีผลเช่นเดียวกับกระบวนการที่ระบุไว้ในลิงค์ของข้อผิดพลาด msg ( http://tools.android.com/tech-docs/new-build-system/license) )

แฮชคือ sha1s ของข้อความลิขสิทธิ์ที่ฉันจินตนาการว่าจะได้รับการปรับปรุงเป็นระยะดังนั้นรหัสนี้จะใช้งานได้นานมาก :)

และติดตั้งด้วยตนเอง แต่มันเป็นคุณสมบัติใหม่ของ gradle ที่จะทำ

ฉันประหลาดใจในตอนแรกว่านี่ไม่ได้ผลแม้ว่าฉันจะได้รับใบอนุญาตสำหรับส่วนประกอบที่มีชื่อผ่านandroidเครื่องมือ แต่มันก็ชี้ให้ฉันเห็นว่ามันเป็นผู้จัดการ SDK ภายใน AS ที่สร้าง/licensesโฟลเดอร์

ฉันเดาว่าเครื่องมือทางการไม่ต้องการข้ามขั้นตอนนี้ด้วยเหตุผลทางกฎหมาย

อ่านบันทึกย่อประจำรุ่นที่ระบุไว้อีกครั้ง

ดาวน์โหลดอัตโนมัติ SDK: Gradle จะพยายามดาวน์โหลดแพ็คเกจ SDK ที่ขาดหายไปซึ่งขึ้นอยู่กับโครงการ

ซึ่งไม่ได้หมายความว่าจะใช้งานได้หากคุณยังไม่ได้ติดตั้งเครื่องมือ Android และได้ยอมรับใบอนุญาตล่าสุดแล้ว

แก้ไข: โดยบอกว่ามันยังคงไม่ทำงานบนกล่องทดสอบของฉัน gubuntu จนกว่าฉันจะเชื่อมโยง SDK กับ AS CI ทำงานได้ดีแม้ว่า - ไม่แน่ใจว่าความแตกต่างคืออะไร ...


มีข้อผิดพลาดเล็ก ๆ น้อย ๆ ในคุณสมบัติ sdkDownload เกี่ยวกับส่วนประกอบบางอย่างเช่น support-v4 มันจะอัปเดตส่วนประกอบ แต่การไล่ระดับสีจะไม่เห็นการอัปเดตจนกว่าจะมีการเรียกใช้ครั้งถัดไป วิธีแก้ปัญหาหนึ่งอย่างในการดำเนินการไล่ระดับสองครั้งหนึ่งครั้งเพื่อทิ้ง: การอ้างอิงระดับล่าง || จริง - code.google.com/p/android/issues/detail?id=212309
Joe Bowbeer

6
คุณสามารถใช้แทนmkdir -p || true
oldergod

มันทำงานได้ดีขอบคุณสำหรับความผิดพลาดนี้ดีที่จะรู้ ในการตรวจสอบว่ามีการกำหนดเส้นทาง SDK ของคุณตามที่คาดไว้หรือไม่ให้ echo $ ANDROID_SDK
tryp

ในสภาพแวดล้อมของฉันไม่ได้กำหนด ANDROID_SDK แต่ใช้ได้กับ ANDROID_HOME
Dimitri L.

5
@stack_ved: ผมเพิ่งเพิ่มอีก:echo echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "${ANDROID_HOME}/licenses/android-sdk-license"แต่ฉันคิดว่าปัญหาของคุณซ่อนที่อื่น
พอล

132

สำหรับ Android Studio รุ่นใหม่ล่าสุด (2.3) วิธีที่ดีที่สุดในการอัปเดต / ยอมรับสัญญาอนุญาตทั้งหมดคือการเรียกใช้:

cd $ANDROID_HOME
tools/bin/sdkmanager --licenses

คุณยังอาจต้องคัดลอกไฟล์ลิขสิทธิ์ไปยังตำแหน่งอื่นตามการตั้งค่าของคุณ


นี่เป็นวิธีที่ดีที่สุดที่จะไปและมันใช้ได้กับทุกแพลตฟอร์มด้วยเช่นกันเพียงแค่รันtools/bin/sdkmanager --licenses
jnv

หากคุณมีผู้จัดการ SDK เก่า - ใบอนุญาตจะไม่ทำงาน มีความจำเป็นต้องคัดลอกโฟลเดอร์ tools ไปยังตำแหน่งอื่นจากนั้นใช้ --sdk_root = และชี้ไปที่โฟลเดอร์ sdk ของคุณจากนั้นคุณจะสามารถอัปเดตเครื่องมือให้เป็นเวอร์ชันที่ใหม่กว่า
Mirek Michalak

เราสามารถใช้yesคำสั่งนี้เพื่อสร้างระบบอัตโนมัติได้หรือไม่? คุณจะไม่สามารถเข้าถึงคอนโซลแบบโต้ตอบกับเครื่องเหล่านี้ได้เสมอดังนั้นการกดyบนแป้นพิมพ์จะไม่ทำงาน
void.pointer

ใครช่วยกรุณาแนะนำฉันถึงวิธีการใช้โซลูชันนี้? ต้องเพิ่มบรรทัดนี้ใน build.sh หรือไม่
stack_ved

1
มันใช้งานได้สำหรับฉัน แต่ฉันต้องทำcd $ANDROID_HOMEก่อนดำเนินการคำสั่งนี้
Inus Saha

57

สำหรับsdkmanagerยูทิลิตี้ใหม่:

yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;24.0.3"

มีความล่าช้าเล็กน้อยระหว่าง yesses ดังนั้นคำสั่งอาจแขวนกับใบอนุญาตที่แสดงอยู่ครู่หนึ่ง แต่ไม่ต้องการการแทรกแซงจากมนุษย์


ในการติดตั้งของฉัน debian9 ฉันมี sdkmanager.jar: android-sdk-linux / tools / lib / sdkmanager.jar และ # java -jar /android-sdk-linux/tools/lib/sdkmanager.jar ข้อผิดพลาด: คุณสมบัติไดเรกทอรีเครื่องมือ ไม่ได้ตั้งค่าโปรดตรวจสอบว่าคุณกำลังใช้งาน android
user3313834

1
สิ่งนี้เป็นไปตามข้อสันนิษฐานที่คุณดาวน์โหลดเครื่องมือ SDK เป็นไฟล์เก็บถาวรจาก Google และแยกไฟล์เหล่านั้นลงใน $ ANDROID_HOME
A. Rager

ดูเหมือนว่าup-to-dateคำตอบที่สุด ดูเหมือนว่า--licensesจะไม่มีอีกต่อไป หมายเหตุ: เพื่อดูรายการรุ่นที่เป็นไปได้ที่สามารถจัดเตรียมได้:$ANDROID_HOME/tools/bin/sdkmanager --list
Marinos An

2
ขอบคุณสำหรับคำใบ้ ฉันลงเอยด้วยการใช้yes | android-sdk-linux/tools/bin/sdkmanager --licenses || trueCI ของฉัน
iSWORD

es | $ ANDROID_HOME / tools / bin / sdkmanager "build-tools; 28.0.3" -> การเปลี่ยนเวอร์ชั่นที่เหมาะกับฉัน ขอบคุณมาก!
ishab acharya

43

หากคุณใช้ Jenkins คุณสามารถใช้สคริปต์ทุบตีต่อไปนี้เป็นขั้นตอนแรกในกระบวนการสร้าง:

(while sleep 3; do echo "y"; done) | $ANDROID_HOME/tools/android update sdk -u

แน่นอนว่านี่จะเป็นการติดตั้งการอัปเดตทั้งหมดที่มีอยู่ แต่มันจะช่วยคุณประหยัดเวลาถ้าคุณสามารถสำรองพื้นที่ดิสก์ได้ สลีปคือการหลีกเลี่ยง readline ที่ใช้งานไม่ได้ในโปรแกรมติดตั้งเนื่องจาก "ใช่" ทำงานไม่ถูกต้องในกรณีนี้

แก้ไข: คุณต้องเพิ่มปลั๊กอิน "ติดตั้งข้อกำหนดเบื้องต้นของโครงการ Android" ในขั้นตอนการสร้างเพื่อรับ $ ANDROID_HOME ที่ถูกต้องหากคุณใช้ตัวจัดการ SDK ในตัว


ฉันเพิ่มบรรทัดโค้ดก่อน "แพลตฟอร์ม Cordova เพิ่ม android" ใน jenkins build ของฉันซึ่งทำงานบน Ubuntu แต่ยังคงได้รับข้อผิดพลาดต่อไปนี้: BUILD FAILED ใน 7s ข้อผิดพลาด: / var / lib / jenkins / พื้นที่ทำงาน / qa_global_php / แพลตฟอร์ม / android / gradlew : คำสั่งล้มเหลวด้วยรหัสออก 1 ข้อผิดพลาดเอาท์พุท: ล้มเหลว: สร้างล้มเหลวด้วยข้อยกเว้น * เกิดข้อผิดพลาด: เกิดปัญหาในการกำหนดค่าโปรเจ็กต์รูท 'android' > คุณยังไม่ได้ยอมรับข้อตกลงสิทธิ์การใช้งานของคอมโพเนนต์ SDK ต่อไปนี้:
Ashish Karpe

[Android SDK Build-Tools 26.0.2] ก่อนที่จะสร้างโครงการของคุณคุณต้องยอมรับข้อตกลงสิทธิ์การใช้งานและทำการติดตั้งส่วนประกอบที่ขาดหายไปโดยใช้ Android Studio SDK Manager
Ashish Karpe

32

น่าเสียดายที่วิธีการเดิมของ OP แก้ไขไม่ได้ผลเสมอไป หากคุณพบว่าจากข้อผิดพลาดเป็นสิ่งที่คุณสร้างในปัจจุบันสร้างเครื่องมือรุ่น อาจเป็นได้ว่าเป็นเครื่องมือสร้างรุ่นที่ขาดหายไป ในกรณีนี้คุณต้องเริ่มต้นตัวจัดการ SDK ด้วยตนเองและเพิ่มเครื่องมือสร้างและยอมรับใบอนุญาต

ตามคำแนะนำของ OP มันมีลักษณะดังนี้

$ ./gradlew build

 
เพื่อเป็นเกียรติแก่การตั้งค่า JVM สำหรับงานสร้างนี้ JVM ใหม่จะถูกแยกออก โปรดพิจารณาใช้ daemon: https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html

FAILURE: บิลด์ล้มเหลวโดยมีข้อยกเว้น

* มีอะไรผิดปกติ:
เกิดปัญหาในการกำหนดค่าโครงการ ': แอป'
> คุณยังไม่ยอมรับข้อตกลงใบอนุญาตของส่วนประกอบ SDK ต่อไปนี้:
  [Android SDK Build-Tools 24.0.2]

...
สร้างความล้มเหลว

หมายเหตุ: 2017-04-16

เครื่องมือที่ได้รับตอนนี้เลิกในความโปรดปรานของใหม่android sdkmanagerโปรดดูคำตอบของ Joe Lawson และโพสต์ที่ตามมาตั้งแต่เดือนมีนาคม (2017) เป็นต้นไป

จากนั้นปรับคำสั่งของคุณดังนี้:

android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
รีเฟรชแหล่งที่มา:
  กำลังดึง https://dl.google.com/android/repository/addons_list-2.xml
  ตรวจสอบ XML
  แยกวิเคราะห์ XML
  ดึงรายการ Add-ons สำเร็จแล้ว
  รีเฟรชแหล่งที่มา
  การดึง URL: https://dl.google.com/android/repository/repository-11.xml
  ตรวจสอบ XML: https://dl.google.com/android/repository/repository-11.xml
  แยกวิเคราะห์ XML: https://dl.google.com/android/repository/repository-11.xml
...
ข้อผิดพลาด: การละเว้นตัวกรองแพ็กเกจที่ไม่รู้จัก 'build-tools-24.0.2'
-------------------------------
รหัสสิทธิ์การใช้งาน: android-sdk-license-xxxxxxxx
ใช้โดย: 
 - แพลตฟอร์ม SDK Android 7.0, API 24, รุ่นที่ 2
  - พื้นที่เก็บข้อมูลรองรับ Android, รุ่นที่ 39
-------------------------------

...

20 พฤศจิกายน 2558
คุณยอมรับใบอนุญาต 'android-sdk-license-xxxxxxxx' [y / n]: y

การติดตั้งคลังเก็บ:
  กำลังเตรียมการติดตั้งที่เก็บถาวร
  กำลังดาวน์โหลด SDK Platform Android 7.0, API 24, revision 2
  การติดตั้งแพลตฟอร์ม SDK Android 7.0, API 24, รุ่นที่ 2
    แพลตฟอร์ม SDK ที่ติดตั้ง Android 7.0, API 24, การแก้ไข 296%)
  กำลังดาวน์โหลด Android Support Repository, revision 39
  การติดตั้ง Android Support Repository, รุ่นที่ 39
    ติดตั้ง Android Support Repository แล้ว, แก้ไข 3999%)
  เสร็จสิ้น ติดตั้ง 2 แพ็คเกจ

ใช้งานอีกครั้ง แต่ก็ไม่ได้ทำให้ Gradle มีความสุข ดังนั้นการยอมรับด้วยตนเองจึงเป็นทางออกเพียงอย่างเดียวจนกว่าจะมีใครคิดหาสิ่งที่ดีกว่า (โปรดทำ!)


1
android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repositoryเรียกใช้ผ่านทางพรอมต์คำสั่งกับผู้ดูแลระบบแก้ไขข้อผิดพลาด ฉันไม่สามารถติดตั้งตัวจัดการปลั๊กอิน phonegap
Ravimallya

32

สิ่งนี้แก้ไขข้อผิดพลาดของฉัน

echo yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"

2
ในการบันทึกตัวละครสองสามตัวให้yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"ทำสิ่งเดียวกัน
Flimzy

31

เราพบปัญหาเดียวกันในการสร้างโครงการในเจนกินส์ ด้วยbuildToolsVersion '25.0.2'เราจะต้องยอมรับใบอนุญาตก่อนที่จะสร้าง ในกรณีของเราเราจำเป็นต้องเรียกใช้:

yes | sdkmanager --update ที่ยอมรับใบอนุญาตสำหรับ sdkmanager เองและจากนั้น

yes | sdkmanager --licenses ที่ยอมรับใบอนุญาตใหม่ที่ไม่ได้รับการยอมรับก่อนหน้านี้

เตือนความจำ: เรียกใช้คำสั่งเหล่านี้ด้วยผู้ใช้เดียวกันกับที่jenkinsทำ ใน Debian jenkinsของเราผู้ใช้เจนกินส์เป็นเพียง กล่าวอีกนัยหนึ่ง: ทำตามที่rootจะสร้างใบอนุญาตที่ยอมรับได้rootดังนั้นเจนกินส์จะไม่อ่าน

โดยวิธีการที่เราพบที่sdkmanager /var/lib/jenkins/tools/android-sdk/tools/binหากคุณไม่ได้อยู่ที่นั่นค้นหาด้วยfind / -name "sdkmanager"


2
อันนี้แก้ปัญหาในกรณีของฉันด้วย (สร้างเครื่องมือ 26.0.x) กับเจนกินส์ใน Docker ขอบคุณ!
Giordano

1
น่าเสียดายที่สิ่งนี้ไม่รวมส่วน "อัตโนมัติ" ของคำถาม
m0skit0

@ m0skit0 ขอบคุณสำหรับความคิดเห็นของคุณ! ฉันได้อัปเดตคำถามเพื่อให้ตรงกับคุณลักษณะรุ่นล่าสุดเพื่อยอมรับใบอนุญาตทั้งหมดโดยอัตโนมัติโดยไม่ต้องมีการแทรกแซงจากมนุษย์
Roc Boronat

24

androidเครื่องมือที่จะเลิกและคุณควรจะใช้sdkmanagerแทน sdkmanagerเขียนไฟล์ไลเซนส์เมื่อคุณยอมรับในครั้งแรก ใบอนุญาตจะเปลี่ยนไปตาม SDK ที่คุณใช้แม้ว่าคำสั่งนั้นจะเป็นเช่นไรก็ตาม

echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"

ทำงานในบางระบบ มันไม่ทำงานเลย การติดตั้ง SDK บางตัวคาดว่าจะให้สิทธิ์การใช้งานไฟล์สิ้นสุดโดยไม่ต้องขึ้นบรรทัดใหม่ในไฟล์ดังนั้นให้ลองเพิ่ม-nคำสั่ง echo

echo -n -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"

หากไม่ได้ผลคุณสามารถลองใช้การเข้ารหัส base64 แทน

ดังนั้นเพื่อค้นหาใบอนุญาตของฉัน:

$> rm ${ANDROID_HOME}/
$> unzip tools_r25.2.3-linux.zip -d ${ANDROID_HOME}
$> ${ANDROID_HOME}/tools/bin/sdkmanager "system-images;android-23;default;x86_64"

มันจะแจ้งให้คุณยอมรับใบอนุญาต ${ANDROID_HOME}/licenses/android-sdk-licenseหลังจากยอมรับมันจะคัดลอกไป เพื่อให้แน่ใจว่าคุณจะได้รับสิ่งที่เขียนใช้base64เสมอ

$> base64 ${ANDROID_HOME}/licenses/android-sdk-license
Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU=

จากนั้นคุณสามารถbase64 -dสร้างไฟล์ได้อย่างแน่นอน

$> echo Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU= | base64 -d > ${ANDROID_HOME}/licenses/android-sdk-license

คุณสามารถตรวจสอบว่าไฟล์ที่เขียนเป็นสิ่งที่คาดหวังไว้หรือไม่โดยการเรียกใช้ sha1sum

$> sha1sum ${ANDROID_HOME}/licenses/android-sdk-license
da6b80c9c47b41c0bf7032938e7137a58a3dc249

19

ถ้าคุณทำงานyes | sdkmanager --licensesแล้วเราพิมพ์เนื้อหาของ$ANDROID_HOME/licenses/android-sdk-license,

เราจะได้สิ่งนี้

# cat $ANDROID_HOME/licenses/android-sdk-license

8933bad161af4178b1185d1a37fbf41ea5269c55

d56f5187479451eabf01fb78af6dfcb131a6481e

สำหรับ GitLab CI เพื่อรับใบอนุญาต Android SDK Build-Tools 26.0.2 คุณต้องเรียกใช้สิ่งนี้

before_script:
  - mkdir -p $ANDROID_HOME/licenses
  - echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > $ANDROID_HOME/licenses/android-sdk-license
  - echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> $ANDROID_HOME/licenses/android-sdk-license

เสียงสะท้อนที่สองของคุณจะเหมือนกัน$ANDROID_HOME/licenses/android-sdk-licenseคือจุดประสงค์นี้หรือไม่? กล่าวคือ ผนวก
Ryan R

1
@RyanR ใช่เสียงสะท้อนที่สองกำลังต่อท้ายAndroid SDK Build-Tools 26.02เพิ่มสตริง sha1 ใบอนุญาตใหม่
jk2K

ฉันกำลังใช้ท่อ bitbucket แต่แนวคิดดูเหมือนจะเหมือนกับ GitLab CI คำตอบของคุณช่วยให้ฉันเข้าใจกระบวนการทั้งหมดดีขึ้น ขอบคุณ!
Ridcully

@Ridcully ฉันยังใช้ Bitbucket Pipelines และพบว่าตัวเองอยู่ที่นี่เมื่อเราอัพเกรดเป็นBuild-Tools 26.0.2และโครงสร้างของเราก็พัง yes | sdkmanager --licensesวิธีการแก้ปัญหาปลายของฉันคือการก็ทำ ไม่echoจำเป็นและเป็นหลักฐานในอนาคต
Ryan R

@ Ryan คุณหมายถึงฉันสามารถเพิ่ม 'ใช่ | sdkmanager --licenses 'to pip.yml? มันจะดีมาก!
Ridcully

16

โปรดทราบว่าสำหรับผู้ที่มาถึงคำถามนี้ในขณะนี้ build-tools-24.0.2 คือ (ฉันคิดว่า) ตอนนี้ถือว่าล้าสมัยดังนั้นคุณจะได้รับ:

 Error: Ignoring unknown package filter 'build-tools-24.0.2'

เมื่อรันคำสั่งต่าง ๆ ที่แนะนำให้ติดตั้ง

ทางออกคือการเพิ่ม--all:

android update sdk --no-ui --all --filter "build-tools-24.0.2"

นอกจากนี้หากคุณใช้งานบนลินุกซ์ 32 บิตทุกอย่าง หลังจากสร้างเครื่องมือ 23.0.1 เป็น 64 บิตเท่านั้นดังนั้นจะไม่ทำงาน ผู้ใช้ 32 บิตติดอยู่ที่ 23.0.1 วิธีเดียวที่จะได้เครื่องมือสร้างภายหลังคือเปลี่ยนเป็น 64 บิต


1
25.0.1ใช่สร้างเครื่องมือเป็นเพียงชนไป
not2qubit

1
วิธีการแก้ปัญหาของคุณเป็นสิ่งเดียวที่ฉันสามารถหาได้บนเครื่อง ubuntu 16 ที่ไม่มีหัวสำหรับ build-tools-25 และ gradle 4
spartygw

14

ถ้าคุณใช้ tools/bin/sdkmanager --licensesคุณยังต้องมีปฏิสัมพันธ์กับมนุษย์ ฉันมีปัญหาในการใช้ gitlab CI ของฉัน นี่คือทางออกของฉัน:

wget --quiet --output-document=tools.zip https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
unzip -qq tools.zip
echo y | tools/bin/sdkmanager "platforms;android-25"
echo y | tools/bin/sdkmanager "platform-tools"
echo y | tools/bin/sdkmanager "build-tools;25.0.2"
echo y | tools/bin/sdkmanager "extras;android;m2repository"
echo y | tools/bin/sdkmanager "extras;google;m2repository"

echo y จะตอบว่าใช่หากมีคำถามใด ๆ แต่คุณต้องทำหนึ่งบรรทัดต่อแพ็คเกจ installe


ยังค่อนข้างเกี่ยวข้องหลังจากหลายเดือน ขอบคุณ. คุณช่วยชีวิตฉันไว้ :)
Prasanna Ramaswamy

สิ่งนี้มีประโยชน์สำหรับฉันเช่นกันโดยใช้ GitLab
sebasira

13

นอกจากนี้คุณยังสามารถรัน:

$ANDROID_HOME/tools/bin/sdkmanager --licenses

และใน Windows ให้รัน:

%ANDROID_HOME%/tools/bin/sdkmanager --licenses

11

สำหรับข้อผิดพลาดเกี่ยวกับ SDK API หมายเลข 25:

android update sdk --no-ui --all --filter build-tools-25.0.1,android-25,extra-android-m2repository


10

ตกลงสำหรับทุกคนที่มีปัญหานี้ ณ ปีพ. ศ. 2561 คำตอบข้างต้นไม่ได้ผลสำหรับฉันเลย สิ่งที่ทำงานไม่ได้เปิด Android SDK - คลิกที่ปุ่มดาวน์โหลดบนแถบเครื่องมือและเลือกแพคเกจที่เหมาะสม หลังจากดาวน์โหลดเสร็จแล้วจะช่วยให้คุณยอมรับข้อตกลงสิทธิ์การใช้งาน

ป้อนคำอธิบายรูปภาพที่นี่


7

ฉันแก้ไขปัญหานี้ด้วยการสร้าง repo สาธารณะ git ด้วยไฟล์ลิขสิทธิ์ที่ยอมรับได้ จากนั้นฉันใช้wgetเพื่อดึงข้อมูลสิทธิ์การใช้งานเหล่านี้บนเครื่องใด ๆ ที่ฉันต้องการลงในไดเรกทอรี[sdk-dir] / licenseก่อนที่จะเรียกใช้. / gradlewเพื่อสร้างโครงการของฉัน


6

สำหรับผู้ที่มีปัญหาเกี่ยวกับ SDK บรรทัดคำสั่งเหตุผลที่ไม่พบใบอนุญาตที่คุณยอมรับก็เพราะว่าพวกเขาได้ถูกเขียนไปยังตำแหน่งอื่นที่ไม่ใช่ $ANDROID_HOME/licensesที่ที่พวกเขาต้องการ

ฉันพบทางออกที่ง่ายที่สุดคือการยอมรับใบอนุญาตเช่นนี้:

$ANDROID_HOME/bin/sdkmanager --licenses --sdk_root=$ANDROID_HOME

หมายเหตุ: นี่ถือว่าคุณได้ตั้งค่าANDROID_HOMEให้ชี้ไปที่ใดก็ตามที่ sdk ของคุณติดตั้งอยู่



6

สำหรับ windows เปิด cmd และป้อนลงใน binไดเรกทอรีโดยใช้คำสั่ง:

cd C:\Users\username\AppData\Local\Android\sdk\tools\android\Sdk\tools\bin

จากนั้นเรียกใช้sdkmanager --licensesคำสั่งจะขอให้ยอมรับใบอนุญาต


1
ขอบคุณนี่คือสิ่งที่ฉันทำ
mynameisjohnj

ฉันได้รับError: Unknown argument --licenses
deanwilliammills

4

ในที่สุดฉันก็พบวิธีแก้ปัญหาบน Windows เพื่อให้การติดตั้งอัตโนมัติและเงียบจริง:

ใน Windows ไวยากรณ์ต่อไปนี้ไม่ทำงาน:

echo y | sdkmanager --licenses

ดูเหมือนว่า "y" จะไม่ถูกส่งไปยังโปรแกรม java ที่เรียกว่าในแบทช์อย่างถูกต้อง

วิธีแก้ปัญหาคือการสร้างไฟล์ file-y.txt ที่มี "y" หลายอันทีละบรรทัดและใช้

call sdkmanager --licenses < file-y.txt

สิ่งนี้จะสร้างไฟล์ที่จำเป็นในไดเรกทอรีลิขสิทธิ์ ปัญหาน่าจะเกี่ยวข้องกับการใช้ BufferedReader ใน Java



3

ใน Windows PowerShell คุณสามารถทำได้

for($i=0;$i -lt 30;$i++) { $response += "y`n"}; $response | sdkmanager --licenses

นี่คือความยืดหยุ่นมากขึ้นและต้องการการแทรกแซงด้วยตนเองเป็นศูนย์ จำนวน 30 ข้อนั้นควรเพียงพอที่จะครอบคลุมจำนวนการยอมรับใบอนุญาต แต่สามารถเพิ่มได้หากจำเป็น


อีกเหตุผลหนึ่งที่ไม่ใช้ Windows
m0skit0

3

ฉันมีข้อผิดพลาดเดียวกันขณะใช้ Cordova

ปัญหาที่เกิดขึ้นเป็นผลมาจากความจริงที่ว่าผมติดตั้ง Android SDK ของผ่าน Android Studio และผ่านด้วยapt apt install android-sdk adbและ Cordova กำลังเรียกไฟล์ที่ติดตั้งผ่านaptแทนที่จะเป็นไฟล์ในไดเรกทอรีบ้านของฉัน

มันทำงานเมื่อฉันเปลี่ยนเส้นทางไปยัง SDK ในทุบตี:

# Change path
export ANDROID_HOME="$HOME/Android/Sdk/"
echo "Android home = $ANDROID_HOME"
# Accept licenses
eval "${ANDROID_HOME}/tools/bin/sdkmanager --licenses"
# Run Cordova
cordova build android

จากนั้นฉันก็ลบไฟล์ระบบที่ไม่ได้ใช้อีกต่อไป: apt remove android-sdk adb.


3

นี่คือการตั้งค่า Docker ของฉัน
คุณสามารถติดตามได้จากสภาพแวดล้อม Linux ธรรมดา

โปรดทราบว่าyes |และ--licenses --sdk_root=${ANDROID_HOME}ข้อ
ดูเหมือนว่าsdkmanager --updateย้อนกลับข้อตกลงดังนั้นyes |จะปรากฏสองครั้ง

FROM openjdk:8
# Install dev-essential(gnumake)
RUN apt update
RUN apt install -y build-essential
# Set ENV
ENV SDK_URL="https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip" \
    ANDROID_HOME="/usr/local/android-sdk" \
    ANDROID_VERSION=28 \
    ANDROID_BUILD_TOOLS_VERSION=28.0.3 \
    GRADLE_VERSION=4.10.3 \
    NDK_VERSION=r16b
# Download Android SDK
RUN mkdir "$ANDROID_HOME" .android \
    && cd "$ANDROID_HOME" \
    && curl -o sdk.zip $SDK_URL \
    && unzip sdk.zip \
    && rm sdk.zip \
    && yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses --sdk_root=${ANDROID_HOME}
# Install Android Build Tool and Libraries
RUN $ANDROID_HOME/tools/bin/sdkmanager --update
RUN yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
    "platforms;android-${ANDROID_VERSION}" \
    "platform-tools" --sdk_root=${ANDROID_HOME}
# Install Gradle
RUN wget https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-all.zip
RUN mkdir /opt/gradle
RUN unzip gradle-${GRADLE_VERSION}-all.zip -d /opt/gradle
ENV PATH=${PATH}:/opt/gradle/gradle-${GRADLE_VERSION}/bin
# Install NDK
RUN wget https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-linux-x86_64.zip
RUN mkdir /opt/ndk-bundle
RUN unzip android-ndk-${NDK_VERSION}-linux-x86_64.zip -d /opt/ndk-bundle
ENV PATH=${PATH}:/opt/ndk-bundle

RUN mkdir /application
WORKDIR /application

"ดูเหมือนว่า sdkmanager - อัปเดตย้อนกลับข้อตกลงดังนั้นใช่ | ปรากฏสองครั้ง" ว้าวคุณพูดถูก มันน่าผิดหวังมาก แต่ก็ดี
cephus

2

คุณสามารถยอมรับใบอนุญาตทั้งหมดได้โดยการดำเนินการคำสั่งต่อไปนี้:

 sdkmanager --licenses

สิ่งนี้จะแจ้งให้คุณทราบถึงใบอนุญาตแต่ละใบที่คุณยังไม่ได้รับและคุณสามารถป้อนyเพื่อยอมรับใบอนุญาตแต่ละใบได้


"อัตโนมัติ"
m0skit0

2

ฉันลองทุกคำสั่งข้างต้นบนเครื่อง windows 10 แต่วิธีแก้ไขคือการใช้ SDKMANAGER เพื่อตรวจสอบและยอมรับใบอนุญาตซื้อติดตั้งรุ่นที่ขาดหายไป

ป้อนคำอธิบายรูปภาพที่นี่


คำสั่ง CMD ไม่ทำงานสำหรับฉันเฉพาะโซลูชันนี้ ขอบคุณ
deanwilliammills

2

เส้นทางนี้มีการเปลี่ยนแปลงในรุ่นล่าสุด ./sdkmanagerตอนนี้อยู่ใน/Library/Android/sdk/cmdline-tools/latest/binแล้วก็ทำ

./sdkmanager --licenses

2

หมายเหตุ: นี่สำหรับผู้ใช้ Mac เท่านั้น

ฉันมีปัญหาเดียวกัน แต่ไม่มีคำตอบที่โพสต์ช่วยเนื่องจากไม่มีtoolsโฟลเดอร์อยู่Library/Android/sdk.(ฉันใช้ Android 3.6.3 บน Mac OS 10.14.4)

ภาพหน้าจอข้อผิดพลาด

ขั้นตอนด้านล่างช่วยให้ฉันเอาชนะข้อผิดพลาดปัญหาด้านลิขสิทธิ์:

  1. เปิด Android Studio
  2. cmd + shift + Aกด สิ่งนี้จะเปิดขึ้นActionsหน้าต่างขึ้น
  3. ค้นหา SDK Managerและกด Enter เพื่อเปิด
  4. นี่เป็นการเปิดป๊อปอัปสำหรับ Android SDKสำหรับ เลือก Android เวอร์ชันอื่นนอกเหนือจากที่ติดตั้งแล้ว (ในกรณีของฉันติดตั้ง Android 10.0 แล้วดังนั้นฉันเลือก Android 9.0)
  5. จากนั้นเลือกApplyปุ่ม สิ่งนี้จะติดตั้ง SDK ที่สอดคล้องกัน

สารละลาย

  1. ตอนนี้เรียกใช้แอปของคุณมันควรจะทำงานได้โดยไม่มีข้อยกเว้น

ภาพหน้าจอความสำเร็จ


Hey, แก้นี้เหมืองใน Linuxmint 19.3
GaryP

1

ฉันวิ่ง

#react-native run-android 

จาก terminal และพบปัญหานั้น สำหรับตนเองไปที่ Android Studio -> Android SDK -> แพลตฟอร์ม SDK คลิกแสดงรายละเอียดแพ็คเกจและตรวจสอบ:

+ Google APIs
+ Android SDK Platform 23
+ Intel x86 Atom_64 System Image
+ Google APIs Intel x86 Atom_64 System Image

เมื่อติดตั้งแพคเกจให้ตรวจสอบ accept license => สามารถแก้ปัญหาได้


1

บน Mac OSX ไปที่ sdk/tools/bin

จากนั้นเรียกใช้./sdkmanager --licensesและยอมรับใบอนุญาตทั้งหมด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.