質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Cordova

Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

解決済

cordova11&android API31,32で cordova-admob-plusを使用したい(PendingIntent )(WorkManager)

tajix_japan
tajix_japan

総合スコア131

Cordova

Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

1回答

0リアクション

0クリップ

444閲覧

投稿2022/09/24 08:24

編集2022/09/24 08:33

cordova11&android API31,32で cordova-admob-plusを使用したい

cordova11で cordova-admob-plusを作成したアプリを作り、android にテストアプリとして上げたところ、下記の回答が来ました。

テストの際に 4 台のデバイスで検出されました
スタック トレース
Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.

原因
PendingIntentのFLAG_IMMUTABLEとFLAG_MUTABLEについて調べたところ
Target SDK 31(Android 12)から PendingIntent のmutability(可変性)を指定する必要があります。ということが分かりました。
https://developer.android.com/about/versions/12/behavior-changes-12#pending-intent-mutability
指定するときに FLAG_IMMUTABLE か FLAG_MUTABLE のどちらかの値を使用することになります。ということで、admobが上記に引っかかっているようです。

対応策
【1】https://halzoblog.com/error-bug-diary/20220629-2/
上記のブログから、WorkManagerを使用すればいいといいうところまでは分かりました。
上記の人は下記の【2】の対策で無事解決できたようです。

【2】上記のブログを受けて下記の公式ページを参照に platform/android/ とplatform/android/app/ 下の両方の build.gradleに 「 implementation("androidx.work:work-runtime-ktx:2.7.1")」を追記しました。
https://developer.android.com/jetpack/androidx/releases/work?hl=ja
(上記のブログではapp下だけでいいと書かれていたのですが、片方、両方にトライしました=結果はどちらも同じエラーで終了でした)

dependencies {
implementation("androidx.work:work-runtime-ktx:2.7.1")
}

【3】しかしながら、下記のエラーが出てビルド出来ません。
Could not find method implementation() for arguments [androidx.work:work-runtime-ktx:2.7.1] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

ブログの方は普通に対応できたようですので、私の設定の中でなにかが根本的に欠けているのだと思います。

私の取ったCUI操作は下記です。

環境 =/ cordova11 / node 16.15.1 / android studio chipmunk / jdk 16.0.2 / gradle 7.4 /

cui操作

  1. cordova create test

  2. cd test

  3. cordova platform add android@latest

  4. cordova plugin add cordova-admob-plus --save --variable APP_ID_ANDROID=ca-app-pub-yyyyyyyyyyy~zzzzzzzzzz

  5. configに下記を追加 (AndroidX使用の宣言 https://blog.asial.co.jp/1986)
    →試しに外してみましたが結果は変わらず同じエラーでビルドできませんでした

  <preference name="AndroidXEnabled" value="true" />

  1. 片方、または両方のbuild.gradleに下記を追加

  dependencies {
implementation("androidx.work:work-runtime-ktx:2.7.1")
}

7. cordova build

エラー内容
Could not find method implementation() for arguments [androidx.work:work-runtime-ktx:2.7.1] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

cordova11でsndroid API31 32 対応している人は数多くいるはずなのですが、トラブルについてはwebに殆ど上がっていなく、私だけトラブルに合っているかと焦っています。
どうぞよろしくお願いいたします。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Cordova

Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。