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

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

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

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

Android Studio

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

Q&A

解決済

1回答

1499閲覧

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

tajix_japan

総合スコア132

Cordova

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

Android Studio

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

0グッド

0クリップ

投稿2022/09/24 08:24

編集2022/09/24 18:39

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に殆ど上がっていなく、私だけトラブルに合っているかと焦っています。
どうぞよろしくお願いいたします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。
dependenciesの場所が違っていました。
独立して置いたらうまくいきました。
ブログの通りにappの下だけに記入します。

buildscript {
dependencies {
//Don't put dependencies here.
}
}

dependencies {
//Put them here
}

投稿2022/09/24 09:39

tajix_japan

総合スコア132

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問