“科尔多瓦推出成功”,但手机上没有应用

时间:2015-05-03 00:04:12

标签: android cordova

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

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

一些背景知识:

必须在Android Manager中安装一些软件包,所有软件包都是最新的,才能在这样的旧设备中运行应用程序。

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

4 个答案:

答案 0 :(得分:4)

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

来自this answerthis answer

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

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

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

如果你只是删除“-d”选项,应用程序正常运行cordova运行android。

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

答案 1 :(得分:1)

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

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

在我的情况下,问题出现在对AndroidManifest.xml的编辑之后,否则不会导致问题(我将< activity android:name设置为com.hello.world.MainActivity形式的某些内容(如{{ 3}}))

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

如果你使用verbose选项(-d)运行cordova,例如

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

..然后在“LAUNCH SUCCESS”之前输出大约4行你会看到行

  

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

它尝试启动(启动)应用程序,你可能会发现它无法正常工作(-n选项和包详细信息之间缺少空格无关紧要。)

感兴趣的行是;

<YourAppDir>\platforms\android\cordova\lib\Adb.js第98行;

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

<YourAppDir>\platforms\android\cordova\lib\device.js第90行;

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

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

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

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