20200123のAndroidに関する記事は3件です。

Android StudioでJavaのversionで躓いたのでまとめる

はじめに

ここ数ヶ月、実務インターンをするようになってから、インターン先が変わるたびに環境構築をしているのですが、適当にやっているせいでJDKのバージョンが原因なエラーに幾度となく躓いてきました。

毎回調べて、

ああ...JDKのversionが原因か。で、どうするんだっけ。と調べるのが不毛なため備忘録として記事にしました。

この記事は自分のユースケースにおける対処法なため、他の方には当てはまらないかもしれませんが、随時updateしていければと思います。

躓いた具体的なユースケース

まず、

% java -vesion

とターミナルで打つと、ご自身のJDKのバージョンがいくつか確認できるのでご参考までに。

How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

この時の自分のJDKは

java 12.0.2 2019-07-16

でした。

Java 9で「モジュール」の機能が追加された際に、標準ライブラリからいくつかのモジュールが非推奨となりました。

Java 9以降でJAXBを使用するには、外部JARが必要 #49

この機能追加により、 JAXB なるモジュールも非推奨となり、上記のエラーが出るようになったみたいです。Java 8以下では再現せず、Java 9以上の環境で再現するとのこと。

解決策

Java 9, 10であれば、実行時のオプションで

--add-modules java.xml.bind

を指定してあげれば一旦は凌げます。

毎回オプションを追加するのが面倒臭いとか、そもそもJava 10より上のJDK環境の場合は以下の強引な解決策を試してみてください。

強引な解決策

Android StudioのJDKを使用する

まず、知っておくべきことが

Android Studioは、Javaの実行環境そのものを提供してくれています。

そのため、Android Studioがapkを作る時に使っているJavaのPathのメモ の記事でも言及されているように、普段我々がGUIでAndroid StudioでRunした際には、 Android StudioのJava環境でapplication moduleをビルドし、apkを作成しています。

逆に、

Android Studioの下部のTerrminalや、MacやWindowsのアプリケーションとして開いているターミナルでは、OSの実行環境が使用されます。

したがって、GUIではちゃんとビルドできるのに、

% ./gradlew assemble

等のコマンドでビルドしようとすると失敗するのはそのせいです。

GUIでビルドができるなら、Android Studioの実行環境でTerminalも動かしてしまえば良いということで、

.bashrc.zshrc に環境変数のPathを通してあげればよさそうです。

% export PATH=$PATH:/Applications/"Android Studio.app"/Contents/jre/jdk/Contents/Home/bin
% export JAVA_HOME=/Applications/"Android Studio.app"/Contents/jre/jdk/Contents/Home

すると、Android Studioのバージョンにもよりますが、適切なJavaのバージョンでの実行環境でTerminalからも起動できるようになります。

ちなみにAndroid Studio 3.6-RC1では 1.8.0_212-release でした。

異なるversionのJDKをダウンロードする

異なるversionといえども上記のAndroid Studioの実行環境から、 1.8.0 系が良さそうです。Java 8ですね。

Oracle社HP からinstallします。

installの手順は沢山記事があるのでそちらを参考願います。

最近からサインインが必要になったためOracleのアカウントを作らないと行けなかったはずです。

また、表示名が Java SE Development Kit 8u241 みたいな形で、 8u*** となっているかもしれませんが、それが1.8.0 系です。

installができたら、自分がインストールしたJDKのバージョン一覧をみてみましょう。

% /usr/libexec/java_home -V

確認できたら、そのJDK versionを環境変数に設定します。

% export JAVA_HOME=`/usr/libexec/java_home -v {java_version}

{java_version} には先ほど確認したversionを入れましょう。

あとは無事設定できてるかを

% java -version

で確認して、ちゃんと設定できていたらOKです。

参考文献

https://qiita.com/mas0061/items/2fe9333f045800d00b5c

https://qiita.com/kkkkan/items/f9595107a2a9153d1c60

https://github.com/acroquest/javabook-support/issues/49

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Wifi経由でadbコマンドを実行しよう(2.Linux編)

はじめに

ずっとWindowsからAndroidアプリのテストをしていたので意識していませんでしたが、
Linuxからでもadbコマンドを実行することができるようです。

使用ツール

  • Linux環境
  • teraterm
  • Linux用のAndroid SDK
  • WinSCP

手順

  1. Android端末の開発者モードをONにしてUSBデバッグを可能にする。
  2. PC、Android端末ともにWifiに接続。
  3. Linux環境にAndroid SDKをインストール。
  4. sdkmanagerコマンドでパッケージをインストール。
  5. adb接続。
  6. adbコマンドを実行。
  7. adbを切断。

ほとんど、Wifi経由でadbコマンドを実行しよう(1.Windows編)
やることは変わりませんが、
3. Linux環境にAndroid SDKをインストール。
4. sdkmanagerコマンドでパッケージをインストール。
5. adb接続。にWindowsと違いがありますので、そこだけ説明します。

3. Linux環境にAndroid SDKをインストール。

Android SDKのインストール手順

  1. Android SDKを入手
  2. Linuxの適当なパスに1で入手したAndroid SDKを移動
  3. パスを通す。

1. Android SDKを入手

ここにアクセスしてAndroid SDKをダウンロードします。
アクセスしたらDOWNLOAD OPTIONSをクリック。
android_dev.png
Command line tools onlyよりLinux用のファイルを選択してダウンロードしてください。
adb_dev.png

2. Linuxの適当なパスに1で入手したAndroid SDKを移動

1で入手したSDKをAndroid SDKのzipファイルを解凍するとtoolsというフォルダが出てきますので、
WinSCPを使用して、Linuxの好きな場所に移動しましょう。
私は/opt/android-sdkに移動しました。

3. パスを通す。

.bashrcの末尾に1行追加します。

.bashrcをviで開いて

vi ~/.bashrc

一行追加して

export PATH=${PATH}:/fssdb/android-sdk/tools:/fssdb/android-sdk/platform-tools

内容を反映。

source ~/.bashrc

4. sdkmanagerコマンドでパッケージをインストール。

下記を実行します。

/opt/android-sdk/tools/bin/sdkmanager "platforms;android-26"
/opt/android-sdk/tools/bin/sdkmanager "build-tools;26.0.1"

ちょっと前まで上記までやってればadbも使えたのですが、
いまはadbを実行するために下記も実行してください。

/opt/android-sdk/tools/android update sdk
/opt/android-sdk/tools/bin/sdkmanager platform-tools

5. adb接続。

ほとんどWindowsと同じなのですが、1点だけ違いがあります。
Linuxでは、:5555部分が省略不可です。

adb connect 123.456.789.012:5555

ちなみに

違う方法で接続してadbコマンドを実行していた場合、
例えばWindowsから有線でadbを事項していた場合、
一旦許可を取り消さないと新たな端末(今回設定したLinuxとか)からadbコマンドが実行できませんので注意。

関連ページ

Wifi経由でadbコマンドを実行しよう(1.Windows編)
Wifi経由でadbコマンドを実行しよう(2.Linux編)

参考サイト

adb の使い方(Linux 編)
Ubuntu 16.04にAndroid SDKをインストール
How To Fix ADB Device Unauthorized Message On Android

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[備忘録][Android Studio]fontFamilyで独自フォントを選択できるようにする

1.resフォルダ配下にfontフォルダを作成する

resフォルダを右クリック→New→Directory
New Directory入力欄で「font」を入力してOKボタンをクリック
image.png

2.fontフォルダ配下に独自フォントを配置する

image.png

3.fontFamilyで配置した独自フォントが選択できるようになる

image.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む