Tự động chấp nhận tất cả các giấy phép SDK


441

Kể từ khi bổ sung các plugin Android 2.2-alpha4 :

Gradle sẽ cố tải xuống các gói SDK bị thiếu mà một dự án phụ thuộc vào

Điều này thật tuyệt vời và được biết đến là một dự án JakeWharton .

Nhưng, để tải xuống thư viện SDK, bạn cần phải: chấp nhận các thỏa thuận cấp phép hoặc lớp cho bạn biết:

Bạn chưa chấp nhận thỏa thuận cấp phép của các thành phần SDK sau: [Công cụ xây dựng SDK Android 24, Nền tảng SDK Android 24]. Trước khi xây dựng dự án của bạn, bạn cần chấp nhận các thỏa thuận cấp phép và hoàn tất cài đặt các thành phần còn thiếu bằng Trình quản lý SDK Android Studio. Ngoài ra, để tìm hiểu cách chuyển các thỏa thuận cấp phép từ máy trạm này sang máy trạm khác, hãy truy cập http://d.android.com/r/studio-ui/export-licenses.html

Và đây là một vấn đề vì tôi rất thích cài đặt tất cả các phụ thuộc sdk trong khi thực hiện a gradle build.

Tôi đang tìm kiếm một giải pháp để tự động chấp nhận tất cả các giấy phép. Có lẽ một kịch bản lớp? Bạn có bất cứ ý tưởng ?

Cảm ơn!

[BIÊN TẬP]

Một giải pháp là thực thi:

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

Và cài đặt thủ công, nhưng đó là mục đích tính năng mới của lớp để thực hiện.

[CHỈNH 2]

Một giải pháp tốt hơn là sử dụng sdkmananger:

yes | sdkmanager --licenses

12
Bạn cũng có thể bật một echo y |lệnh trước lệnh đó để tự động chấp nhận giấy phép. Hữu ích khi chạy trên hộp CI không đầu :)
Dori

3
Tôi phải làm ~/.android/tools/android update sdk --no-ui --filter build-tools-25.0.0,android-25,extra-android-m2repositoryandroidcông cụ được bản địa hóa tại nhà của tôi
Jacksonkr

7
sdkmanager - không có tác dụng. Tôi đã sử dụng - nâng cấp, bỏ qua các lỗi và điều này sắp xếp các vấn đề giấy phép.
jcsubmit

6
Tôi đã sử dụng lệnh này cho tập lệnh xây dựng môi trường CI với sự điều chỉnh nhỏ. Tôi đã thêm --sdk_root = $ ANDROID_SDK_PATH. Vấn đề là giấy phép đã được chấp nhận và không được lưu vào thư mục gốc SDK của Android. Lệnh cuối cùng: có | sdkmanager --licenses --sdk_root = $ ANDROID_SDK_PATH (không có sudo)
adi9090

3
Hãy chắc chắn đã đặt thành $ANDROID_SDK_PATHđường dẫn gốc thực tế nơi bạn đã cài đặt SDK (tức là /opt/android-sdk:) hoặc chỉ cần đặt đường dẫn trực tiếp (ví dụ yes | sdkmanager --licenses --sdk_root=/opt/android-sdk:)
gmc

Câu trả lời:


365

AndroidSDK cuối cùng có thể chấp nhận giấy phép.

yes | sdkmanager --licenses

BIÊN TẬP:

như được chỉ ra trong các bình luận của @MoOx, trên macOS, bạn có thể làm

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

như được chỉ ra trong các bình luận của @pho, @mikebridge và @ Noitidart trên Windows, bạn có thể làm

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

hãy chắc chắn cài đặt java trước


4
Trên Widows tôi phải vào Run, sau C:\Users\x1\AppData\Local\Android\sdk\tools\androidđó nó mở một GUI và sau đó cài đặt bị thiếu, sau đó nhấp vào "Chấp nhận Liscenses" trong hộp thoại mới bật lên.
Noitidart

8
Điều này không làm việc cho linux. Không có tệp sdkmanager dưới các công cụ / bin dir hoặc một nơi nào khác. Bạn có thể vui lòng giúp đỡ?
Mehmed Mert

36
Trên macOS, bạn có thể làmyes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
MoOx

5
Làm cách nào tôi có thể chấp nhận giấy phép tự động từ lớp bọc?
Howard Swope

7
upvote cho @Noitidart cho đường dẫn, nhưng nó không hoạt động, tôi đã phải chạy C: \ Users \ x1 \ AppData \ Local \ Android \ sdk \ tools \ bin \ sdkmanager - tấn công từ dấu nhắc lệnh và nhấn "y "+ Nhập vào lời nhắc
GaneshT

177

Tôi đã gặp điều này với alpha5bản xem trước.

Jake Wharton đã chỉ ra cho tôi rằng bạn hiện có thể sử dụng

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

để tạo lại hiện tại $ANDROID_HOME/license thư mục trên máy của bạn. Điều này sẽ có kết quả tương tự như quy trình được nêu trong liên kết của thông báo lỗi ( http://tools.android.com/tech-docs/new-build-system/license ).

Các giá trị băm là sha1 của văn bản giấy phép, mà tôi tưởng tượng sẽ được cập nhật định kỳ, vì vậy mã này sẽ chỉ hoạt động rất lâu :)

Và cài đặt thủ công, nhưng đó là mục đích tính năng mới của lớp để thực hiện.

Lúc đầu tôi rất ngạc nhiên vì nó không hoạt động, ngay cả khi tôi đã chấp nhận giấy phép cho các thành phần được đặt tên thông qua android công cụ, nhưng nó được chỉ ra cho tôi là trình quản lý SDK bên trong AS tạo /licensesthư mục.

Tôi đoán rằng các công cụ chính thức sẽ không muốn bỏ qua bước này vì lý do pháp lý.

Đọc lại bản phát hành ghi chú

Tự động tải xuống SDK: Gradle sẽ cố tải xuống các gói SDK bị thiếu mà dự án phụ thuộc vào.

Điều đó không có nghĩa là nó sẽ hoạt động nếu bạn chưa cài đặt các công cụ Android và đã chấp nhận (các) giấy phép mới nhất.

EDIT: Nói rằng, nó vẫn không hoạt động trên hộp thử nghiệm gubfox của tôi cho đến khi tôi liên kết SDK lên đến AS. CI hoạt động tốt mặc dù - không chắc sự khác biệt là gì ...


Có một trục trặc nhỏ trong tính năng sdkD Download liên quan đến một số thành phần, ví dụ: support-v4. Nó sẽ cập nhật các thành phần nhưng gradle sẽ không thấy cập nhật cho đến lần gọi tiếp theo. Một cách giải quyết để thực hiện phân lớp hai lần, một lần để vứt bỏ: phụ thuộc cấp bậc | | đúng - code.google.com/p/android/issues/detail?id=212309
Joe Bowbeer

6
bạn có thể sử dụng mkdir -pthay vì || true.
oldergod

Nó hoạt động cảm ơn bạn cho trục trặc này, tốt để biết. Để kiểm tra xem đường dẫn SDK của bạn có được xác định như mong đợi không: echo $ ANDROID_SDK
thử

Trong môi trường của tôi, ANDROID_SDK không được xác định, nhưng nó hoạt động với ANDROID_HOME
Dimitri L.

5
@stack_ved: Tôi vừa thêm một thứ khác echo: echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "${ANDROID_HOME}/licenses/android-sdk-license". Nhưng tôi nghĩ vấn đề của bạn ẩn ở một nơi khác.
Paul

132

Đối với Android Studio mới nhất (2.3), cách tốt nhất để cập nhật / chấp nhận tất cả các giấy phép là chạy:

cd $ANDROID_HOME
tools/bin/sdkmanager --licenses

bạn vẫn có thể cần phải sao chép các tệp giấy phép sang các vị trí khác dựa trên thiết lập của bạn.


Đây có vẻ là cách tốt nhất để đi và nó cũng hoạt động trên tất cả các nền tảng, chỉ cần chạytools/bin/sdkmanager --licenses
jnv

Nếu bạn có trình quản lý sdk cũ - thì sẽ không hoạt động. Cần sao chép thư mục công cụ sang vị trí khác sau đó sử dụng --sdk_root = và trỏ nó vào thư mục sdk của bạn, sau đó bạn có thể cập nhật công cụ lên phiên bản mới hơn.
Mirek Michalak

chúng ta có thể yeschuyển sang lệnh này bằng cách nào đó cho các hệ thống xây dựng tự động? Bạn sẽ không có quyền truy cập bảng điều khiển tương tác vào các máy này, vì vậy nhấn yvào bàn phím sẽ không hoạt động.
void.pulum

Bất cứ ai có thể xin vui lòng hướng dẫn tôi làm thế nào để thực hiện giải pháp này? Phải thêm dòng này trong build.sh?
stack_ved

1
nó làm việc cho tôi nhưng tôi phải làm cd $ANDROID_HOMEtrước khi thực hiện lệnh này
Inus Saha

57

Đối với sdkmanagertiện ích mới :

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

Có một chút chậm trễ giữa các năm, vì vậy lệnh có thể bị treo với giấy phép hiển thị trong một thời gian, nhưng nó không cần sự can thiệp của con người.


Trong bản cài đặt debian9 tôi chỉ có một sdkmanager.jar: android-sdk-linux / tools / lib / sdkmanager.jar và # java -jar /android-sdk-linux/tools/lib/sdkmanager.jar Lỗi: Thuộc tính thư mục công cụ chưa được đặt, vui lòng đảm bảo rằng bạn đang thực thi Android
user3313834

1
Điều này dựa trên giả định rằng bạn đã tải xuống các công cụ SDK dưới dạng lưu trữ từ Google và giải nén chúng thành $ ANDROID_HOME
A. Rager

Đây có vẻ là up-to-datecâu trả lời nhất . Dường như --licenseskhông còn tồn tại nữa. Lưu ý: để xem danh sách các phiên bản có thể được cung cấp:$ANDROID_HOME/tools/bin/sdkmanager --list
Marinos An

2
Cảm ơn đã gợi ý. Tôi đã kết thúc bằng cách sử dụng yes | android-sdk-linux/tools/bin/sdkmanager --licenses || truetrong CI của tôi.
iSWORD

es | $ ANDROID_HOME / tools / bin / sdkmanager "build-tools; 28.0.3" -> thay đổi phiên bản làm việc cho tôi. Cảm ơn !
ishab acharya

43

Nếu bạn đang sử dụng Jenkins, bạn có thể sử dụng tập lệnh bash sau đây làm bước đầu tiên trong quy trình xây dựng:

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

Điều này tất nhiên sẽ cài đặt TẤT CẢ các bản cập nhật có sẵn, nhưng nó sẽ giúp bạn tiết kiệm thời gian nếu bạn có thể tiết kiệm dung lượng đĩa. Ngủ là để tránh đường đọc bị hỏng trong chương trình cài đặt, vì "có" không hoạt động đúng trong trường hợp này.

EDIT: Bạn cũng cần thêm plugin "Cài đặt điều kiện tiên quyết cho dự án Android" trong bước xây dựng để có được $ ANDROID_HOME chính xác nếu bạn đang sử dụng trình quản lý SDK tích hợp.


Tôi thêm dòng mã của bạn trước khi "nền tảng cordova thêm android" trong bản dựng jenkins của tôi đang chạy trên Ubuntu nhưng vẫn gặp lỗi sau: BUILD FAILED trong 7 giây Lỗi: / var / lib / jenkins / workspace / qa_global_php / platform / android / gradlew : Lệnh thất bại với mã thoát 1 Lỗi đầu ra: FAILURE: Build thất bại với một ngoại lệ. * Điều gì đã xảy ra: Đã xảy ra sự cố khi định cấu hình dự án gốc 'android'. > Bạn chưa chấp nhận thỏa thuận cấp phép của các thành phần SDK sau:
Ashish Karpe

[Công cụ xây dựng SDK Android 26.0.2]. Trước khi xây dựng dự án của bạn, bạn cần chấp nhận các thỏa thuận cấp phép và hoàn tất cài đặt các thành phần còn thiếu bằng Trình quản lý SDK Android Studio.
Ashish Karpe

32

Thật không may, cách OP giải quyết ban đầu không phải lúc nào cũng hoạt động. Nếu bạn tìm thấy từ thông báo lỗi, phiên bản công cụ xây dựng hiện tại của bạn là gì . Nó có thể là một phiên bản cao hơn của các công cụ xây dựng bị thiếu. Trong trường hợp đó, bạn cần khởi động thủ công SDK Manager và thêm các công cụ xây dựng và chấp nhận giấy phép.

Theo hướng dẫn của OP, nó trông như sau.

$ ./gradlew build

 
Để tôn vinh các cài đặt JVM cho bản dựng này, một JVM mới sẽ được chia rẽ. Vui lòng xem xét việc sử dụng trình nền: https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html.

FAILURE: Build thất bại với một ngoại lệ.

* Có chuyện gì:
Đã xảy ra sự cố khi định cấu hình dự án ': ứng dụng'.
> Bạn chưa chấp nhận thỏa thuận cấp phép của các thành phần SDK sau:
  [Công cụ xây dựng SDK Android 24.0.2].

...
THIẾT LẬP THẤT BẠI

LƯU Ý: 2017-04-16

Công androidcụ này hiện đã bị từ chối ủng hộ cái mới sdkmanager. Vui lòng xem câu trả lời của Joe Lawson và các bài đăng tiếp theo từ tháng 3 (2017) trở đi.

Sau đó điều chỉnh lệnh của bạn như sau:

android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
Làm mới nguồn:
  Tìm nạp https://dl.google.com/android/reposeective/addons_list-2.xml
  Xác thực XML
  Phân tích cú pháp XML
  Danh sách tiện ích đã tìm nạp thành công
  Làm mới nguồn
  Tìm nạp URL: https://dl.google.com/android/reposeective/reposeective-11.xml
  Xác thực XML: https://dl.google.com/android/reposeective/reposeective-11.xml
  Phân tích cú pháp XML: https://dl.google.com/android/reposeective/reposeective-11.xml
...
Lỗi: Bỏ qua bộ lọc gói không xác định 'build-tools-24.0.2'
-------------------------------
Giấy phép id: android-sdk-License-xxxxxxxx
Được sử dụng bởi: 
 - Nền tảng SDK Android 7.0, API 24, phiên bản 2
  - Kho lưu trữ hỗ trợ Android, sửa đổi 39
-------------------------------

...

Ngày 20 tháng 11 năm 2015
Bạn có chấp nhận giấy phép 'android-sdk-License-xxxxxxxx' [y / n]: y

Cài đặt tài liệu lưu trữ:
  Chuẩn bị cài đặt tài liệu lưu trữ
  Tải xuống SDK Platform Android 7.0, API 24, phiên bản 2
  Cài đặt SDK Platform Android 7.0, API 24, phiên bản 2
    Đã cài đặt Nền tảng SDK Android 7.0, API 24, sửa đổi 296%)
  Tải xuống Kho lưu trữ hỗ trợ Android, sửa đổi 39
  Cài đặt Kho lưu trữ hỗ trợ Android, sửa đổi 39
    Đã cài đặt Kho lưu trữ hỗ trợ Android, sửa đổi 3999%)
  Làm xong. 2 gói cài đặt.

Chạy lại cái này, vẫn không làm Gradle vui. Vì vậy, chấp nhận thủ công là giải pháp duy nhất cho đến khi ai đó nghĩ ra thứ gì đó tốt hơn. (Vui lòng làm!)


1
android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repositorychạy lệnh này thông qua dấu nhắc lệnh với quyền quản trị đã sửa lỗi. Tôi không thể cài đặt trình quản lý plugin
phonegap

32

điều này đã giải quyết lỗi của tôi

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

2
Để lưu một vài ký tự, yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"làm điều tương tự.
Flimzy

31

Chúng tôi đã tìm thấy vấn đề tương tự khi xây dựng dự án trên Jenkins. Với buildToolsVersion '25.0.2', chúng tôi phải chấp nhận giấy phép trước khi xây dựng. Trong trường hợp của chúng tôi, chúng tôi cần phải chạy:

yes | sdkmanager --update chấp nhận giấy phép cho chính sdkmanager, và sau đó

yes | sdkmanager --licenses chấp nhận giấy phép mới không được chấp nhận trước đây

Hãy nhớ rằng: chạy các commans này với cùng một người dùng jenkins. Trong Debian của chúng tôi, người dùng Jenkins chỉ là jenkins. Nói cách khác: làm như vậy rootsẽ tạo ra các giấy phép được chấp nhận root, vì vậy Jenkins sẽ không đọc chúng.

Nhân tiện, chúng tôi tìm thấy sdkmanagertại /var/lib/jenkins/tools/android-sdk/tools/bin. Nếu bạn không ở đó, hãy tìm nó vớifind / -name "sdkmanager"


2
cái này cũng giải quyết được vấn đề trong trường hợp của tôi (công cụ xây dựng 26.0.x), với Jenkins trong Docker. Cảm ơn!
Giordano

1
Thật không may, điều này không bao gồm phần "tự động" của câu hỏi.
m0skit0

@ m0skit0 cảm ơn bình luận của bạn! Tôi đã cập nhật câu hỏi để phù hợp với tính năng phiên bản mới nhất để tự động chấp nhận tất cả các giấy phép mà không cần sự can thiệp của con người.
Roc Boronat

24

Công androidcụ này không được dùng nữa và bạn nên sử dụng sdkmanagerthay thế. sdkmanagercũng viết tập tin giấy phép khi bạn lần đầu tiên chấp nhận nó. Giấy phép thay đổi tùy thuộc vào SDK bạn đang sử dụng, mặc dù lệnh

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

hoạt động trên một số hệ thống. Nó sẽ không hoạt động trên tất cả. Một số cài đặt SDK dự kiến ​​sẽ cấp phép tệp kết thúc mà không có dòng mới trong tệp, vì vậy hãy thử thêm một -nlệnh echo.

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

Nếu điều đó không hiệu quả, bạn có thể thử sử dụng mã hóa base64 thay thế.

Vì vậy, để khám phá giấy phép của tôi:

$> 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"

Nó sẽ nhắc bạn chấp nhận giấy phép. Sau khi chấp nhận nó sẽ sao chép nó vào ${ANDROID_HOME}/licenses/android-sdk-license. Để đảm bảo bạn luôn nhận được chính xác những gì được sử dụng bằng văn bản base64.

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

Sau đó, bạn có thể sử dụng base64 -dtạo lại các tập tin chính xác.

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

Bạn có thể xác minh nếu tệp được viết là những gì được mong đợi bằng cách chạy sha1sum trên nó.

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

19

nếu bạn chạy yes | sdkmanager --licenses, sau đó chúng tôi in nội dung của $ANDROID_HOME/licenses/android-sdk-license,

chúng ta sẽ có được điều này

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

8933bad161af4178b1185d1a37fbf41ea5269c55

d56f5187479451eabf01fb78af6dfcb131a6481e

Đối với GitLab CI, để chấp nhận giấy phép 26.0.2 của SDK Android Build-Tools, bạn cần chạy nó

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

Tiếng vang thứ hai của bạn sẽ giống như $ANDROID_HOME/licenses/android-sdk-licensedự định này? I E. nối thêm
Ryan R

1
@RyanR, vâng, tiếng vang thứ hai đang nối thêm, Android SDK Build-Tools 26.02thêm chuỗi sha1 giấy phép mới
jk2K

Tôi đang sử dụng các đường ống bitbucket, nhưng khái niệm này có vẻ giống với GitLab CI. Câu trả lời của bạn đã giúp tôi hiểu toàn bộ quá trình tốt hơn. Cảm ơn!
Vô lý

@Ridcully Tôi cũng đang sử dụng Bitbucket Pipelines và thấy mình ở đây khi chúng tôi nâng cấp lên Build-Tools 26.0.2và bản dựng của chúng tôi bị hỏng . Giải pháp cuối cùng của tôi chỉ đơn giản là làm yes | sdkmanager --licenses. Không echocần thiết và đây là bằng chứng trong tương lai.
Ryan R

@Ryan Ý bạn là tôi chỉ có thể thêm 'có | sdkmanager --licenses 'đến pipe.yml? Điều đó sẽ rất tuyệt!
Vô lý

16

Lưu ý rằng đối với bất kỳ ai đến với câu hỏi này hiện tại, build-tools-24.0.2 hiện tại (tôi nghĩ) đã bị coi là lỗi thời, vì vậy bạn sẽ nhận được:

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

khi chạy các lệnh khác nhau đã được đề xuất để cài đặt chúng.

Giải pháp là thêm --all:

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

Ngoài ra, nếu bạn đang sử dụng linux 32 bit, mọi thứ sau khi xây dựng công cụ 23.0.1 chỉ là 64 bit , vì vậy sẽ không chạy. Người dùng 32 bit bị kẹt vào ngày 23.0.1, cách duy nhất để có được công cụ xây dựng sau này là chuyển sang 64 bit.


1
Vâng, công cụ xây dựng đã bị va vào 25.0.1.
not2qubit

1
Giải pháp của bạn là điều duy nhất tôi có thể tìm thấy để làm việc trên máy ub Ubuntu 16 không đầu dành cho công cụ xây dựng-25 và lớp 4
spartygw

14

Nếu bạn sử dụng tools/bin/sdkmanager --licensesbạn vẫn cần phải có một tương tác của con người. Tôi có vấn đề với việc sử dụng CI gitlab của tôi. Đây là giải pháp của tôi:

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 sẽ trả lời là có nếu có bất kỳ câu hỏi nào, nhưng bạn cần tạo một dòng trên mỗi gói installe


Vẫn còn khá liên quan sau vài tháng. Cảm ơn bạn. Bạn đã cứu ngày của tôi :)
Prasanna Ramaswamy

Điều này rất hữu ích cho tôi, cũng sử dụng GitLab
sebasira

13

Bạn cũng có thể thực hiện:

$ANDROID_HOME/tools/bin/sdkmanager --licenses

Và trong Windows, thực thi:

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

11

Đối với thông báo lỗi về SDK api số 25:

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


10

Ok CHO MỌI NGƯỜI ĐÃ CÓ VẤN ĐỀ NÀY 2018. Các câu trả lời trên hoàn toàn không có tác dụng với tôi. Những gì DID hoạt động là mở SDK Android - nhấp vào nút TẢI XUỐNG trên thanh công cụ và chọn các gói thích hợp. Sau khi họ tải xuống xong, nó sẽ cho phép bạn chấp nhận thỏa thuận cấp phép.

nhập mô tả hình ảnh ở đây


7

Tôi đã giải quyết vấn đề này bằng cách tạo một repo git công khai với các tệp giấy phép được chấp nhận. Sau đó, tôi sử dụng wgetđể tìm nạp các giấy phép này trên bất kỳ máy nào tôi cần vào thư mục [sdk-dir] / giấy phép trước khi chạy ./gradlew để xây dựng dự án của tôi.


6

Đối với những người gặp sự cố với SDK dòng lệnh, lý do nó không tìm thấy giấy phép bạn đã chấp nhận là vì chúng đã được ghi vào một vị trí khác với $ANDROID_HOME/licensesnơi cần đến.

Tôi thấy giải pháp đơn giản nhất là chấp nhận các giấy phép như thế này:

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

Lưu ý: Điều này giả định rằng bạn đã đặt ANDROID_HOMEđể trỏ đến bất cứ nơi nào sdk của bạn được cài đặt.


6

cd $ANDROID_HOME/tools/bin yes | ./sdkmanager --update

hoặc là

yes | $ANDROID_HOME/tools/bin/sdkmanager --update


"Tự động"
m0skit0

6

cho windows, mở cmd và nhập vào binthư mục bằng cách chạy lệnh:

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

Sau đó chạy sdkmanager --licenseslệnh, nó yêu cầu chấp nhận giấy phép.


1
Cảm ơn đây là những gì tôi đã làm
mynameisjohnj

Tôi nhận đượcError: Unknown argument --licenses
deanwilliammills

4

Cuối cùng tôi đã tìm thấy một giải pháp trên Windows, để có một cài đặt tự động và im lặng thực sự:

Trên Windows, cú pháp sau không hoạt động:

echo y | sdkmanager --licenses

Có vẻ như "y" không được gửi chính xác đến chương trình java được gọi trong lô.

Cách giải quyết là tạo tệp tệp-y.txt với nhiều "y", từng dòng một và sử dụng

call sdkmanager --licenses < file-y.txt

Điều này sẽ tạo ra các tập tin cần thiết trong thư mục giấy phép. Vấn đề có lẽ liên quan đến việc sử dụng BufferedReader trong Java



3

Trong Windows PowerShell, bạn có thể làm

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

Điều này linh hoạt hơn nhiều và không cần can thiệp thủ công. Số 30 là tùy ý, nên đủ để bao gồm số lượng chấp nhận giấy phép, nhưng có thể tăng lên nếu cần


Một lý do khác để không sử dụng Windows.
m0skit0

3

Tôi đã có cùng một lỗi trong khi sử dụng Cordova.

Vấn đề là do thực tế rằng tôi đã cài đặt Android SDK thông qua Android Studio và thông qua aptvới apt install android-sdk adb. Và Cordova đã gọi các tệp được cài đặt thông qua aptthay vì các tệp trong thư mục nhà của tôi.

Nó hoạt động khi tôi thay đổi đường dẫn đến SDK trong bash:

# 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

Sau đó, tôi xóa các tệp hệ thống không được sử dụng nữa : apt remove android-sdk adb.


3

Đây là thiết lập Docker của tôi.
Bạn có thể theo dõi từ một môi trường Linux đơn giản.

Lưu ý rằng yes |--licenses --sdk_root=${ANDROID_HOME}mệnh đề.
Có vẻ như hoàn nguyên các sdkmanager --updatethỏa thuận, vì vậy yes |được xuất hiện hai lần.

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

"Có vẻ như sdkmanager --update hoàn nguyên các thỏa thuận, vì vậy, có | xuất hiện hai lần." Ồ, bạn nói đúng. Điều này rất bực bội nhưng tìm thấy tốt.
cephus

2

Bạn có thể chấp nhận tất cả giấy phép bằng cách thực hiện lệnh sau:

 sdkmanager --licenses

Điều này sẽ nhắc bạn qua từng giấy phép mà bạn chưa chấp nhận và bạn chỉ cần nhập yđể chấp nhận từng giấy phép.


"Tự động"
m0skit0

2

Tôi đã thử tất cả các lệnh trên trên máy Windows 10 nhưng giải pháp là sử dụng SDKMANAGER để kiểm tra và chấp nhận giấy phép mua cài đặt các phiên bản bị thiếu

nhập mô tả hình ảnh ở đây


Không có lệnh CMD nào làm việc cho tôi, chỉ có giải pháp này. Cảm ơn
deanwilliammills

2

Đường dẫn này đã được thay đổi trong các phiên bản gần đây. ./sdkmanagerbây giờ /Library/Android/sdk/cmdline-tools/latest/binvà sau đó chỉ cần làm

./sdkmanager --licenses

2

Lưu ý: Điều này chỉ dành cho người dùng Mac

Tôi gặp vấn đề tương tự nhưng không có câu trả lời nào được đăng giúp vì không có toolsthư mục nào hiện diện Library/Android/sdk.(Tôi đang sử dụng Android 3.6.3 trên Mac OS 10.14.4)

ảnh chụp màn hình lỗi

Các bước dưới đây đã giúp tôi khắc phục lỗi cấp phép:

  1. Mở Android Studio
  2. Nhấn cmd + shift + A. Điều này sẽ mở Actionscửa sổ bật lên.
  3. Tìm kiếm SDK Managervà nhấn enter để mở.
  4. Điều này mở ra pop-up cho Android SDK. Chọn một số phiên bản Android khác ngoài một phiên bản đã được cài đặt. (Trong trường hợp của tôi, Android 10.0 đã được cài đặt nên tôi đã chọn Android 9.0)
  5. Sau đó chọn Applynút. Điều này sẽ cài đặt SDK tương ứng.

Giải pháp

  1. Bây giờ chạy ứng dụng của bạn, nó sẽ hoạt động mà không có ngoại lệ.

ảnh chụp màn hình thành công


Này, cái này giải quyết của tôi trong Linuxmint 19.3
GaryP

1

tôi chạy

#react-native run-android 

từ thiết bị đầu cuối và gặp vấn đề đó. Để biết thủ công, hãy truy cập Android Studio -> SDK Android -> Nền tảng SDK Nhấp vào Hiển thị chi tiết gói và kiểm tra:

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

Khi cài đặt gói, kiểm tra chấp nhận giấy phép => có thể giải quyết vấn đề.


1

Trên Mac OSX, điều hướng đến sdk/tools/bin

Sau đó chạy ./sdkmanager --licenses, và chấp nhận tất cả các giấy phép.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.