365連休

にわかのandroidとかの開発メモ。

Android Studio 4.2 BUILD FAILED compiler message file broken: key=compiler.misc.msg.bug arguments=11.0.8, {1}, {2}, {3}, {4}, {5}, {6}, {7} java.lang.NullPointerException

なんか急にBuildが通らなくなった。 compiler message file broken: key=compiler.misc.msg.bug arguments=11.0.8, {1}, {2}, {3}, {4}, {5}, {6}, {7} java.lang.NullPointerException at jdk.compiler/com.sun.tools.javac.code.Symbol$ClassSymbol.isSubC…

Android Studio 4.2 @NonNullまたは@Nullableをオーバーライドすると@org.jetbrains.annotations.*が追加される件

Android Studio 4.2にアップデートしてから、 @NonNull、@Nullableアノテーションのついたメソッドのオーバーライドやインターフェス実装時に、 @org.jetbrains.annotations.NonNullと@org.jetbrains.annotations.Nullableが追加されておかしなことになった…

Android Studio 4.1 と Google Cloud Platformで無料クライアント・サーバアプリを構築してみる

Google Cloud PlatformはAndroidアプリと連携する無料サーバになり得るのか実験してみた。Android Studioだけで開発する縛りプレイ。

Android Studio 4.1 Pleiades 日本語化 Pluginを無効にする

JetBrains公式の日本語化プラグインを導入するため、手動インストールしたPleiades Pluginを無効にする方法。 ①カスタムVMオプションを開く ②-Xverifiと-javaagentの2行を#でコメントアウトする 以上! 関連記事 neet-rookie.hatenablog.com

【GCP】無料でAndroidアプリ用サーバを立てるための考察【無料】

Androidアプリと連携する無料サーバを立てるための検討

Android Studio 4.1 Vertical SeekBar 縦シークバーの実装サンプル

レイアウトXMLでrotateとかをいじって実装していたが、コンテナの相対サイズで配置することが困難なため、AppCompatSeekBarを継承してVerticalSeekBarを実装した。 前提 minSdkVersion 21 implementation 'androidx.appcompat:appcompat:1.2.0' ソースコード…

【AdSense】ファンディングチョイスの導入とテスト【GDPR & CCPA】

このページでファンディングチョイスのメッセージをテストしてみるリンク AdSense x FundingChoiceのテスト方法 ファンディングチョイスでサイトのメッセージを作成する。 fundingchoices.google.com ブログなど自身のページへScriptタグを埋め込む。[ファン…

【解決】Androidアプリをストアからインストールすると、Navigationのタイミングで、必ずjava.lang.RuntimeException Unknown animation name: xが発生し異常終了する。

前提条件 App Bundle使用 minifyEnabled true shrinkResources true compileSdkVersion 29 minSdkVersion 16 targetSdkVersion 29 multiDexEnabled true androidx.navigation:navigation-fragment:2.3.2 androidx.navigation:navigation-ui:2.3.2 FragmentCo…

Consent SDK -> UMP SDK ( User Messaging Platform SDK)

Googleの広告配信時のGDPR系の同意情報の取得に使用する関連サービスとして、Consent SDKが提供されているが、これは非推奨となる模様。 Googleの広告各種ヘルプではファンディングチョイス(Funding Choices)とUMP SDK( User Messaging Platform SDK )を使用…

Android Studio 4.1 難読化をやめる。ProGuard使います。

App Bundleでリリースしたものの、Navigationのタイミングで即死するトラブルが発生。 Play Consoleのクラッシュログは以下の通り。 java.lang.RuntimeException: at android.view.animation.AnimationUtils.createAnimationFromXml (AnimationUtils.java:16…

【解決法】Use the Lifecycle Java 8 API provided by the lifecycle-common-java8 library instead of Lifecycle annotations for faster incremental build.

AndroidXのLifeCycleライブラリのリリースノートによると、 2.2.0以降でlifecycle-extensionsのAPIがサポートが終了になったため、 必要とする特定のLifeCycleアーティファクトの依存関係を追加することが推奨されています。 ★lifecycle-extensions の API …

はてなブログでもAdSense登録できました。

0円でできる、はてなブログを使用した、AdSense登録の成功例。

Android Studio 4.1 定義済みSpanを調査してみた

TextViewのsetTextにStringではなくSpannableを設定すると、細かい書式設定ができて便利。 だが、定義済みのSpanにどんなものがあるのか、網羅的リファレンスの日本語訳がないため、android.text.style.*のパッケージサマリを意訳してみた。

Javaでfinal宣言されたミュータブルオブジェクトをメンバに持つクラスはcloneできない

以下、私見です。 ミュータブルはCollectionなどの事、イミュータブルはStringなどの事 Javaのcloneはオブジェクト構造のコピーが作られる。 構造体のコピーみたいな感じ。 Javaにおいてプリミティブ値は参照を持たないから値がコピーされ、 オブジェクトは…

Android Roomが返す"LiveDataの挙動"についてメモ

Android Room Databaseの@Daoで返すLiveDataは、Observeしないとそもそもクエリを発行しない。 確認環境 implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' implementation 'androidx.room:room-runtime:2.2.5' ある画面でRoomからLiveData形…

JavaのDateクラスとタイムゾーン

今更Dateクラス! Dateクラスにはローカルのタイムゾーンが適用される!!! でもgetTime()はGMT(≒UTC) import java.util.Date; public class HelloWorld{ public static void main(String []args){ //シリアル値から日付を取り出して再度Dateオブジェクト生…

Android Studio 3.6 Navigationで複数画面のPreferenceFragmentを使用する方法

設定.xmlのPreferenceタグにFragmentを指定すると別なPreferenceFragmentを起動できるが、Navigationを使用している場合うまく動作しない。 ちゃんと確認していないが、Navigationと複数画面のPreferenceの食べ合わせは非推奨らしい。 そこで、Navigationの…

Android Studio 3.6 ディレクトリを表すUriオブジェクトがあるか?

ディレクトリを表すUriオブジェクトはあります。

Android Studio 3.6 SavedStateViewModelFactoryがリフレクションするViewModelのコンストラクタ

前書き 筆者がぽんこつなため、この記事は一部不正確な可能性があります。ご了承ください。 前提条件 //build.gradle implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' SavedStateViewModelFactoryって? 画面回転時とかの再生成に対応したV…

Android Studio 3.6 MediaStoreのBaseColumn._IDが主キーじゃないという話

android.provider.MediaStoreのImageColumnsもFileColumnsもandroid.provider.BaseColumnsを継承しているが、 BaseColumns._IDは主キーじゃなかったという話。 ハイラルキー BaseColumns MediaColumns ImageColumns AudioColumns VideoColumns DownloadColum…

【Self Stack Overflow】Javaで多重継承を行う方法

自問 Javaでクラスの多重継承を行う方法を教えてください。 ベストアンサー Javaで多重継承はサポートされない。 public static class H { String h = "hour"; void echo(){ System.out.println(h); } } public static class O { String o = "o'clock"; void…

【Self Stack Overflow】Javaで複数の戻り値(タプル)を持つメソッドを定義する方法

自問 Javaで複数の戻り値(タプル構造)を持つメソッドを定義する方法を教えてください。 ベストアンサー Javaのメソッドは1つの「プリミティブデータ型」または「クラス」しか返すことができない。 そこで、複数の値を持つクラスを返す方法を考える。 Java1.…

【Self Stack Overflow】Javaで16進数文字列を正しく数値及び数値型へ変換する方法

自問 Javaで16進数文字列を正しい数値及び数値型へ変換する方法を教えてください。 以下のコードはエラーになります。 Integer.parseInt("ffffffff", 16); //throws NumberFormatException Short.parseShort("ffff", 16); //throws NumberFormatException By…

【Self Stack Overflow】Javaで数値を16進数文字列へ変換する方法

自問 Javaで数値を16進数文字列へ変換する方法を教えてください。 ベストアンサー long型かint型の場合、Long.toHexString()またはInteger.toHexString()を使用する。 "0x"+Long.toHexString(-1L) //"0xffffffffffffffff" "0x"+Integer.toHexString(-1) //"0…

Java 外部からベースメソッド(super.)をコールする

継承クラスが親クラスを破壊する方法

Android Studio 3.6 【新機能】ViewBindingを使用してUI参照を簡単に取得する

先日Android Studio 3.5 -> 3.6へアップデートして、新機能をチェックしていた中で、ひとつ目に留まったのがViewBinding。 build.gradle(app) android{ compileSdkVersion… : viewBinding.enabled = true : } これを追加すると、レイアウトファイルに対し…

Android Studio 3.6 Fragment用のオプションメニューを追加しようと思ったら、onCreateOptionsMenuが呼ばれない。onPrepareOptionsMenuも呼ばれない。

Activityでオプションメニューを生成し、Fragmentからもオプションメニューを追加したいと思った時、 Fragment#onCreateOptionsMenu または Fragment#onPrepareOptionsMenu をオーバーライドするが、これだけでは不十分。 Fragment#onCreateView内でsetHasOp…

Java 固定容量のLimitedSet

固定容量のHashSetが欲しくて、ググったらjavaのライブラリには無いみたいで、ArrayListを継承したりして実装する例があったが、Iteratorとか全部Overrideするとめんどくさい。 個人的に欲しかった機能は、固定容量のSetがあって、容量が足りなくなった時に…

Android Studio 3.5 GitHubのリポジトリを変更する

作っているうちにアプリ名が変わったりして、GitHubのリポジトリ名を変えようと思ったら、 あれ?Android Studio側のリポジトリの参照ってどうやって変更するの? となった時のメモ。 git自体の知識がほぼ無いので、どういう事か説明できないのであしからず…

Android Studio 3.5 直列処理Executorのサンプル

Executorは別スレッドで非同期処理をいくつも実行するのに役立つ。 ThreadPoolExecutorを使うとスレッドを再利用しつつ非同期処理を連続して行える。 Executor executor = new ThreadPoolExecutor( corePoolSize, //スレッド数 maximumPoolSize, //最大スレ…