20191008のAndroidに関する記事は5件です。

Collapsingtoolbarlayoutでハマったこと

かっこいいToolbarを作ろう

スクロールによってToolbarの折りたたみができるCollapsingtoolbarlayoutがあります。

見た目かっこよくなるので実装してみましょう。

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    >

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appbarlayout"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:fitsSystemWindows="true"
        >

        <com.google.android.material.appbar.CollapsingToolbarLayout
            android:id="@+id/collapsingtoolbarlayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:minHeight="?attr/actionBarSize"
            app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
            >

            <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin"
                app:title="title"
                />
        </com.google.android.material.appbar.CollapsingToolbarLayout>
    </com.google.android.material.appbar.AppBarLayout>

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

レイアウトはこんな感じで・・・Run!

1.gif

おお、動く動くw
これで超イカすアプリを作るのだ!

でも世の中そんなにうまくいかない

あれ・・・でもなんかおかしいぞ・・・?

2.gif

なんで最後のリストが見えないんだ!
よく見たらToolbarの大きさぐらいが見えない!
レイアウトに問題ないよな・・・?

そして3時間後

あ、もうだめ。いやだ。疲れた。なんだよこれ・・・

でも世の中そんなに辛くない

頭を冷やして調べたところ、 CollapsingToolbarLayoutのminHeightをToolBarの大きさを指定すれば?というものを発見。すぐ試してみましょう。

activity_main.xml
// ...
<com.google.android.material.appbar.CollapsingToolbarLayout
    android:id="@+id/collapsingtoolbarlayout"
    android:minHeight="?attr/actionBarSize"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        app:layout_collapseMode="pin"
        app:title="title"/>
</com.google.android.material.appbar.CollapsingToolbarLayout>
// ...

3.gif

み え る !

めでたしめでたし

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

アプリのCI/CD関連サービス有名どころ調べてみた(簡易版)

Yoki(@enyyokii)と申します。

今回はCI/CD関連サービスの有名なものを調べてみたので簡単にまとめてみました。
AppCenterが思ったより便利でした ☺️

CI/CDサービス

役割 サービス名 機能 対象 料金 備考
ビルドツール fastlane ビルド自動化
テスト実行
証明書の管理
スクリーンショットの生成
iOS: 主流
Android: △
全ての機能が使用できるわけではない
google playへのリリースやスクリーンショットの保存が可能
しかし、gradleがビルドツールとしての役割を担うため、fastlaneそのものへのありがたみは少ない。
無料 アプリのタスク実行ツール
BitriseなどのCIツールと併用しローカルで実行しないように生産効率あげることが多い
CI/CD App Center ビルド時間:
(無料)240 ビルド時間 (分)/月
ビルドごとに 30 分まで
テスト:無制限の起動テスト
Android
iOS
macOS
Windows(UWP)
Xamarin
基本無料
無制限のビルド時間+複数のビルド同時実行: ¥4480円/月
UIテストを好きな構成で実行: ¥11088円/月
ViewController2つのWebView表示する簡易アプリでビルド時間は10分程(初回は時間かかるかも)
これはすぐに超えそうなので¥4480/月は契約した方がいいかも?
CI/CD Bitrise 設定方法: GUI(WEB)、YAML
ビルド時間制限約8分
同時実行数:
(無料)x1
(有料)x2〜x18
Android
iOS
Xamarin
無料: 0
有料: $40/month〜(年契約もあり)
アプリに特化している
iOSDCへ参加するなど日本市場へ注力している。日本語記事も見つけやすい。
CI/CD Circle CI 設定方法: YAML モバイルアプリ
Webアプリ
Linuxでのビルド: コンテナ数1 → 無料 ,
コンテナ数増やすごとに$50ずつかかる
macOSでのビルド: $39/month〜
ビルドコンテナメモリ上限: 4G
2コンテナ以上利用する場合は、ビルド時間の制限はなくなる
アカウント登録はgithub連携必須
  • AppCenterのみ試してみたが、30分もあればpushをトリガーに、ビルド、単体テスト、配布までを用意に自動化できる。ストアへのアップロードもできる。

  • プロダクトをまたいでテストアプリを触るケースがあるので配布ツールは統一したいかも

  • iOSの場合、ワークフローはfastlaneにまとめておき、CI/CDツールでfastfileを実行するようにしておけばツールを変更した際の移行が楽(ZOZOの事例より)

  • 複数のプラットフォームで同じようにワークフローを管理したいのであれば、Bitriseは選択肢から外れそう。

参考

0から始めるiOS自動化
AndroidのCIサービスをCircleCIからBitriseへ移行しました
iOSで構築しているCIのWorkflow紹介
Visual Studio App Centerで始めるCI/CD(iOS)
署名なしでiOSアプリのビルド&単体テスト〜AppCenter編〜

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

Firebase App Distribution からのテストアプリのインストール【Android編】

Firebase からテストアプリの配信ができるようになりましたよ!

というわけで、Firebase App Distribution (Beta)から配信されたテストアプリのインストール手順についてまとめました!!

本記事はAndroid編になります。
(iOS編も別記事として執筆予定です!)

手順

概要

基本的な流れは、

  • Firebase から招待メールが届く
  • 招待メールの URL を開く
  • 招待されたメールアドレスでログインし、アプリの apk をダウンロードする
  • apk をインストールする

です。

以下、画面ショットで具体的にご説明していきます。
(個人情報はマスクしてあります。マスクの仕方が雑なのはご愛嬌ということで。。。)

具体的な手順

まず届いたメールを確認します。

すみません、これの画像は都合によりスマホではなくPCで表示させています。
スマホでこのメールを開いた人は、"Accept invitation" をタップしましょう。
(要はスマホでこのリンクを開ければOKです)

shot0.png

ここからはスマホでの画面ショットになります。
Googleアカウントでログインするよう要求されるので、招待されたアカウントでログインしましょう。

shot1.png

「Firebase がこのデバイスに関する情報を収集することを許可します」という旨の英文が表示されますので、チェックを入れて "Accept Invitation" をタップしましょう。

shot3.png

テストアプリのダウンロード画面に移ります。
画面下部には、Firebase のアプリ (App Tester) をインストールするかどうかというメッセージが表示されていますが、テストアプリをインストールしたいだけなら必要ありません。

"Download latest" をタップしましょう。

shot4.png

ダウンロードが始まります。
OKをタップしましょう。

shot6.png

ダウンロードが完了しました。開きましょう。

shot7.png

このテストアプリは文字を表示させているだけなので何の権限も使っていませんが、なにか権限を使うアプリの場合は確認して、"インストール" をタップしましょう。

shot9.png

インストール完了しました。開きましょう。

shot11.png

テストアプリを起動できました!!

shot12.png

App Tester のインストール



毎回ブラウザからインストールしてもいいんですが、Firebase App Distribution から配信されるテストアプリを管理してくれるアプリがあります。
それが App Tester です。


この画面にきた時に下部に Firebase App Tester を勧めるメッセージが表示されます。インストールしたい場合は "Try the app" をタップしましょう。

shot4.png

app-tester-vX-XX.apk を保存してください。"OK" をタップします。

shot14.png

ダウンロード完了です。ファイルを開きましょう。

shot15.png

App Tester をインストールするかどうかについて聞かれます。
"インストール" をタップしましょう。

shot17.png

こういう警告が表示される可能性もあります。
"インストールする" をタップしてください。

shot18.png

インストール完了です!!
さっそくアプリを開きましょう。

shot19.png

起動できました!!
ここに、あなたのアカウント宛てに配信されたテストアプリが表示されます。

shot20.png

テストアプリを選択すると、そのアプリをダウンロードしたり起動したりできます。
このへんはブラウザと使い勝手は同じですね。

shot22.png


うまくインストールできない場合



「提供元不明のアプリです」みたいなエラーが表示され、うまくインストールできない場合


テストアプリをインストールする段階で、「提供元不明のアプリです」みたいなエラーが表示され、うまくインストールできないことがあります。

その場合はデバイスの設定画面から「セキュリティ」→「提供元不明のアプリ」にチェックを入れるとインストールできるようになります。
(設定の項目名などはデバイスによって異なる場合があります)

shot26.png


2019/10/09 追記



「招待するメールアドレス」と「Googleアカウント」の関係について


先述の手順で、Googleアカウントでのログインが必要と書きました。
これは、Firabase App Distribution では Google アカウントをベースとしてテスターを管理するためです。

一方、それ以前に招待メールを送ってもらうために、メールアドレスを開発側の伝えると思います。
普通はここで Google アカウントのメールアドレスを伝えるのが最も単純だと思いますが、実はこのメールアドレス、全く関係ない別のアドレスでも問題ありません。

登録の流れとしては、

  1. メールアドレスに招待メールを送ってもらう
  2. メールのリンクを開く
  3. 開いた先でテスターの Google アカウントを登録する

という手順なので、1 で受信するメールアドレスが Google アカウントのものでなくとも、3 で Google アカウントを登録できれば OK なわけです。

詳細は別記事にしたいと思いますが、実は管理側の画面でも「招待を送ったメールアドレス」と「そのアドレスの持ち主が登録した Google アカウント」はちゃんと紐付いて管理されています。

なにかの理由で Gmail のアドレスが使えない場合とかに、便利な機能かもしれませんね。


終わり

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

Flutterウィークリー #78

Flutterウィークリーとは?

FlutterファンによるFlutterファンのためのニュースレター
https://flutterweekly.net/

この記事は#78の日本語訳です
https://mailchi.mp/flutterweekly/flutter-weekly-78

※Google翻訳を使って自動翻訳を行っています。翻訳に問題がある箇所を発見しましたら編集リクエストを送っていただければ幸いです。

読み物&チュートリアル

Flutter内部

https://www.didierboelens.com/2019/09/flutter-internals/


これは必読です。 Didier Boelensは、 Flutter描画サイクルの内部が詳細にどのように機能するかを説明します。

ListViewで無限スクロールを実装する

https://codinglatte.com/posts/flutter/listview-infinite-scrolling-in-flutter/


Maina Wycliffeは、一番下までスクロールするときに、より多くのコンテンツをロードするリストを作成する方法を示します。

Flutterメッセージングアプリを構築する-パートI:プロジェクトの構造

https://medium.com/@MiBLT/building-a-messaging-app-in-flutter-part-i-project-structure-7d6db38783a5


Miguel Beltranは、顧客がキャンセルし、共有することに同意し、そこで行われた作業の文書化を開始した後、ほぼ完全なプロジェクトを共有します。

Flutterアクセシビリティ対応アプリの開発とテスト

https://medium.com/flutter-community/developing-and-testing-accessible-app-in-flutter-1dc1d33c7eea


Flutterアプリでのアクセシビリティの実装に取り組んだ後、Darshan Kawarは彼がそれについて学んだことを説明します。

プロバイダーを使用してFlutter動的テーマを作成する方法

https://medium.com/better-programming/how-to-create-a-dynamic-theme-in-flutter-using-provider-e6ad1f023899


Divyanshu Bhargavaによるこのチュートリアルで、Providerを使用して実行時にアプリのテーマを変更することを学びます。

GameKitとGoogleプレイサービスを統合する方法

https://medium.com/@abedalkareemomreyh/how-to-integrate-gamekit-and-google-play-services-flutter-4d3f4a4a2f77


Abedalkareem Omreyhが、 FlutterアプリでiOS用GameKitとAndroid用Goople Play Servicesを使用する方法を説明します。

BackdropFilterとImageFilterを使用してFlutterぼかし効果を作成する方法

https://medium.com/fluttervn/how-to-make-blur-effect-in-flutter-using-backdropfilter-imagefilter-559ffd8ab73


Bui Minh Trietによるこのチュートリアルで、アプリにぼかし効果を適用する方法を学びます。

Flutterプロシージャルテクスチャ

https://medium.com/@av.codes/procedural-textures-with-flutter-efcf546cd1fc


あなたは芸術に興味がありますか? Ivan CherepanovはFlutter Perlinノイズのような手続き型テクスチャを作成する方法を説明します。

ダイアグラムでのプロバイダーの理解—パート1:値の提供

https://medium.com/flutter-community/understanding-provider-in-diagrams-part-1-providing-values-4379aa1e7fd5


Joseph T. Lappによるアプリでのプロバイダーの使用に関する3部構成の記事。記事でリンクされているパート2と3。

FlutterがNubankでのモバイル開発のスケーリングに役立つと考える理由

https://medium.com/building-nubank/https-medium-com-freire-why-nubank-chose-flutter-61b80b568772


NubankのAlexandre Freireは、開発プラットフォームを採用するために行ったプロセスについてこの優れた記事を書きました。ネタバレ: Flutter勝ちます。

FlutterでバーコードとQRコードを操作する

https://medium.com/flutter-community/working-with-barcodes-and-qr-codes-in-flutter-fbb3a2d4ede7


FlutterアプリからのバーコードとQRコードのスキャンに関するRitesh Sharmaのチュートリアル。

ビデオ&メディア

プロバイダーでのデータ管理

https://www.youtube.com/watch?v=nZvELm3QnXc&feature=youtu.be


Raja Yoganによるこのビデオチュートリアルで、プロバイダーでデータを処理する方法を学びます。

Hive( Flutter Tutorial)– Pure Dart軽量で高速なNoSQLデータベース

https://www.youtube.com/watch?v=R1GSrrItqUs&feature=youtu.be


軽量でありながら強力なデータベースであるHiveの使用に関するチュートリアル。開発が容易で、デバイス上でも高速に実行されます。

ListTile( Flutter Widget of the Week)

https://www.youtube.com/watch?v=l8dj0yPBvgQ&list=PLjxrf2q8roU23XGwz3Km7sQZFTdB996iG&index=55&t=0s


ListTileはリストアイテムのマテリアルデザインパターンを実装するため、リストアイテムの内容について心配する必要はありません。

Flutterデスクトップアプリを作成する方法

https://www.youtube.com/watch?v=cMK6qxmTdaM


このビデオでは、LinuxおよびWindowsでFlutterを実行する方法について説明します。現在の状態は何ですか?試してみたい場合は何を達成できますか?

BLoCパターンでFlutterコードを設計する方法

https://www.youtube.com/watch?v=NCJZ_T8FiUo


BLoCパターンに従って、可能な限り最も簡単かつ効率的な方法でFlutterコードを設計する方法を学びます。

ESP32 |フラッター| BLE-ダストセンサー、シンプルな空気モニターアプリ(グラフ付き)

https://www.youtube.com/watch?v=w6jo2kJanqU


ESP32を使用してFlutterアプリケーションを作成し、BLEを介してダストセンサーデータを取得する方法に関するチュートリアル。

ライブラリ&コード

バージョン2.0 |ムーア

https://moor.simonbinder.eu/v2/


Moorのバージョン2.0がリリースされました。その完全なウェブサイトをチェックして、それを最大限に活用する方法を学んでください。

ミラド・アカリエ/ form_field_validator

https://github.com/Milad-Akarie/form_field_validator

一般的な検証オプションを提供する簡単なフラッターフォームフィールドバリデーター。

timfreiheit / r_flutte

https://github.com/timfreiheit/r_flutter

すべてのフラッターアセット用に自動生成された定数。

niklas-8 / RemoteFiles

https://github.com/niklas-8/RemoteFiles


AndroidおよびiOS用のオープンソースSFTPクライアント

Timoteohss / slide_button

https://github.com/Timoteohss/slide_button

フラッターを確認するスワイプボタン

mmcc007 /シルフ

https://github.com/mmcc007/sylph

クラウド内の実際のデバイスでFlutter統合テストを実行します。

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

Gradle Build Scanを使ってみる

私は普段Androidの開発をしていますが、Gradleの機能でBuild Scanが便利そうだったので最近使い始めました。

で、QiitaにBuild Scan紹介記事が1件もなかった(※当社調べ)ので、まだ使ってる人あまりいないのでは?と思って記事にしました。

Build Scanとは?

一言で言うと、「ビルドが通らない!」と他の人に相談したいとき、エラーログとか環境設定とか諸々をURLひとつで共有できる機能です。

How to use

Creating Build Scans
Get started with build scans
この辺を読んで、Project rootのbuild.gradleに必要な記述をします。
Gradle 4.3以上なら不要らしいです。

build.gradle
buildscript {
    ....
}

plugins {
    id 'com.gradle.build-scan' version '2.4.1'
}

buildScan {
    termsOfServiceUrl = 'https://gradle.com/terms-of-service'
    termsOfServiceAgree = 'yes'
    publishAlways()
}

あとはコマンドラインでProject rootに移動して、

./gradlew build --scan

を実行します。

BUILD FAILED in 4m 33s
341 actionable tasks: 302 executed, 39 up-to-date

Publishing build scan...
https://gradle.com/s/abcde1fghij2k

と出るのでURLにアクセスすると...

Getting started with build scans | Gradle Inc.


続きはご自身の目でお確かめください(丸投げ)

もっと詳しく知りたい/プライバシーとかどうなの?

Gradle Terms of Service
Gradle Build Scan Plugin User Manual
Removing published build scans from scans.gradle.com
この辺に書いてあるらしいですが、まだしっかり読んでいないので、わかり次第追記します。

その他参考サイト

The one Gradle trick that supersedes all the others

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