cordova运行android执行罚款。 但Android 4.1.2不启动应用程序

我开始开发和Android应用程序使用cordova5.0.0(cordova-v打印5.0.0),并在Android 4.1.2testing在摩托罗拉D1。 在Windows 7下,顺便说一句。

cordova build 

并手动将platform / android / build / output / apk / android-degug.apk复制到SD并安装正常。

 cordova emulate android 

在Android版本> 4.1.2的模拟器上运行良好

 cordova run android 

build立成功,说使用apk平台/安卓/生成/输出/ apk / android-debugger.apk,这似乎确定,安装应用程序,启动和发射成功。 不过正如你在这个截图中看到的那样

Razr截图

这个“壁纸/pipe理/设置”的事情发生了,就是这样。

如果我执行:

 cordova emulate android 

在Android 4.1.2 Jelly的模拟器上,输出相等

 BUILD SUCCESSFUL Total time: 6.352 secs Built the following apk(s): C:\android\Some\platforms\android\build\outputs\apk\android-debug.apk Installing app on emulator... Using apk: C:\android\Some\platforms\android\build\outputs\apk\android-debug.apk Launching application... LAUNCH SUCCESS 

相同的“壁纸/pipe理/设置”,这里是另一个截图模拟器截图

任何想法如何解决这个问题? 提前致谢…

PS:如果我之前安装了apk,Razr会启动旧版本,而不是WALLPAPER / MANAGE / SETTINGS。 所以我必须在尝试运行cordova run命令之前将其卸载。

Solutions Collecting From Web of "cordova运行android执行罚款。 但Android 4.1.2不启动应用程序"

我遇到了同样的问题( cordova“你好世界”的应用程序不会显示 ),并find了一个方法来通过它(但我不真正了解的根本原因)。

问题似乎在安装apk时发生。 在Cordova 5.0.0上,安装apk的adb命令可以在文件platforms \ android \ cordova \ lib \ device.js的第101行find(并且在平台\ android \ cordova \ lib \ emulator.js的第311行)模拟android):

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

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

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

编辑

-d应该是直接在adb之后(如在 – 设备),而不是在安装之后。 所以你可以把它移到那里而不是移除它。

另外, 这里是在apache cordova问题跟踪器上打开的问题

如果您不知道以下几点,请检查并注意:

  • 您的CLI版本cordova -v不一定匹配平台版本的cordova platform
  • 不同平台之间的平台版本(如果有的话)可能不匹配。 例如,Android可能具有与iOS不同的平台版本。

如果你已经更新到最新版本的cordova-android sdk,请确保你阅读releasenotes.md:https://github.com/apache/cordova-android/blob/master/RELEASENOTES.md

我不确定SD是什么,但是我已经安装了我的应用程序

 adb install <path_to_apk> 

在比较和检查您上传的apk到您的设备(我相信比仿真器更容易debugging)后,使用logcat启动Android Debug Bridge :

 adb -d logcat 

如果你喜欢通过模拟器debugginglogcat,那么:

 adb -e logcat 

有额外的debugging标志,以减less冗长在这里: http : //developer.android.com/tools/debugging/debugging-log.html 。 你需要调整filter的规格,但是你喜欢,比如: adb logcat ActivityManager:I MyApp:D *:S 。 我更喜欢使用adb logcat *:D来捕获几乎所有的debugging信息,但略微减less冗余。

希望在连接和启动logcat后,您将能够捕捉到可能导致您的问题的错误。

编辑:这是另一种方法来通过铬浏览器开发人员工具进行设备debugging: https : //developer.chrome.com/devtools/docs/remote-debugging

一般来说,这里是从上述链接的步骤:

要求:Chrome 32或更高版本,USB电缆连接到Android设备,浏览器debugging需要Android 4.0+,应用程序debugging需要Android 4.4+

  1. 在设备上启用USBdebugging: 设置>开发人员选项 。 如果您有Android 4.2及更高版本的设备,则开发人员选项默认为隐藏。 点击设置>关于手机,然后点击Build number seven times。
  2. 在“开发人员选项”中,selectUSBdebuggingcheckbox。
  3. 单击确定以确认您正在打开USBdebugging。
  4. 使用USB电缆将设备连接到电脑。
  5. 打开Chrome浏览器,在search/地址栏inputchrome:// inspect
  6. 点击查找USB设备checkbox。
  7. 在您的设备上,出现提示提示。 点击OK
  8. chrome:// inspect页面现在应该显示您连接的设备。 点击设备的“检查”链接。 Chrome开发者工具应该会出现。

在上面的远程debugging链接中有关于实况屏幕录制,代理设置,端口转发和虚拟主机映射的更多信息。

对于那些使用cordova6.1.1和类似的问题,不打开/安装应用程序,什么对我来说是运行ionic emulate android一次打开与主屏幕的android模拟器。 然后,在另一个terminal窗口再次运行ionic emulate android安装在已经打开的模拟器上的应用程序的ionic emulate android ,一切正常。

在这里find类似的问题: https : //forum.ionicframework.com/t/ionic-serve-works-correctly-ionic-emulate-android-just-displays-android-emulator-home-screen/53524/6

解决scheme是:在平台\ android \ cordova \ lib下编辑emulator.js

转到第311行,并注释掉该行

 // return exec('adb -s ' + resolvedTarget.target + ' install -r -d "' + apk_path + '"', os.tmpdir()) 

并贴上新的一行

 return exec('adb -s ' + resolvedTarget.target + ' install -r "' + apk_path + '"', os.tmpdir()) 

有用。

对我来说,这个技巧通过删除-d完美地工作

但我不得不安装apk manullay第一次通过转移到手机,然后我能够运行应用程序直接使用离子运行android

希望这可以帮助别人

更改device.js和emulator.js中的代码对我来说不起作用(事实上,在cordova build android不能工作的情况下引入了一个错误)。 我的问题是完全不同的:我的AndroidManifest.xml中有两个<application> ,显然是不允许的。

在我的AndroidManifest.xml中添加了<application android:debuggable="true" /> 。 但是,该文件已经有一个“应用程序”元素,看起来像这样:

<application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">

所以我添加了“debuggable”行到现有的<application> (并删除了第二个<application> ),如下所示:

<application android:debuggable="true" android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">

之后,我重build使用cordova build android ,成功地cordova run android在我的设备与cordova run android ,然后拍我的手,吓我的狗。

但是,即使这不是你的问题,这里是我发现的问题:我遵循jojo的答案中的说明,并运行adb logcat与我的设备连接。 terminal选项卡立即填补了无休止的废话。

然后,我打开了一个新的terminal窗口,我可以同时查看,我注意到logcat输出中的最新时间戳,并且我运行了cordova run android 。 屏幕上填满了更多的废话,然后一旦事情平静下来,我滚动回到我的开始时间,并逐行审查。 最终我发现了我的罪魁祸首:

PackageParser: <manifest> has more than one <application>

希望这可以帮助!