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操作
-
cordova create test
-
cd test
-
cordova platform add android@latest
-
cordova plugin add cordova-admob-plus --save --variable APP_ID_ANDROID=ca-app-pub-yyyyyyyyyyy~zzzzzzzzzz
-
configに下記を追加 (AndroidX使用の宣言 https://blog.asial.co.jp/1986)
→試しに外してみましたが結果は変わらず同じエラーでビルドできませんでした
<preference name="AndroidXEnabled" value="true" />
- 片方、または両方の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に殆ど上がっていなく、私だけトラブルに合っているかと焦っています。
どうぞよろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。