flutter doctorを実行するとAndroid Studioで「Flutter plugin not installed; this adds Flutter specific functionality.」と出る問題の対処方法
以前は問題なかったが、久しぶりにflutter doctor
コマンドを実行すると、Android StudioでFlutterとDartのプラグインが認識されていない様子になった。
Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel unknown, v1.17.0, on Mac OS X 10.15.6 19G2021, locale ja-JP) [✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3) [✓] Xcode - develop for iOS and macOS (Xcode 12.3) [!] Android Studio (version 4.1) ✗ Flutter plugin not installed; this adds Flutter specific functionality. ✗ Dart plugin not installed; this adds Dart specific functionality. [✓] VS Code (version 1.52.1) [!] Connected device ! No devices available ! Doctor found issues in 2 categories.
Android StudioでPreferences / Plugins を確認すると、FlutterとDartはインストール済みとなっている。試しにこれらをインストールし直してみても上記のエラーが消えなかったので情報を探していたら、以下のissueを発見し、この通りにln -s リンク元 リンク名
としてシンボリックリンクを作成すれば解決できた。
https://github.com/flutter/flutter/issues/68429
ln -s ~/Library/Application\ Support/Google/AndroidStudio4.1/plugins ~/Library/Application\ Support/AndroidStudio4.1
WWDC20基調講演のメモ
iOS14
- App Library
- ホームスクリーンの最後のページに追加された
- アプリを自動的にカテゴリ別に見やすく表示してくれる
- Widgets
- スマートスタック
- ウィジェットの内容を自動的に切り替えも可能
- ホームスクリーンに追加や並び替えも可能
- Picture in Picture
- ピンチで拡大表示も可能
- 画面の外へスワイプすると音声は再生され続ける
- フルスクリーンで再生可能
- ×をタップして終了も可能
- Siri
- 今まではSiriを呼び出すとフルスクリーンのUIだったが、画面下の方でSiriが起動してアプリを呼び出せるようになった。アプリのUIを邪魔せずシームレスな呼び出しが可能になった
- オフラインの翻訳機能(アプリ?)も追加した、安全に翻訳して会話ができる
- Message
- 大丈夫な相手(メッセージ毎?)をピンで固定できるようになった
- ミー文字の表現が増えた、フェイスカバーも増えた
- グループ機能でメンションやインライン返信もできるようになった
- Maps
- 全米でのロールアウトが完了
- 最適な自転車ルートを選択可能になった
- 階段を使わないルートも可能になった、対応都市は準備拡大
- CarPlay
- App Clips
iPadOS 14
- 写真のサイドバーが新しくなった
- その新しいサイドバーをほかのアプリでも使えるようになった
- Siri
- 右下に表示されるようになり、アプリを利用しながら使えるようになった
- 電話着信の場合でもアプリを邪魔しないUIになった(iPhoneも同様)
- Universal Searchで検索可能になった
- Apple Pencil
- 検索やテキスト入力でもScribeできるようになった
watchOS 7
- コンプリケーション
- コンプリケーションを作成するのにネイティブのSwiftUIも使える
- 自作の文字盤を教諭したりできる
- Maps
- iOS14と同様に自転車ルートに対応
- Workout
- ランニングだけでなくダンスのような腕の動きが一定ではない場合にも計測できるようになった
- Health
- 睡眠トラッキングができるようになった
- 睡眠スケジュール、就寝前のルーティンを設定できるようになった
- 手洗いの時間を計測できるようになった
- オーディオ機能を使って計測している
AirPods
- デバイス間のシームレスな接続切り替えが可能
- 空間オーディオ
- サラウンド
- センサーによる音場の固定など
Privacy
- 全ての製品にプライバシー対策をこうじている
- 位置情報
- 正確な位置情報と共有するか、だいたいの位置情報を共有するか選べるようになる
- マイク・カメラ
- 現在または最近の使用状況が分かる
- 使用中はステータスバーに表示される(右上っぽい)
- Tracking control
- App privacy
Home
macOS Big Sur
- デザインを刷新
- サウンドも再マスタリング
- サイドバーやツールバーも新しくなった
- アニメーションにはMetalを採用している
- コントロールセンターが使えるようになった
- ウィジェットも新しくなり、デベロッパは独自のウィジェットも開発可能
- Message
- mac上でミー文字の作成も可能
- Maps
- iOS14の機能をすべて取り込んだ
- aroundのフルスクリーン表示も可能
- Mac Catalyst
- Safari
- Apple Silicon
WWDC20のメモ
WWDC20のURL
https://developer.apple.com/wwdc20/
Special Event Keynote and Platforms State of the Union / 特別イベントの基調講演と廉造プラットフォームと状態
100+ Engineering Sessions / 100回以上のエンジアリングセッション
Appleのエンジニアによる技術やデザインに特化した動画で、次世代アプリの構築方法を学べる。 ビデオコレクションは毎日掲載され、ウェブまたはiPhone、iPad、Apple TVのApple Developerアプリで視聴可能。
All-New Developer Forums / 全く新しい開発者フォーラム
新しくなったApple Developer Forumsでは、1,000人以上のAppleのエンジニアと交流できる。 誰でもフォーラムを検索して閲覧したり、Apple IDを持ってサインインしたりして、さまざまな開発トピックについて質問できる。
1-on-1 Developer Labs (by appointment) / 1on1デベロッパーラボ(予約制)
Appleプラットフォームの最新の進歩を支えてきたエンジニアから、新機能の実装方法についての詳細な情報を直接聞くことができる。 対象となるメンバーは、サインインしてスケジュールからラボを選択し、質問を入力して送信するだけ。 利用人数に制限あり。リクエストは審査され、あなたのステータスをEメールで案内あり。
Apple Design Awards / アップルデザイン賞
世界中の何百万人もの開発者たちが作ったアプリケーションやゲームは、人々の日常生活に良い影響を与えてきた。 今年のApple Design Awardを受賞した開発者たちを称えましょう!
See last year’s winners(昨年の受賞者)
Conversations at WWDC20 / WWDC20での会話
リサ・ジャクソン氏とエリック・ホルダー前司法長官との対談。
WWDC2018セッションビデオの一覧ページ
WWDC 2018 - Videos - Apple Developer
2018/8/8 頃 WWDCのビデオで日本語字幕が追加されました。
【更新】【続】AdMobのGDPR(EUの一般データ保護規則)に対応する
前回 の続きで、AdMobがオープンソースで公開したconsent SDK
の実装を具体的に見ていく。
- Android
https://developers.google.com/admob/android/eu-consent - iOS
https://developers.google.com/admob/ios/eu-consent
consent SDKのドキュメントに出てくる用語について簡単にメモ。
Personalized ads
要は従来の広告と同類のもので、ターゲティングされている広告。NonPersonalized ads
ターゲティングされていない広告。ターゲティングの目的ではCookie
や広告識別子
は使用しないが、フリークエンシーキャップ、レポート集計、不正に対応するためにはターゲティングの目的ではCookie
または広告識別子
を使用する。
参照
Personalized and non-personalized ads - AdMob Help
続きは、更新途中。
ざっくりだが、consent SDK
を使ってやることは以下のような感じになる様子。
Personalizedのステータスが取得できた場合は、従来通りの広告リクエスト。
NonPersonalizedのステータスが取得できた場合は、
@{@"npa": @"1"}
のようなパラメータをセットして広告リクエスト。Unknownのステータスが取得できた場合は、同意ダイアログを出してユーザーの同意を取得する処理。
続き
とりあえず、iOSのconsent SDKの内容からは、 アプリのユーザーから同意を取得する方法としては下記の2つが紹介されている。
- Googleが用意している同意フォーム用クラス
PACConsentForm
を利用する Publisher-managed consent collection
の方法を利用して、独自の同意フォームを用意する
PACConsentForm
の同意フォームはあくまでもGoogleを利用して収益化するのに適したメッセージ内容となっているため、
Consent SDK
に含まれているconsentform.html
ファイルを編集して、自分のアプリに適した同意メッセージに変更するようにとドキュメントに書かれていた。
Publisher-managed consent collection
の方法は、AdMob管理画面のEUユーザーの同意
>広告技術プロバイダの選択
>広告技術プロバイダのカスタム グループ
で12社
を超えて指定している場合は、この方法を使うようにと書かれている。
また、ドキュメントの最下部の注釈(Note: )で、メディエーションでもこれと同じ方法で同意を得る必要があると書かれている。
いずれの方法にしても、ちゃんと対応しようとするとconsentform.html
を参考にするなどして、自分のアプリに適したプライバシーポリシーも用意する必要そうだ。
そこで、EEAでのアプリや広告の配信を制限して、一時的な対応とする場合に必要になりそうな情報とか。(何もしないよりはましな気がする)
- iTunesConnect、Google Play ConsoleでアプリのEEA対象国での配信を停止しておく
- AdMob管理画面 > メディエーショングループ > ターゲット地域でEEA対象国を除外しておく
- あと、ついでに
Google Analytics
とか利用していれば、そっちも規約更新とか確認しておく
欧州経済領域(EEA)
- アイルランド
- イタリア
- イギリス
- エストニア
- オーストリア
- オランダ
- キプロス
- ギリシャ
- スウェーデン
スペイン
- スロベニア
- チェコ
- デンマーク
- ドイツ
- ハンガリー
- フィンランド
- フランス
- ブルガリア
ベルギー
- ポルトガル
- マルタ
- ラトビア
- リトアニア
- ルーマニア
- ノルウェー
- リヒテンシュタイン
欧州連合加盟国の参照元
https://ja.wikipedia.org/wiki/欧州連合加盟国
GDPRについての参考資料
http://www.meti.go.jp/policy/it_policy/privacy/downloadfiles/18datewg08.pdf
AdMobのGDPR(EUの一般データ保護規則)に対応する
今日5/22になってGDPRに対応したアプリ向けSDKとか設定の案内メールが届いたので、早速設定してみる。
AdMob利用している人はたぶんメールが届いてるはずなので、メール内の「ADMOBにログイン」というリンクを開いて設定を進める。
以下、一応手順。
- https://apps.admob.com からAdMob アカウントにログイン
[ブロックの管理]
>[EU ユーザーの同意]
の順にクリック- 表示される「EU ユーザーの同意」ページで、必要に応じて以下の設定
※ 2 の[ブロックの管理]
は画面左側のメニュー内にあったが、もしAdMob管理画面のバージョンをV2
にアップデートしていなければ、場所が異なるかもしれない。
「EU ユーザーの同意」
ここでは、以下の広告技術プロバイダの選択
でどちらかを選択するとなっているが、デフォルトでは一般によく使用される広告技術プロバイダのグループ
が選択された状態になっている。広告技術プロバイダを選択する理由が特になければ、デフォルトのままで良さそう。
広告技術プロバイダの選択
- 一般によく使用される広告技術プロバイダのグループ
- 広告技術プロバイダのカスタム グループ
同意取得の設定
ここに書いてあるように、アプリのユーザーから同意を取得するための機能を提供するSDKをオープンソースで公開してくれたようなので、あとはドキュメントに沿ってアプリに実装していく。実装が終わったら、当然ながらアプリのバイナリをアップロードして、ストアに公開という作業が必要になる。
- Android
https://developers.google.com/admob/android/eu-consent - iOS
https://developers.google.com/admob/ios/eu-consent
メディエーションの場合は独自のダイアログを利用してくださいと書かれており、ちょっと手間がかかりそう。
また実装の詳細がわかったら記事を更新します。