在Android中打开后,应用立即崩溃

时间:2018-11-01 20:30:29

标签: cordova ionic-framework crash

我有一个应用程序可以在绝大多数客户中保持稳定。

但是我有一个拥有一台三星S9的客户端,当他打开该应用程序时,立即打开一条消息:

  

该应用已停止

客户端确认在较旧的版本中,该应用正常运行。

这是我从Google控制台获取的日志:

  

java.lang.RuntimeException:

     

在android.view.DisplayListCanvas.throwIfCannotDraw   (DisplayListCanvas.java:229)

     

在android.view.RecordingCanvas.drawBitmap(RecordingCanvas.java:97)

     

at android.graphics.drawable.BitmapDrawable.draw   (BitmapDrawable.java:529)

     

在android.widget.ImageView.onDraw(ImageView.java:1367)

     

在android.view.View.draw(View.java:20338)

     

在android.view.View.updateDisplayListIfDirty(View.java:19283)

     

在android.view.View.draw(View.java:20061)

     

在android.view.ViewGroup.drawChild(ViewGroup.java:4421)

     

在android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)

     

在android.view.View.updateDisplayListIfDirty(View.java:19274)

     

在android.view.View.draw(View.java:20061)

     

在android.view.ViewGroup.drawChild(ViewGroup.java:4421)

     

在android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)

     

在android.view.View.updateDisplayListIfDirty(View.java:19274)

     

在android.view.View.draw(View.java:20061)

     

在android.view.ViewGroup.drawChild(ViewGroup.java:4421)

     

在android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)

     

在android.view.View.draw(View.java:20341)

     

在com.android.internal.policy.DecorView.draw(DecorView.java:979)

     

在android.view.View.updateDisplayListIfDirty(View.java:19283)

     

在android.view.ThreadedRenderer.updateViewTreeDisplayList   (ThreadedRenderer.java:686)

     

在android.view.ThreadedRenderer.updateRootDisplayList   (ThreadedRenderer.java:692)

     

在android.view.ThreadedRenderer.draw(ThreadedRenderer.java:800)

     

在android.view.ViewRootImpl.draw(ViewRootImpl.java:3488)

     

在android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3275)

     

在android.view.ViewRootImpl.performTraversals   (ViewRootImpl.java:2810)

     

在android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1779)

     

在android.view.ViewRootImpl $ TraversalRunnable.run   (ViewRootImpl.java:7810)

     

在android.view.Choreographer $ CallbackRecord.run   (Choreographer.java:911)

     

在android.view.Choreographer.doCallbacks(Choreographer.java:723)

     

在android.view.Choreographer.doFrame(Choreographer.java:658)

     

在android.view.Choreographer $ FrameDisplayEventReceiver.run   (Choreographer.java:897)

     

在android.os.Handler.handleCallback(Handler.java:789)

     

在android.os.Handler.dispatchMessage(Handler.java:98)

     

在android.os.Looper.loop(Looper.java:164)

     

在android.app.ActivityThread.main(ActivityThread.java:6938)

     

在java.lang.reflect.Method.invoke(本机方法)

     

在com.android.internal.os.Zygote $ MethodAndArgsCaller.run   (Zygote.java:327)

     

在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

我的离子信息:

离子:

ionic(Ionic CLI):4.1.1(C:\ Users \ jsoftwares1 \ AppData \ Roaming \ npm \ node_modules \ ionic) 离子框架:离子角3.9.2 @ ionic / app-scripts:3.1.11

科尔多瓦:

cordova(Cordova CLI):8.0.0 Cordova平台:不可用 Cordova插件:cordova-plugin-ionic-keyboard 2.1.2,cordova-plugin-ionic-webview 1.2.1(和其他16个插件)

系统:

Android SDK工具:26.1.1(C:\ Users \ jsoftwares1 \ Desktop \ tools \ lib) NodeJS:v8.11.3(C:\ Program Files \ nodejs \ node.exe) npm:6.4.0 作业系统:Windows 10

我的cordova插件:

cordova-plugin-advanced-http 1.11.1 “Advanced HTTP plugin”
cordova-plugin-app-event 1.2.1 “Application Events”
cordova-plugin-app-version 0.1.9 “AppVersion”
cordova-plugin-background-mode 0.7.2 “BackgroundMode”
cordova-plugin-badge 0.8.7 “Badge”
cordova-plugin-device 2.0.2 “Device”
cordova-plugin-dialogs 2.0.1 “Notification”
cordova-plugin-file 6.0.1 “File”
cordova-plugin-ionic-keyboard 2.1.2 “cordova-plugin-ionic-keyboard”
cordova-plugin-ionic-webview 1.2.1 “cordova-plugin-ionic-webview”
cordova-plugin-local-notification 0.9.0-beta.2 “LocalNotification”
cordova-plugin-local-notifications-db 0.8.4 “LocalNotification”
cordova-plugin-sim 1.3.3 “SIM”
cordova-plugin-splashscreen 5.0.2 “Splashscreen”
cordova-plugin-whitelist 1.3.3 “Whitelist”
cordova-sqlite-storage 2.4.0 “Cordova sqlite storage plugin”
cordova-support-google-services 1.1.0 “cordova-support-google-services”
phonegap-plugin-multidex 1.0.0 “Multidex”
phonegap-plugin-push 2.2.3 “PushPlugin”

我的config.xml:

<?xml version='1.0' encoding='utf-8'?>

<widget id="japp.jcontrole" version="0.1.6" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">

<name>xApp</name>

<description>Controle de perguntas/respostas auxiliar do sistema xx.</description>

<author email="hi@ionicframework" href="http://ionicframework.com/">Ionic Framework Team</author>

<content src="index.html" />

<allow-intent href="http://*/*" />

<allow-intent href="https://*/*" />

<content src="index.html" />

<allow-navigation href="*" />

<allow-intent href="*" />

<access origin="*" subdomains="true" />

<allow-intent href="tel:*" />

<allow-intent href="sms:*" />

<allow-intent href="mailto:*" />

<allow-intent href="geo:*" />

<preference name="ScrollEnabled" value="false" />

<preference name="SplashScreenSpinnerColor" value="white" />

<preference name="AndroidPersistentFileLocation" value="Compatibility" />

<preference name="windows-target-version" value="10.0" />

<preference name="windows-phone-target-version" value="10.0" />

<preference name="android-minSdkVersion" value="19" />

<preference name="BackupWebStorage" value="none" />

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

<preference name="FadeSplashScreenDuration" value="300" />

<preference name="SplashShowOnlyFirstTime" value="false" />

<preference name="SplashScreen" value="screen" />

<preference name="AutoHideSplashScreen" value="false" />

<preference name="SplashScreenDelay" value="0" />

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

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

<preference name="loadUrlTimeoutValue" value="700000" />

<platform name="android">

<icon qualifier="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />

<icon qualifier="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />

<icon qualifier="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />

<icon qualifier="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />

<icon qualifier="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />

<icon qualifier="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />

<splash qualifier="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />

<splash qualifier="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" />

<splash qualifier="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" />

<splash qualifier="land-xhdpi" src="resources/android/splash/drawable-land-xhdpi-screen.png" />

<splash qualifier="land-xxhdpi" src="resources/android/splash/drawable-land-xxhdpi-screen.png" />

<splash qualifier="land-xxxhdpi" src="resources/android/splash/drawable-land-xxxhdpi-screen.png" />

<splash qualifier="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" />

<splash qualifier="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" />

<splash qualifier="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" />

<splash qualifier="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />

<splash qualifier="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />

<splash qualifier="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />

</platform>

<platform name="ios">

<icon height="57" platform="ios" src="resources/icons/ios/icon.png" width="57" />

<icon height="114" platform="ios" src="resources/icons/ios/icon@2x.png" width="114" />

<icon height="40" platform="ios" src="resources/icons/ios/icon-40.png" width="40" />

<icon height="80" platform="ios" src="resources/icons/ios/icon-40@2x.png" width="80" />

<icon height="50" platform="ios" src="resources/icons/ios/icon-50.png" width="50" />

<icon height="100" platform="ios" src="resources/icons/ios/icon-50@2x.png" width="100" />

<icon height="60" platform="ios" src="resources/icons/ios/icon-60.png" width="60" />

<icon height="120" platform="ios" src="resources/icons/ios/icon-60@2x.png" width="120" />

<icon height="180" platform="ios" src="resources/icons/ios/icon-60@3x.png" width="180" />

<icon height="72" platform="ios" src="resources/icons/ios/icon-72.png" width="72" />

<icon height="144" platform="ios" src="resources/icons/ios/icon-72@2x.png" width="144" />

<icon height="76" platform="ios" src="resources/icons/ios/icon-76.png" width="76" />

<icon height="152" platform="ios" src="resources/icons/ios/icon-76@2x.png" width="152" />

<icon height="29" platform="ios" src="resources/icons/ios/icon-small.png" width="29" />

<icon height="58" platform="ios" src="resources/icons/ios/icon-small@2x.png" width="58" />

<icon height="87" platform="ios" src="resources/icons/ios/icon-small@3x.png" width="87" />

<splash height="1136" platform="ios" src="resources/screens/ios/Default-568h@2x~iphone.png" width="640" />

<splash height="1334" platform="ios" src="resources/screens/ios/Default-667h.png" width="750" />

<splash height="2208" platform="ios" src="resources/screens/ios/Default-736h.png" width="1242" />

<splash height="1242" platform="ios" src="resources/screens/ios/Default-Landscape-736h.png" width="2208" />

<splash height="1536" platform="ios" src="resources/screens/ios/Default-Landscape@2x~ipad.png" width="2048" />

<splash height="768" platform="ios" src="resources/screens/ios/Default-Landscape~ipad.png" width="1024" />

<splash height="2048" platform="ios" src="resources/screens/ios/Default-Portrait@2x~ipad.png" width="1536" />

<splash height="1024" platform="ios" src="resources/screens/ios/Default-Portrait~ipad.png" width="768" />

<splash height="960" platform="ios" src="resources/screens/ios/Default@2x~iphone.png" width="640" />

<splash height="480" platform="ios" src="resources/screens/ios/Default~iphone.png" width="320" />

</platform>

<plugin name="cordova-plugin-whitelist" spec="1.3.3" />

<plugin name="cordova-plugin-device" spec="2.0.2" />

<plugin name="cordova-plugin-splashscreen" spec="5.0.2" />

<plugin name="cordova-plugin-ionic-keyboard" spec="^2.0.5" />

<allow-navigation href="http://192.168.0.15:8100" />

<allow-navigation href="http://192.168.0.15:8101" />

<allow-navigation href="http://192.168.0.15:8102" />

<allow-navigation href="http://10.0.7.80:8100" />

<plugin name="cordova-plugin-advanced-http" spec="^1.11.1" />

<plugin name="cordova-plugin-ionic-webview" spec="^1.2.1" />

<allow-navigation href="http://192.168.0.15:8103" />

<allow-navigation href="http://192.168.0.15:8106" />

<plugin name="cordova-sqlite-storage" spec="^2.3.3" />

<plugin name="cordova-plugin-dialogs" spec="^2.0.1" />

<plugin name="cordova-plugin-app-version" spec="^0.1.9" />

<plugin name="cordova-plugin-sim" spec="^1.3.3" />

<plugin name="cordova-plugin-local-notification" spec="^0.9.0-beta.2" />

<plugin name="phonegap-plugin-push" spec="^2.2.3">

<variable name="ANDROID_SUPPORT_V13_VERSION" value="27.+" />

<variable name="FCM_VERSION" value="11.6.2" />

</plugin>

<plugin name="cordova-plugin-background-mode" spec="^0.7.2" />

<engine name="browser" spec="5.0.3" />

<engine name="ios" spec="4.5.5" />

<engine name="android" spec="7.1.0" />

</widget>
Recently i added a background mode with local notifications in one component:

 ngOnInit(): void {

  this.backgroundMode.setDefaults({silent:true});
  this.backgroundMode.enable();
  this.backgroundMode.on("activate").subscribe(()=>{

  this.backgroundMode.disableWebViewOptimizations()

  clearInterval(this.intervalId); 

  this.intervalId = setInterval(() => {this.consultaNotificacoes()}, 100000); 

调用本地推送通知的函数:

 for (var i = 0; i < res.data.notificar.perguntas.length; i++) {
            this.localNotifications.schedule({
              id: i+1,
              priority: 2,
              text: 'Produto: ' + res.data.notificar.perguntas[i].produto.substring(0, 20) + '...',
              title: 'Nova pergunta, conta: ' + res.data.notificar.perguntas[i].conta,
              smallIcon: 'res://notification',
            });
          }
        }

2 个答案:

答案 0 :(得分:1)

我在config.xml中修复了,我的资产不正确。

我这样做:

<platform name="android">
        <icon qualifier="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
        <icon qualifier="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
        <icon qualifier="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
        <icon qualifier="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
        <icon qualifier="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />
        <icon qualifier="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
        <splash qualifier="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />
        <splash qualifier="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" />
        <splash qualifier="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" />
        <splash qualifier="land-xhdpi" src="resources/android/splash/drawable-land-xhdpi-screen.png" />
        <splash qualifier="land-xxhdpi" src="resources/android/splash/drawable-land-xxhdpi-screen.png" />
        <splash qualifier="land-xxxhdpi" src="resources/android/splash/drawable-land-xxxhdpi-screen.png" />
        <splash qualifier="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" />
        <splash qualifier="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" />
        <splash qualifier="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" />
        <splash qualifier="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
        <splash qualifier="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
        <splash qualifier="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
    </platform>
    <platform name="ios">
        <icon height="57" platform="ios" src="resources/ios/icon/icon.png" width="57" />
        <icon height="114" platform="ios" src="resources/ios/icon/icon@2x.png" width="114" />
        <icon height="40" platform="ios" src="resources/ios/icon/icon-40.png" width="40" />
        <icon height="80" platform="ios" src="resources/ios/icon/icon-40@2x.png" width="80" />
        <icon height="50" platform="ios" src="resources/ios/icon/icon-50.png" width="50" />
        <icon height="100" platform="ios" src="resources/ios/icon/icon-50@2x.png" width="100" />
        <icon height="60" platform="ios" src="resources/ios/icon/icon-60.png" width="60" />
        <icon height="120" platform="ios" src="resources/ios/icon/icon-60@2x.png" width="120" />
        <icon height="180" platform="ios" src="resources/ios/icon/icon-60@3x.png" width="180" />
        <icon height="72" platform="ios" src="resources/ios/icon/icon-72.png" width="72" />
        <icon height="144" platform="ios" src="resources/ios/icon/icon-72@2x.png" width="144" />
        <icon height="76" platform="ios" src="resources/ios/icon/icon-76.png" width="76" />
        <icon height="152" platform="ios" src="resources/ios/icon/icon-76@2x.png" width="152" />
        <icon height="29" platform="ios" src="resources/ios/icon/icon-small.png" width="29" />
        <icon height="58" platform="ios" src="resources/ios/icon/icon-small@2x.png" width="58" />
        <icon height="87" platform="ios" src="resources/ios/icon/icon-small@3x.png" width="87" />
        <splash height="1136" platform="ios" src="resources/ios/splash/Default-568h@2x~iphone.png" width="640" />
        <splash height="1334" platform="ios" src="resources/ios/splash/Default-667h.png" width="750" />
        <splash height="2208" platform="ios" src="resources/ios/splash/Default-736h.png" width="1242" />
        <splash height="1242" platform="ios" src="resources/ios/splash/Default-Landscape-736h.png" width="2208" />
        <splash height="1536" platform="ios" src="resources/ios/splash/Default-Landscape@2x~ipad.png" width="2048" />
        <splash height="768" platform="ios" src="resources/ios/splash/Default-Landscape~ipad.png" width="1024" />
        <splash height="2048" platform="ios" src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536" />
        <splash height="1024" platform="ios" src="resources/ios/splash/Default-Portrait~ipad.png" width="768" />
        <splash height="960" platform="ios" src="resources/ios/splash/Default@2x~iphone.png" width="640" />
        <splash height="480" platform="ios" src="resources/ios/splash/Default~iphone.png" width="320" />
    </platform>

一切正常。

答案 1 :(得分:1)

对于其他发生此错误的用户,请确保您定义了cordova-plugin-splashscreen的所有密度。 The documentation's example仅提及4种密度:

<splash src="res/screen/android/splash-port-hdpi.png" density="port-hdpi"/>
<splash src="res/screen/android/splash-port-ldpi.png" density="port-ldpi"/>
<splash src="res/screen/android/splash-port-mdpi.png" density="port-mdpi"/>
<splash src="res/screen/android/splash-port-xhdpi.png" density="port-xhdpi"/>

但是您还需要最后两个:

<splash src="res/screen/android/splash-port-xxhdpi.png" density="port-xxhdpi"/>
<splash src="res/screen/android/splash-port-xxxhdpi.png" density="port-xxxhdpi"/>

即使设备的屏幕很低(例如mdpi),如果用户配置了缩放或放大,应用程序也会寻找更高的密度。此行为无法在仿真器上重现,但可能导致物理设备崩溃。