質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

SDK

SDK(software development kit)は特定のハードウェアのプラットフォーム、開発環境又はソフトウェアパッケージでソフトウェアをつくるのに必要な開発ツールのセットです。SDKはAPI、IDE又は他の開発ツールとフレームワークを組み合わせたもので構成されていることがあります。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2140閲覧

[再追]AndroidSDKのsdkmanagerを実行できない。Ubuntuでpython-for-android

groggy_egg

総合スコア24

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

SDK

SDK(software development kit)は特定のハードウェアのプラットフォーム、開発環境又はソフトウェアパッケージでソフトウェアをつくるのに必要な開発ツールのセットです。SDKはAPI、IDE又は他の開発ツールとフレームワークを組み合わせたもので構成されていることがあります。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/05/18 05:48

目的
UbuntuでAndroidSDKのsdkmanagerを実行したい。
(→ python-for-androidを実行したい。)

前回質問で解決したと思ったのですが私の思い違いでした。
すみません。

前回の経緯(まとめと詳細追記)


参考サイト関連リンクの手順を基に実行

  • python-for-androidと依存関係のインストール
  • AndroidNDK,SDKのダウンロード、インストール

/opt/android-sdk下にtoolsを配置
sudo /opt/android-sdk/tools/bin/sdkmanager --listを実行するとエラーが発生

sudo /opt/android-sdk/tools/bin/sdkmanager Warning: Could not create settings java.lang.IllegalArgumentException at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.<init>(SdkManagerCliSettings.java:428) at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:152) at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:134) at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:57) at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48) Usage: sdkmanager [--uninstall] [<common args>] [--package_file=<file>] [<packages>...] sdkmanager --update [<common args>] sdkmanager --list [<common args>] sdkmanager --licenses [<common args>] sdkmanager --version With --install (optional), installs or updates packages. By default, the listed packages are installed or (if already installed) updated to the latest version. With --uninstall, uninstall the 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. With --update, all installed packages are updated to the latest version. With --list, all installed and available packages are printed out. With --licenses, show and offer the option to accept licenses for all available packages that have not already been accepted. With --version, prints the current version of sdkmanager. 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. --verbose: Enable verbose output. * If the env var REPO_OS_OVERRIDE is set to "windows", "macosx", or "linux", packages will be downloaded for that OS.
#------bashrc 末尾に追記 # python for android #export ANDROIDSDK="/opt/android-sdk" export ANDROIDSDK="$HOME/Documents/android-sdk" export ANDROIDNDK="$HOME/Documents/android-ndk-r21" export ANDROIDAPI="27" export NDKAPI="21" export ANDROIDKVER="r10e" # android sdk path #export ANDROIDSDK="/opt/android-sdk" export ANDROID_HOME="$HOME/Documents/android-sdk" export PATH=$PATH:$ANDROID_HOME/tools export PATH=$PATH:$ANDROID_HOME/platform-tools
#--------bash_profileに追記 # Android SDK Tools #if [ -d "/opt/android-sdk/tools/bin" ]; then # export PATH=$PATH:/opt/android-sdk/tools/bin if [ -d "$HOME/Documents/android-sdk/tools/bin" ]; then export PATH=$PATH:$HOME/Documents/android-sdk/tools/bin fi
  • sudo apt-get install android-sdkを実行
  • python-for-android recipesを実行
sudo /opt/android-sdk/tools/bin/sdkmanager [sudo] ubun のパスワード: Warning: Could not create settings java.lang.IllegalArgumentException at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.<init>(SdkManagerCliSettings.java:428) at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:152) at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:134) at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:57) at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48) Usage: sdkmanager [--uninstall] [<common args>] [--package_file=<file>] [<packages>...] sdkmanager --update [<common args>] sdkmanager --list [<common args>] sdkmanager --licenses [<common args>] sdkmanager --version With --install (optional), installs or updates packages. By default, the listed packages are installed or (if already installed) updated to the latest version. With --uninstall, uninstall the 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. With --update, all installed packages are updated to the latest version. With --list, all installed and available packages are printed out. With --licenses, show and offer the option to accept licenses for all available packages that have not already been accepted. With --version, prints the current version of sdkmanager. 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. --verbose: Enable verbose output. * If the env var REPO_OS_OVERRIDE is set to "windows", "macosx", or "linux", packages will be downloaded for that OS.

前回はこれで解決したと思っていたのですが、
そもそもsdkmanagerと関係ありませんでした。


今回の経緯(前回以降に行ったこと)

  • python-for-androidのアプリケーション構築のためのコマンドを実行

~$ p4a apk --private /media/sf_VM-share --package=org.example.myapp --name "Myapp" --version 0.1 --bootstrap=sdl2 --requirements=python3,kivy

  • 「android」または「sdkmanager」のバイナリが見つからない

というエラー発生

[INFO]: Will compile for the following archs: armeabi-v7a [INFO]: Found Android API target in $ANDROIDAPI: 27 [ERROR]: Build failed: Could not find `android` or `sdkmanager` binaries in Android SDK [INFO]: Instructions: Make sure the path to the Android SDK is correct
  • $HOME/Documents/android-sdk にAndroidSDKのtoolsを配置
  • bashrcbash_profileのPATHを編集して実行すると別のエラー
~$ sudo $HOME/Documents/android-sdk/tools/bin/sdkmanager sudo: /home/***/Documents/android-sdk/tools/bin/sdkmanager: コマンドが見つかりません

PATHも確認したのですが反映されているようです。

~$ echo $PATH ...:/home/***/Documents/android-sdk/tools:/home/***/Documents/android-sdk/platform-tools

結果

  • /opt配下にtoolsを配置して実行した場合はsdkmanagerが実行できるがエラーになる
  • $HOME/Documents配下にtoolsを配置して実行するとsdkmanagerが見つからないエラーになる
  • apt-getでインストールしたsdkは/usr/lib配下にあるのですが/android-sdk/tools/binの下にsdkmanagerがない

sdkmanagerが実行できないのはtoolsの配置場所が悪いのでしょうか?
それともPATHの記述や記述するファイルが間違っているのでしょうか?
またはそれ以外に問題があるのでしょうか?

長文になってしまいましたがアドバイスお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

PATHの設定が明らかに誤っています。

~$ echo $PATH ...:/home/***/Documents/android-sdk/tools:/home/***/Documents/android-sdk/platform-tools

と設定されたとありますが、sdkmanagerがあるのは/home/***/Documents/android-sdk/tools/binの下のはずですから、PATHもbinまで指定しなければコマンドは見つけられないでしょう。

ところで、前回の回答で「Android Studioに同梱されているSDK Managerを用いてSDKを設定するのが最も確実な手段」と申し上げましたが、コマンドラインツールでセットアップするのは「どうしても譲れない一線」なのでしょうか?目的がもっと先にあることを考えると、ここでいつまでも立ち止まるのはあまり得策とは思えません。

投稿2020/05/18 06:48

keicha_hrs

総合スコア6768

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

groggy_egg

2020/05/19 01:18

>PATHもbinまで指定しなければコマンドは見つけられないでしょう。 ご指摘ありがとうございます。PATH 修正しました。 # python for android #export ANDROIDSDK="$HOME/Documents/android-sdk/tools/bin" #export ANDROIDSDK="/opt/android-sdk/tools/bin" export ANDROIDSDK="$HOME/ProgramFiles/android-sdk/tools/bin" export ANDROIDNDK="$HOME/Documents/android-ndk-r21" export ANDROIDAPI="27" export NDKAPI="21" export ANDROIDKVER="r10e" # android sdk path #export ANDROID_HOME="$HOME/Documents/android-sdk" #export ANDROID_HOME="/opt/android-sdk" export ANDROID_HOME="$HOME/ProgramFiles/android-sdk" export PATH=$PATH:$ANDROID_HOME/tools/bin export PATH=$PATH:$ANDROID_HOME/platform-tools >コマンドラインツールでセットアップするのは「どうしても譲れない一線」なのでしょうか? 教科書の手順から離れると不安になるというしょうもない理由です。 すみません。 以下、実行したことです AndroidStudioをインストール(下記参考) https://qiita.com/TsutomuNakamura/items/ef4aeec32cdaaf9105cc studio.shは起動しましたが`sdkmanager --list`を実行してみると同様のエラーになりました。 Warning: Could not create settings java.lang.IllegalArgumentException at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.<init>(SdkManagerCliSettings.java:428) at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:152) at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:134) at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:57) at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48) javaのエラーが出ているので一応javaのバージョンを張ります。 $ java -version openjdk version "1.8.0_252" OpenJDK Runtime Environment (build 1.8.0_252-8u252-b09-1~16.04-b09) OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)
groggy_egg

2020/05/19 01:52

設定ミスでした。 bashrcの export ANDROIDKVER="r10e" を export ANDROIDKVER="r21" に変更したところ無事 sdkmanager --list を実行できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問