Cordova Ionic - 应用程序意外停止

9

安卓应用程序意外停止。

控制器文件链接如下:https://www.dropbox.com/s/d0lc34q3mzlgfkj/controllers.js?dl=0

问题出现在我更新我的OSX到El Capitan之后。在更新之前,该应用程序可以在模拟器中完美启动。现在,即使我构建APK并尝试将其安装在手机上,也无法安装。

下面是我的日志文件的图像:

enter image description here

我做错了什么?


你的日志并不是满的 - 它只是显示你的应用程序正在主线程上运行。为了获得最佳结果(如果您的应用程序无法安装在手机上)- 提供 'adb bugreport > bugreport.txt' 的输出。或者,如果应用程序意外停止 - 在 logcat 中查找 FATAL 一词。 - Oleksandr
@Oleksandr,logcat中没有致命错误。这是故障报告的链接 https://www.dropbox.com/s/jkw9khou9ldnz2v/bugreport.txt?dl=0 - Karthik Priyadarshan
你使用的Ionic、AngularJS和Cordova版本是什么?我们能看到一些你的HTML结构吗? - thepio
1个回答

3

好的,我发现有很多因素可能导致您遇到这个问题。

首先,请考虑使用$stateProvider来声明您的状态并为每个状态设置控制器,以便它们不会同时加载和运行应用程序(不确定您是否只是将所有代码放在一个文件中向我们展示您拥有什么)。但您可以在Angular配置中设置:

使用$stateProvider的示例:

$stateProvider
  .state('app.page1', {
    url: '/page1',
    templateUrl: 'templates/page1.html',
    controller: 'Page1Ctrl'
    }
});

其次,你的代码中有很多错误和语法错误。我不确定你使用的是哪个IDE(编辑器),但请考虑添加一个jshint插件(如果可能的话,也可以通过在线jshint @ http://jshint.com/ 进行操作),或者类似的东西到你的IDE中。它会指出你代码中的错误。你代码中的一些错误包括:
  • 在作用域变量和函数中缺少许多分号(这会导致JavaScript不知道下一步要走哪里等问题)
  • 使用糟糕的javascript运算符,如resp.data.errors.email != undefined,应该改为resp.data.errors.email !== undefined

这也是非常糟糕的:

moment($scope.iosDate.value.toISOString()).hour(7).minute(0).toISOString(),
         moment($scope.iosDate.value.toISOString()).hour(8).minute(0).toISOString(), 
         moment($scope.iosDate.value.toISOString()).hour(9).minute(0).toISOString(),
          moment($scope.iosDate.value.toISOString()).hour(10).minute(0).toISOString(),
           moment($scope.iosDate.value.toISOString()).hour(11).minute(0).toISOString(),
            moment($scope.iosDate.value.toISOString()).hour(12).minute(0).toISOString(),
             moment($scope.iosDate.value.toISOString()).hour(13).minute(0).toISOString(),
              moment($scope.iosDate.value.toISOString()).hour(14).minute(0).toISOString(),
               moment($scope.iosDate.value.toISOString()).hour(15).minute(0).toISOString(), 
               moment($scope.iosDate.value.toISOString()).hour(16).minute(0).toISOString(),
                moment($scope.iosDate.value.toISOString()).hour(17).minute(0).toISOString(),
                 moment($scope.iosDate.value.toISOString()).hour(18).minute(0).toISOString(),
                  moment($scope.iosDate.value.toISOString()).hour(19).minute(0).toISOString(),
                   moment($scope.iosDate.value.toISOString()).hour(20).minute(0).toISOString(),
                    moment($scope.iosDate.value.toISOString()).hour(21).minute(0).toISOString(),
                     moment($scope.iosDate.value.toISOString()).hour(22).minute(0).toISOString()

我想你可以用其他方法来实现这个功能。
同时,请检查您的资源文件大小。例如,如果您使用背景图像、图标或类似的东西,请确保它们不是过度庞大的。
这是我在查看您的代码时首先想到的。请先尝试这些方法(至少纠正代码中的错误),并告诉我是否对解决问题有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接