365連休

にわかのandroidとかの開発メモ。

【事案】Androidアプリをストアからインストールすると初回起動時のみ異常終了する(# ゚Д゚)

【解決】java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver" on path: DexPathList[[zip file "/data/app/your.pack.name-1/base.apk"],中略/lib/arm64, /system/lib64, /vendor/lib64]] - 365連休

↑解決しました。

~~~~~~~~~~~~~~~~~~~~~~~~~~

ドはまり。

 

デバッグ実行->エミュレータ、実機とも問題なし

リリースビルドを手動インストール->実機問題なし

そのままストアへアップしインストール->初回起動時のみ異常終了、次回以降は問題なし

アンインストールし再度ストアからインストール->同様。

 

再現性があるものの、初回起動時だけっていうのが分からない。

初回起動時だけの特別な処理はしていない。

 

Playコンソールのクラッシュログ

java.lang.RuntimeException: 
  at android.app.ActivityThread.handleReceiver (ActivityThread.java:3021)
  at android.app.ActivityThread.-wrap18 (ActivityThread.java)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1561)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:159)
  at android.app.ActivityThread.main (ActivityThread.java:6139)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:886)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:776)
Caused by: java.lang.ClassNotFoundException: 
  at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:380)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:312)
  at android.app.ActivityThread.handleReceiver (ActivityThread.java:3016)
  at android.app.ActivityThread.-wrap18 (ActivityThread.java)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1561)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:159)
  at android.app.ActivityThread.main (ActivityThread.java:6139)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:886)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:776)

 

onCreateで行う処理

  • GDPR関係
  • UI参照取得

 

onResumeで行う処理

  • SoundPool#load

 

SoundPool#loadに時間がかかったと睨んでAsyncTaskにより非同期処理にしても改善せず。

 

時間がかかってActivityが強制Killされたわけじゃないみたい。

ClassNotFoundっていうけど、2回目以降は正常動作してるしなぁ・・・

 

ストアからインストールした時だけだから、Googleがなんか特別なコードを仕込んでそれが落ちてるのか?

ちなみにAndroid APP Bundleは未使用だから、APKは何も改変されてないつもり。

 

 追記:

multidex 効果なし

proguard disbale 効果なし

cloud.tencent.com

ついにチャイナを翻訳する日がきたか。

stackoverflow.com

stackoverflow.com

 

 

Release Notes  |  Google APIs for Android  |  Google Developers

June 17, 2019
Warning: This release is a MAJOR version update and breaking change.
The latest update to Google Play services and Firebase includes the following changes:
Migration from Android Support Libraries to Jetpack (AndroidX) Libraries. Libraries will not work unless you make the following changes in your app:
Upgrade com.android.tools.build:gradle to v3.2.1 or later.
Upgrade compileSdkVersion to 28 or later.
Update your app to use Jetpack (AndroidX); follow the instructions in Migrating to AndroidX.
Firebase Bill of Materials (BoM)
Artifacts released on maven.google.com
com.google.android.datatransport:transport-api:2.0.0
com.google.android.datatransport:transport-backend-cct:2.0.0
com.google.android.datatransport:transport-runtime:2.0.0
com.google.android.gms:play-services-ads:18.0.0
:
:
:

 

developers.google.com

2019/6/22時点で日本語版の内容が最新じゃなかったので注意、LANGUAGE->English 

Prerequisites
Use Android Studio 3.2 or later
minSdkVersion 14 or later
compileSdkVersion 28 or later
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'com.google.android.gms:play-services-ads:18.0.0'
}