无法在某些设备上运行 Ionic 3 android 应用程序

Posted

技术标签:

【中文标题】无法在某些设备上运行 Ionic 3 android 应用程序【英文标题】:Cannot run Ionic 3 android app on some devices 【发布时间】:2018-12-26 00:24:15 【问题描述】:

我开发了一个可以在大多数 android 设备上正常运行的应用。但不幸的是,我收到了几个最终用户的反馈,说应用程序在启动画面之后就卡住了,实际上只是出现了一个白屏。它们都具有至少 5.1 的 Android 版本。

我可以使用一台无法运行我的应用程序的设备从 adb logcat 获取日志:

MacBook-Pro:app p$ adb logcat chromium:D SystemWebViewClient:D *:S --------- 系统开始 --------- main I/chromium(11486) 的开头:[INFO:library_loader_hooks.cc(104)] Chromium 日志记录已启用:level = 0,默认详细程度 = 0 I/chromium(11486): [INFO:cpu.cc(186)] [LazyCpuInfoValue] cpufreq=[1300000] 含铬(11486): [警告:resource_bundle.cc(304)] locale_file_path.empty() I/chromium(11486): [INFO:aw_browser_main_parts.cc(65)] 从 apk 加载 成功,fd=34 off=1319084 len=3050 I/chromium(11486): [INFO:aw_browser_main_parts.cc(78)] 从加载 webviewchromium.pak, fd:35 关闭:229484 len:1089551 I/铬(11486): [信息:sys_info_android.cc(261)] [GetBoardModel] === [mt6735] I/chromium(11486): [INFO:build_info.cc(90)] [ParseDeviceModel] 型号=[mt6735] 含铬(11486): [警告:data_reduction_proxy_settings.cc(331)] SPDY 代理在 启动 W/铬(11486):[警告:password_handler.cc(27)] 创建-->内容 = 0xb7a0c510,委托 = 0xb7a3d950 W /铬(11486):[警告:password_handler.cc(35)]附加到 web_contents I/chromium(11486): [INFO:sys_info_android.cc(230)] [SysInfo::GetCurrentProcessName] [com.alupex] I/chromium(11486): [INFO:mime_util.cc(703)] 插入媒体类型:video/3gpp I/chromium(11486): [INFO:mime_util.cc(703)] 插入媒体类型: audio/3gpp I/chromium(11486): [INFO:mime_util.cc(703)] 插入媒体 类型:video/3gpp2 I/chromium(11486): [INFO:mime_util.cc(703)] 插入 媒体类型:视频/avi I/chromium(11486):[INFO:mime_util.cc(703)] 插入媒体类型:video/mpeg I/chromium(11486): [INFO:mime_util.cc(703)] 插入媒体类型:音频/mpeg I/chromium(11486): [INFO:mime_util.cc(703)] 插入媒体类型: video/x-m4v I/chromium(11486): [INFO:mime_util.cc(703)] 插入媒体 类型:音频/aac I/chromium(11486): [INFO:mime_util.cc(703)] 插入 媒体类型:audio/aac-adts I/chromium(11486): [INFO:mime_util.cc(703)] 插入媒体类型:音频/x-mpeg I/chromium(11486): [INFO:mime_util.cc(703)] 插入媒体类型:audio/flac I/chromium(11486): [INFO:mime_util.cc(703)] 插入媒体类型: audio/amr I/chromium(11486): [INFO:mime_util.cc(703)] 插入媒体 类型:音频/amr-wb I/chromium(11486): [INFO:mime_util.cc(703)] 插入 媒体类型:音频/快速 I/铬(11486): [INFO:mime_util.cc(703)] 插入媒体类型:audio/vorbis I/chromium(11486): [INFO:mime_util.cc(703)] 插入媒体类型: 视频/quicktime I/chromium(11486): [INFO:mime_util.cc(703)] 插入 媒体类型:音频/快速 I/铬(11486): [INFO:raster_worker_pool.cc(220)] [RasterWorkerCoordinator] 启用=[0] I/chromium(11486): [INFO:CONSOLE(175)] "打开数据库: _ionicstorage", 资源: 文件:///android_asset/www/plugins/cordova-sqlite-storage/www/SQLitePlugin.js (175) I/chromium(11486): [INFO:CONSOLE(106)] "新事务是 排队,等待打开操作完成”,来源: 文件:///android_asset/www/plugins/cordova-sqlite-storage/www/SQLitePlugin.js (106)I/铬(11486):[信息:控制台(1)]“错误”,来源: file:///android_asset/www/build/vendor.js (1) I/chromium(11486): [INFO:CONSOLE(179)]“打开数据库:_ionicstorage - OK”,来源: 文件:///android_asset/www/plugins/cordova-sqlite-storage/www/SQLitePlugin.js (179)I/铬(11486):[信息:控制台(80)]“数据库打开: _ionicstorage”,来源:file:///android_asset/www/plugins/cordova-sqlite-storage/www/SQLitePlugin.js (80)W/铬(11486):[警告:aw_network_delegate.cc(92)] 文件:///android_asset/www/assets/fonts/roboto-regular.woff2#-6#1 I/chromium(11486): [INFO:CONSOLE(1)] "Ionic Native: deviceready 事件 1915 毫秒后触发”,来源: file:///android_asset/www/build/vendor.js (1) W/chromium(11486): [警告:aw_network_delegate.cc(92)] 文件:///android_asset/www/assets/fonts/roboto-regular.woff#-6#1 W/铬(11486):[警告:aw_network_delegate.cc(92)] 文件:///android_asset/www/assets/fonts/roboto-regular.ttf#-6#1 W/铬(11486):[警告:password_handler.cc(206)] OnPasswordFormsRendered 称为 W/chromium(11486): [警告:aw_password_handler_delegate_impl.cc(202)] IsSavePasswordEnabled ret 是 W/chromium(11486): [警告:password_handler.cc(208)] OnPasswordFormsRendered IsEnabledSavePassword 为假

我把那部手机的特点放在下面:

您知道问题出在哪里以及如何解决吗?

谢谢!

【问题讨论】:

【参考方案1】:

实际上,经过几个小时的挖掘,为同一个APP创建一个新项目,我发现(至少)2个问题:

第一个是一行代码this.headers = new Headers('Content-Type': 'application/json'),我需要改成this.headers = new HttpHeaders().set('Content-Type', 'application/json');

当我只是在新项目中保留一些页面时,更改该行使我的应用程序正常工作,但并没有解决我原始项目中的问题。所以最后,我最终将原始项目中的整个 src 文件夹复制到新项目中,最后我的应用程序可以在这个设备上运行。

【讨论】:

以上是关于无法在某些设备上运行 Ionic 3 android 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Ionic Cordova 应用程序无法在 android 9 设备上运行

Ionic 3:css的一部分在Android平台上不起作用

Ionic 3 cordova运行错误

Android 应用无法在某些设备上运行

如何在 IONIC 3 物理设备上运行我的应用程序

无法使用照片库在 iOS 设备中保存图像 - ionic 3