由于转换错误,Ionic无法在Android上运行

时间:2015-11-25 18:31:59

标签: android ionic

我的离子应用程序在浏览器中运行良好,并且在我通过USB连接时在我的Android手机上运行良好,我正在调试。

但是当我构建一个新的.apk文件并在我的手机上安装那个(通过电子邮件)时,没有任何反应。为了了解发生了什么,我安装并启用了VorlonJs。

感谢Vorlon,我可以看到发生了什么。在Vorlon的控制台日志中(读取我的Android手机的控制台日志),我可以看到此消息

t r a n s i t i o n  f a i l e d
t r a n s i t i o n  a b o r t e d
t r a n s i t i o n  p r e v e n t e d
t r a n s i t i o n  s u p e r s e d e d

如何解决此问题,也许有人知道如何禁用转换,至少我的应用程序正在运行?

修改

我使用此路由创建了一个空白项目:

.config(function ($stateProvider, $urlRouterProvider) {

    $stateProvider
    .state('login', {
        url: '/login',
        templateUrl: 'account/login.html',
        controller: 'AccountController',
    })
    .state('register', {
        url: '/register',
        templateUrl: '/account/register.html',
        controller: 'AccountController',
    });
    $urlRouterProvider.otherwise('/login');
})

这也给出了同样的问题。当我运行这个新的空白应用程序时,我无法从“登录”转到“注册”。在chrome和调试模式下(ionic run android --device -c -l)一切正常。

这里的完整性是我的所有代码:

app.js

var app = angular.module('starter', ['ionic','ionic.service.core']);

app
.run(function($ionicPlatform) {
  $ionicPlatform.ready(function() {
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
    // for form inputs)
    if(window.cordova && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
    }
    if(window.StatusBar) {
      StatusBar.styleDefault();
    }

    Ionic.io();

    var push = new Ionic.Push({});

    push.register(function(token) {
      // Log out your device token (Save this!)
      console.log("Got Token:",token.token);
    });
  });
})

.config(function ($stateProvider, $urlRouterProvider) {

    $stateProvider
    /*.state('account', {
        abstract: true,
        url: '/account',
        template: '<ion-nav-view></ion-nav-view>'
    })*/
    .state('login', {
        url: '/login',
        templateUrl: 'account/login.html',
        controller: 'AccountController',
    })
    .state('register', {
        url: '/register',
        templateUrl: '/account/register.html',
        controller: 'AccountController',
    });
    $urlRouterProvider.otherwise('/login');
})

的index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
    <title></title>

    <link href="lib/ionic/css/ionic.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">

    <!-- IF using Sass (run gulp sass first), then uncomment below and remove the CSS includes above
    <link href="css/ionic.app.css" rel="stylesheet">
    -->

    <!-- ionic/angularjs js -->
    <script src="lib/ionic/js/ionic.bundle.js"></script>
<script src="lib/ionic-platform-web-client/dist/ionic.io.bundle.min.js"></script>

    <!-- cordova script (this will be a 404 during development) -->
    <!-- Cordova is bootstrapped by ionic-platform-web-client, uncomment this if you remove ionic-platform-web-client... -->
<!-- <script src="cordova.js"></script> -->
<script src="http://recipeapi.demaffia.nl:1337/vorlon.js"></script>
    <!-- your app's js -->
    <script src="js/app.js"></script>
    <script src="js/UrlService.js"></script>
    <script src="account/AccountService.js"></script>
    <script src="account/AccountController.js"></script>
    <script src="js/storage/localstorage.js"></script>
  </head>
  <body ng-app="starter">

    <ion-pane>
      <ion-header-bar class="bar-stable">
        <h1 class="title">Ionic Blank Starter</h1>

      </ion-header-bar>
      <ion-content>

      </ion-content>
        <ion-nav-view></ion-nav-view>
    </ion-pane>

  </body>
</html>

帐户/ l​​ogin.html的

<ion-view title="Inloggen">
    <ion-content padding="true">
        <form name="form.login" data-ng-submit="vm.login()">

            <ion-list>
                <ion-item>
                    <span class="input-label">Emailadres</span>
                    <input type="text" class="full-width" placeholder="Emailadres" data-ng-model="login.Email" required="required">
                </ion-item>
                <ion-item>
                    <span class="input-label">Wachtwoord</span>
                    <input type="password" class="full-width" placeholder="Wachtwoord" data-ng-model="login.Password" required="required">
                </ion-item>
            </ion-list>
            <input type="submit" class="button button-block button-positive" value="Login" ng-disabled="!form.login.$valid" />
            <a ui-sref="register" class="button button-block button-balanced">Registreren</a>
        </form>
    </ion-content>
</ion-view>

帐户/ register.html

<ion-view title="Registreren">
    <ion-content padding="true">
        <form name="form.register" data-ng-submit="vm.register()">

            <ion-list>
                <ion-item>
                    <span class="input-label">Naam</span>
                    <input type="text" class="full-width" placeholder="Naam" data-ng-model="login.Name" required="required">
                </ion-item>
                <ion-item>
                    <span class="input-label">Emailadres</span>
                    <input type="text" class="full-width" placeholder="Emailadres" data-ng-model="login.Email" required="required">
                </ion-item>
                <ion-item>
                    <span class="input-label">Wachtwoord</span>
                    <input type="password" class="full-width" placeholder="Wachtwoord" data-ng-model="login.Password" required="required">
                </ion-item>
            </ion-list>
            <input type="submit" class="button button-block button-positive" value="Registreer" ng-disabled="!form.register.$valid" />
        </form>
    </ion-content>
</ion-view>

1 个答案:

答案 0 :(得分:1)

评论调试摘要:

  • javascript中出现了某种错误,导致应用无法启动。
  • 使用远程console.log(VorlonJS)进行调试并不成功。
  • 通过Chrome Remote DevTools建议的调试显示,由于在所有相对URI前面包含/,未找到应用文件。
    • 导出到APK的应用正在使用复杂的URI,其中包含使用前导斜杠时忽略的子目录,因此无法包含这些子目录。
  • 删除这些斜杠后,应用程序运行正常。