web-dev-qa-db-ja.com

Flutter.io Androidライセンスステータス不明

[!] Androidツールチェーン-Androidデバイス用に開発(Android SDK 27.0.3)

•Android SDK a ..\Android\sdk•Android NDKの場所は設定されていません(オプション、ネイティブプロファイリングサポートに便利です) Javaバイナリ:C:\ Program Files\Android\Android Studio\jre\bin\Java•JavaバージョンOpenJDKランタイム環境(ビルド1.8.0_152-release-1024-b02) X Androidライセンスステータスが不明です。

Flutter doctorを実行するとAndroid Sdkでエラーが発生しますが、デバイスでビルド/実行できます。この問題の修正方法に興味がありました。 Android SDKの最新バージョンをダウンロードしたと思いますが、先週この問題がなかったため何が起こったのかわかりません。

新しい問題

コメントで考えられるいくつかの修正を実行した後、新しい問題が発生しました。新しいjdk10とともにAndroid sdk P、8、および7の新しいバージョンをインストールしました。まだ十分に更新されていないようです。

C:\Flutter\flutter>flutter doctor --Android-licenses
A newer version of the Android SDK is required. To update, run:
C:\Users\tdmil\AppData\Local\Android\sdk\tools\bin\sdkmanager --update

C:\ Flutter\flutter> C:\ users\username\appdata\local\Android\sdk\tools\bin\sdkmanager.bat --update

Exception in thread "main" Java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
        at com.Android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.Java:156)
        at com.Android.repository.api.SchemaModule.<init>(SchemaModule.Java:75)
        at com.Android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.Java:81)
        at com.Android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.Java:73)
        at com.Android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.Java:48)
Caused by: Java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
        at Java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.Java:582)
        at Java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.Java:190)
        at Java.base/Java.lang.ClassLoader.loadClass(ClassLoader.Java:499)
        ... 5 more
25
tdmiller

Android SDKを更新した場合、ライセンスが変更されている可能性があります。更新をどのように行ったかに応じて、変更を受け入れるように促される場合とされない場合があります。または、フラッターが理解できる方法で受け入れたという事実を保存しない場合があります。

解決するには、flutter doctor --Android-licensesを実行してください。これにより、ライセンスを受け入れるように求められます(yと入力してEnterキーを押すと、最初に尋ねられる場合があります).

それでも問題が解決しない場合は、 Flutter Github repository で新しいバグを開くか、 this one のような既存の問題にコメントを追加する価値があります。あなたが見ているものかもしれません。

28
rmtmckenzie

エラー:

Exception in thread "main" Java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
        at com.Android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.Java:156)
        at com.Android.repository.api.SchemaModule.<init>(SchemaModule.Java:75)
        at com.Android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.Java:81)
        at com.Android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.Java:73)
        at com.Android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.Java:48)
Caused by: Java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
        at Java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.Java:582)
        at Java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.Java:190)
        at Java.base/Java.lang.ClassLoader.loadClass(ClassLoader.Java:499)
        ... 5 more

現在のSDKバージョンはJava 9と互換性がないため、発生しています。

したがって、それを解決するには、JavaバージョンをJava 8にダウングレードするか、回避策を使用して端末で次のオプションをエクスポートします。

Linux:

export Java_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules Java.se.ee'

Windows

set Java_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules Java.se.ee'

そして、それを固めるために、Linux上のプロファイルファイルでJava_OPTSをエクスポート(.zshrc.bashrcなど)するか、Windowsで環境として永続的に追加できます。


次に、flutterまたはsdkmanagerコマンドを入力できます。

フラッター

flutter doctor --Android-licenses

sdkmanager

sdkmanager --licenses

ライセンスを受け入れる必要がある場合はYを入力します。

12
coderade

私の問題を解決する手順は次のとおりです。

  1. ターミナルを開きます
  2. タイプflutter doctor --Android-licenses
  3. yを押して承認すると、このプロセスが数回発生する場合があります。できた!

これも #16025 と同じ問題でした

スレッド「main」の例外Java.lang.NoClassDefFoundError:javax/xml/bind/annotation/XmlSchemaこの問題は、通常Java 9をインストールしたときに発生するようです。ところで、Android-sdkとの互換性がない場合は、Java 9 JDKがまだ存在する場合は削除してください。

一般に、JAXB APIはJava EE APIと見なされるため、Java SE 9のデフォルトのクラスパスには含まれなくなりました。Java 9では、モジュールの概念、およびデフォルトでJava.se集約モジュールはクラスパス(またはモジュールパス)で利用可能です。名前が示すように、Java.se集約モジュールには、従来Java 6/7/8にバンドルされていたJava EE APIが含まれていません。幸いなことに、JDK 6/7/8で提供されたこれらのJava EE APIはまだJDKにありますが、デフォルトではクラスパス上にありません。追加のJava EE APIは、次のモジュールで提供されます

Java9/10がインストールされている場合の回避策

  1. エディターでsdkmanagerを開きます。
  2. DEFAULT_JVM_OPTSを追加します

交換

DEFAULT_JVM_OPTS='"-Dcom.Android.sdklib.toolsdir=$APP_HOME"'

これで

DEFAULT_JVM_OPTS='"-Dcom.Android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules Java.se.ee'
  1. ファイルを保存してエディターを終了し、コマンドを再実行してください。

Androidライセンスステータスの不明な問題については、次の手順で解決しようとしました:

  1. ターミナルを開く
  2. Android SDKの場所C:\ Users%user%\ AppData\Local\Android\Sdk\tools\binまたは〜/ Library/Android/sdk/tools/binに移動します

  3. コマンドを実行します:./sdkmanager --license

参照資料

sdkmanager --list(Android SDK)をJava 9で実行できませんでした

Java.lang.NoClassDefFoundErrorの解決方法:Java 9のjavax/xml/bind/JAXBException

3
Juk

ここに私の解決策があります:

  1. sDKManをインストールする

    $ curl -s "https://get.sdkman.io" | bash

  2. bash_profileを設定する

    $ source "$HOME/.sdkman/bin/sdkman-init.sh

    $ source ~/.bash_profile

  3. Java sdkを見つけて、インストールするバージョンを選択します

    $ sdk ls Java

    $ sdk install Java 8.0.192-zulu

  4. フラッタードクター警告メッセージをコピーしてsdkmanagerを更新

    $ /Users/YourUserName/Library/Android/sdk/tools/bin/sdkmanager --update

  5. 1〜4の後、やり直してください

    $ flutter doctor --Android-licenses

3
ilyi1116

GitHubの問題コミュニティで提供されているこの行は、私の問題を修正しました。ここでは、それが他の人を助ける場合に備えています。

@rem Execute sdkmanager

"%Java_EXE%" %DEFAULT_JVM_OPTS% -XX:+IgnoreUnrecognizedVMOptions --add-modules Java.se.ee %Java_OPTS% %SDKMANAGER_OPTS% -classpath "%CLASSPATH%" com.Android.sdklib.tool.sdkmanager.SdkManagerCli %CMD_LINE_ARGS%
3
tdmiller

私はこれを見つけました ソリューション JDK 8を使用する必要があるため(今すぐダウンロードするにはアカウントが必要です!)-Android St​​udioに付属の埋め込みOpenJDKを使用します:

これを~/.profileなどに追加します。

# Use the JDK embedded with Android Studio for command-line builds
export Java_HOME='/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home'

gradlewを介したコマンドラインビルド、およびその他の適切に動作するスクリプトは、Android St​​udio 2.2+に同梱されているバージョンのSDKを使用します。

*私のMacはまだデフォルトのJava 7を使用していました。

2
Aba

Javaバージョンのダウングレード を試してください。これは、システムのJavaバージョンがAndroidのバージョンと互換性がない場合に発生します。 Javaバージョンを変更すると、flutter doctorを実行するだけでライセンスが自動的に受け入れられます。

0
Shabeer Ali

私と同じ問題、少なくとも[1.8]でなければならないJavaバージョンを確認してください

0
  1. Android St​​udioを開きます。
  2. [ファイル]-> [設定]に移動します。
  3. AndroidSDKを検索します。
  4. APIレベルを最新バージョンに更新します。
  5. 次に、Android St​​udioをリロードします。
0
Mohit Jadav

flutter SDKルートフォルダーからflutter_console.batファイルを開き、コマンドを実行します

flutter doctor --Android-licenses

Android SDKの新しくダウンロードされた更新のライセンスを受け入れます。 Android SDKをダウンロードして更新するたびに実行する必要があります。

0
Kiran Maniya