【问题标题】:"cordova launch success" but no app running on cellphone“cordova 启动成功”,但手机上没有运行应用程序
【发布时间】:2015-05-03 00:04:11
【问题描述】:

美好的一天!我一直在阅读 Cordova 的教程 (https://ccoenraets.github.io/cordova-tutorial/),但是当我到达必须通过手机中的 USB 运行应用程序的部分时,出现了问题。

控制台说启动成功并且没有任何错误,但在我的手机中发生的唯一事情是它“按下”菜单按钮,就好像它将应用程序识别为“按下菜单按钮”一样,我的手机是三星 Galaxy 5 (I5500)。

一些背景:

必须在 Android 管理器中安装一些包,所有这些包都是最新的,才能在这么旧的设备上运行应用程序。

我没有对文件进行任何更改

【问题讨论】:

    标签: android cordova


    【解决方案1】:

    我遇到了完全相同的问题并解决如下:

    来自this answerthis answer

    安装 apk 时似乎出现问题。在 Cordova 5.0.0 上,可以在文件 platforms/android/cordova/lib/device.js 的第 101 行找到用于安装 apk 的 adb 命令(对于cordova,可以在platforms/android/cordova/lib/emulator.js 的第 311 行找到模拟安卓):

    adb -s ' + resolvedTarget.target + ' install -r -d "' + apk_path + '"
    

    当前命令返回给我:“错误:未知选项 -d”!

    如果简单地删除“-d”选项,应用程序在cordova run android下正常运行。

    注意:您必须在某些系统上使用反斜杠(例如,platforms\android\cordova\lib\device.js)。

    【讨论】:

    • 这有帮助。非常感谢
    • 我在 lib 目录中没有 device.js 文件。那是问题吗?我无法运行应用程序
    【解决方案2】:

    Cordova 6.5.0(同样的问题;LAUNCH SUCCESS 消息/应用未启动)

    (前面的答案中提到的 install -d 选项允许安装版本降级(http://adbshell.com/commands/adb-install) - 它不应该影响启动应用程序。无论如何它似乎不在 6.5.0 cli 代码中.)

    在我的情况下,问题出现在对 AndroidManifest.xml 的编辑之后,否则不会导致问题(我将 sample AndroidManifest.xml 所示) ))

    您的情况可能会有所不同。诊断;

    如果您使用它的详细选项 (-d) 运行 cordova,例如。

    cordova -d run --target=<deviceId> android
    

    ..然后在“LAUNCH SUCCESS”之前的大约 4 行的输出中,您将看到该行

    运行 adb shell 命令“am start....”

    它尝试启动(启动)应用程序的位置,您可能会看到它为什么不工作(-n 选项和包详细信息之间没有空格无关紧要)。

    感兴趣的线是 ;

    &lt;YourAppDir&gt;\platforms\android\cordova\lib\Adb.js 第 98 行;

    return Adb.shell(target, 'am start -W -a android.intent.action.MAIN -n' + activityName)
    

    &lt;YourAppDir&gt;\platforms\android\cordova\lib\device.js 第 90 行;

     var launchName = pkgName + '/.' + manifest.getActivity().getName();
    

    我将相关的 AndroidManifest.xml 条目改回了 android:name=MainActivity,一切都恢复正常了。

    【讨论】:

    • 运行中的 -d 标志将我引向了我自己的问题:“没有找到挂钩“after_run”的脚本。谢谢!
    【解决方案3】:

    对我来说,这是一个名为“通过 USB 验证应用程序”的开发人员选项,我必须关闭它才能让应用程序运行。

    【讨论】:

      【解决方案4】:

      我在 OnePlus One 设备上遇到了完全相同的问题。

      就我而言: Michal Skop 更改文件platforms/android/cordova/lib/device.js 和platforms/android/cordova/lib/emulator.js 的解决方案“不起作用”,因为文件中不包含“-d”。

      正如 EJ Thayer 所说,我尝试禁用“通过 USB 验证应用程序”,但这也不起作用。

      解决方案是: 此手机可以有多个用户(从未见过具有此功能的手机),而我实际上为另一个用户(不是我登录时使用的那个)部署了它。

      注意: 不知道如何指定要为哪个用户安装应用程序。

      【讨论】:

        猜你喜欢
        • 2013-09-09
        • 2019-03-02
        • 1970-01-01
        • 1970-01-01
        • 2015-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多