ionic 実機テスト　ビルド成功でも起動時にクラッシュした時に試す事

#前提

**※あくまで私の体験談です。誰かのヒントになる事を願って・・・**

**※[Capacitor](https://capacitor.ionicframework.com/docs/getting-started/with-ionic/)を使っています。**

###最悪１からやり直しとかにならない為には、native関連のプラグインを入れる度にテストしてみるのが最大の予防策かと思われる！！


#ビルドは成功、でも起動した直後にクラッシュ



ある時、突然実機でアプリを起動できなくなってしまった。。。

ビルドは成功している。

でもスマホ本体で起動すると、、

（Android Studioのログ）

```
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.hCalendar.app, PID: 12433
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hCalendar.app/com.hCalendar.app.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void org.apache.cordova.CordovaPlugin.privateInitialize(java.lang.String, org.apache.cordova.CordovaInterface, org.apache.cordova.CordovaWebView, org.apache.cordova.CordovaPreferences)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3430)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3614)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:86)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2199)
        at android.os.Handler.dispatchMessage(Handler.java:112)
        at android.os.Looper.loop(Looper.java:216)
        at android.app.ActivityThread.main(ActivityThread.java:7625)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void org.apache.cordova.CordovaPlugin.privateInitialize(java.lang.String, org.apache.cordova.CordovaInterface, org.apache.cordova.CordovaWebView, org.apache.cordova.CordovaPreferences)' on a null object reference
        at org.apache.cordova.PluginManager.getPlugin(PluginManager.java:171)
        at org.apache.cordova.PluginManager.startupPlugins(PluginManager.java:97)
        at org.apache.cordova.PluginManager.init(PluginManager.java:86)
        at com.getcapacitor.cordova.MockCordovaWebViewImpl.init(MockCordovaWebViewImpl.java:62)
        at com.getcapacitor.BridgeActivity.load(BridgeActivity.java:73)
        at com.getcapacitor.BridgeActivity.init(BridgeActivity.java:56)
        at com.hCalendar.app.MainActivity.onCreate(MainActivity.java:16)
        at android.app.Activity.performCreate(Activity.java:7458)
        at android.app.Activity.performCreate(Activity.java:7448)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1286)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3409)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3614) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:86) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2199) 
        at android.os.Handler.dispatchMessage(Handler.java:112) 
        at android.os.Looper.loop(Looper.java:216) 
        at android.app.ActivityThread.main(ActivityThread.java:7625) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
```



**このログを見ても私は何のこっちゃ分かりません！！**


#原因はcordovaのplugin？

はっきりとしたことは分かりませんが、クラッシュするようになったのは**Googleログインを実装するために必要なプラグインを入れてからでした。**

```
$ ionic cordova plugin add cordova-plugin-googleplus --save --variable REVERSED_CLIENT_ID=myreversedclientid --variable WEB_APPLICATION_CLIENT_ID=mywebapplicationclientid
```
これと

```
$   npm install --save @ionic-native/google-plus
```

これを入れて以降、実機で起動しなくなった気がした。

と言う訳で、上記と逆のコマンドを実行！

```
ionic cordova plugin rm cordova-plugin-googleplus
```

```
npm uninstall @ionic-native/google-plus
```

`npm uninstall @ionic-native/google-plus`をすると、以下のような内容が出てきたので

```
removed 1 package and audited 17544 packages in 11.928s
found 1 high severity vulnerability
  run `npm audit fix` to fix them, or `npm audit` for details
```


とりあえずこっちを実行してみる。

```
 npm audit fix
```


~~:point_up:これが何をしているのかは分かりませんが・・・www~~

**※追記**
`npm audit fix` はプラグイン間の依存関係の問題を修正してくれるらしいです！


```
 npx cap update
```

変更をアップデート！！！


これで起動した直後のクラッシュはなくなりました。

**段階ごとに実機テストをしていた事によって、原因を推測することができた。。。**

プラグインを入れる度に、実機で動作するか確認して行こう！！！