Android

Let's EncryptでSSLHandshakeException

環境 Pixel 4a(Android 11) エラー HTTP FAILED: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 状況 https通信時に上記エラー。 通信はOkHttpを使用。 WebViewか…

プロローグにはコンテンツを指定できません。

環境 Android Studio 4.1.2 Android Gradle Plugin 4.1.2 エラーメッセージ FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:extractDeepLinksDevDebug'. > org.xml.sax.SAXParseException; lineNumber: 1; c…

ConstraintLayoutで垂直方向で中央に集める

環境 Android Studio 4.1.2 やりたいこと ConstraintLayoutでViewを上下真ん中に集めたい。 これを こうしたい やったこと いじる前のレイアウトはこちら。

Kotlin + dokka でマルチモジュールのJavadocを生成

環境 Android Studio 3.5 macOS 10.14.4 kotlin 1.3.50 対象のモジュール構成 以下のような構成のプロジェクトを想定し、lib1とlib2のJavadocをまとめて生成する。 モジュール 説明 app lib1とlib2に依存したアプリモジュール lib1 Javadoc生成対象のライブ…

ndk-buildにパラメータを渡す

コマンドラインから外部引数を渡したい場合は、 ndk-build -e で指定することでパラメータを渡すことができる。 $ ndk-build -e HOGE=HOGE MAGE=MAGE これで Android.mk から $(HOGE) とか $(MAGE) とかで値を利用できる。 AndroidNDKネイティブプログラミン…

dependenciesの@aarの正体

build.gradleでしばしば見かけるこの記法 dependencies { implementation "jp.co.mst.android:awsome:1.0.0@aar" } この @aar という記法は アーティファクトオンリー記法 といい、以下に説明があります。 第51章 依存関係の管理 アーティファクトオンリー記…

再生時間をLongから mm:ss 形式に変換する

やりたいこと Android の MediaPlayer などで Long で取れる duration を、2:50 のように 「分:秒」の形式の文字列にする。 joda-timeを使えば簡単 LocalTime を使うのもよいが、API Level 26以上を要求されるので、 joda-time-android を使う。 // build.gr…

Kotlin + Pure Java + JUnit で "Empty test suite."

AndroidStudioで開発中のモジュールを切り出してPure Javaなモジュールにした時に、JUnitがクラスを見つけてくれなくなってしまってかなりハマりました。 エラーメッセージ Class not found: "jp.example.HogeTest"Empty test suite. 解決 build.gradleに以…

Serviceからレイアウトをinflateできない罠

環境 AndroidStudio 2.2.3 compileSdkVersion 24 buildToolsVersion "23.0.3" 現象 Serviceにこんな感じのコード書いたら描画されなかった。(View自体は生成されてる) @Override public int onStartCommand(Intent intent, int flags, int startId) { supe…

Android r22 + ant で java.lang.VerifyError からの java.nio.BufferOverflowException

java.lang.VerifyErrorが出ました 気がついたらJenkins管理下のAndroidプロジェクトのビルドが全滅してました。 antでビルドしてるところでjava.lang.VerifyErrorなるものが吐かれていました。 javadocを覗いてみると クラスファイルが適切な形式でも、ある…

AndroidのHttpURLConnectionのデフォルトのUserAgent

HttpURLConnectionで実装していた部分をHttpClientに変えてみたら、UserAgentが変わってしまいました。 そこでHttpClientのリクエストにHttpURLConnectionのデフォルトのUserAgentをセットしてやろう思ったのですが、それがなかなか見つからなかったのでメモ…

Android JUnit + guava で java.lang.NoClassDefFoundError

Android JUnitのテストプロジェクトからguava-libraryを使ってるプロジェクトのguavaのAPIを使ってる部分をテストしようとしたら java.lang.NoClassDefFoundError と出ました。Android JUnitではなく、通常のJUnitで実行すればちゃんとクラスを見つけてくれ…

Android4.0でdo-whileが実行されない場合がある

Android4.0端末でのみ変数の値がおかしくなるバグを追いかけていて気がつきました。 端的に言うと、Android4.0端末で、ネストされたループ内のdo-while文が実行されない場合がある「実行されない場合がある」なんてボンヤリした表現になってますが、原因はち…