web-dev-qa-db-ja.com

cordova run Android=は正常に実行されます。ただし、Android 4.1.2はアプリを起動しません

Cordova 5.0.0を使用してAndroidアプリを開発し始め(cordova -vは5.0.0を出力)、Android 4.1.2を使用してMoto Razr D1でテストします。 Windows 7では、ところで。

cordova build 

また、platforms/Android/build/output/apk/Android-degug.apkを手動でSDにコピーし、インストールを正常に実行します。

cordova emulate Android 

Androidバージョン> 4.1.2のエミュレーターで正常に動作します

cordova run Android 

正常にビルドすると、apkプラットフォーム/Android/build/output/apk/Android-debugger.apkを使用して、アプリのインストール、起動、起動の成功がわかります。ただし、このスクリーンショットでわかるように

Razrスクリーンショット

この「壁紙/管理/設定」が起こり、それだけです。

私が実行した場合:

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

同じ「WALLPAPAER/MANAGE/SETTINGS」、別のスクリーンショットがあります Emulator Screenshot

この問題を解決する方法はありますか?前もって感謝します...

PS:以前にapkをインストールした場合、RazrはWALLPAPER/MANAGE/SETTINGSの代わりに古いバージョンを起動します。したがって、コルドバの実行コマンドを実行する前に、アンインストールする必要があります。

28
gerumato

私は同じ問題に遭遇しました( Cordova "hello world"アプリは表示されません )、それを通り抜ける方法を見つけました(しかし、根本的な原因を本当に理解していません)。

Apkのインストール時に問題が発生したようです。 Cordova 5.0.0では、apkをインストールするためのadbコマンドは、ファイルplatform\Android\cordova\lib\device.jsの行101(およびcordovaのplatform\Android\cordova\lib\emulator.jsの行311にあります) Androidをエミュレート):

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

現在のコマンドが返されます: "エラー:不明なオプション-d"!

単に「-d」オプションを削除すると、アプリケーションはcordovaで正常に実行され、Androidが実行されます。

編集

-dは、adbの直後に来ることになっています(--device)インストール後ではなく。したがって、削除する代わりに、そこに移動するだけです。

さらに、 Apache Cordova課題トラッカーで未解決の課題があります

44
proprit

知らなかった場合に備えて、チェックして注意することがいくつかあります。

  • 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をデバイスと比較して確認した後(エミュレータよりもデバッグが簡単だと思います)、 Android Debug Bridge with logcat を起動します:

adb -d logcat

エミュレータを介してlogcatを使用してデバッグする場合、次のようにします。

adb -e logcat

ここに冗長性を減らすための追加のデバッグフラグがあります: http://developer.Android.com/tools/debugging/debugging-log.htmladb logcat ActivityManager:I MyApp:D *:Sなど、好きなようにフィルター仕様を調整する必要があります。 adb logcat *:Dを使用して、ほぼすべてのデバッグメッセージをキャプチャすることを好みますが、冗長性をわずかに減らします。

うまくいけば、logcatの接続と起動時に、問題を引き起こすためにどのエラーが起こっているのかをキャッチできるようになります。

EDIT:以下に、chromeブラウザ開発者ツールを介してデバイスのデバッグを行う別の方法を示します。 https:// developer.chrome.com/devtools/docs/remote-debugging

一般に、ここに上記のリンクからの手順があります。

要件:Chrome 32以降、接続するUSB​​ケーブルAndroidデバイス、ブラウザのデバッグにはAndroid 4.0+、アプリデバッグには、Android 4.4+

  1. デバイスでUSBデバッグを有効にします:[設定]> [開発者オプション]。 Android 4.2+デバイスがある場合、デベロッパーオプションはデフォルトで非表示になります。クリックして設定>電話についてビルド番号を7回タップします。
  2. 「開発者向けオプション」で、USBデバッグチェックボックスを選択します。
  3. [〜#〜] ok [〜#〜]をクリックして、USBデバッグを有効にしていることを確認します。
  4. USBケーブルを使用してデバイスをコンピューターに接続します。
  5. Chromeブラウザと検索/アドレスバータイプchrome:// inspect)を開きます。
  6. USBデバイスの検出のチェックボックスをクリックします。
  7. デバイスに、アラートプロンプトが表示されます。 [〜#〜] ok [〜#〜]をクリックします。
  8. chrome:// inspectページに接続されたデバイスが表示されます。デバイスの「検査」リンクをクリックします。 Chrome開発者ツールが表示されます。

上記のリモートデバッグリンクには、ライブスクリーンキャスト、プロキシセットアップ、ポート転送、仮想ホストマッピングに関する詳細情報があります。

11
jojo

Cordova 6.1.1を使用していて、アプリを開かない/インストールしないという同様の問題を抱えている人にとっては、ionic emulate Androidを1回開いてAndroidエミュレータをホーム画面で開きます。その後、別のターミナルウィンドウで再度実行しますionic emulate Android既に開いているエミュレータにアプリケーションをインストールし、すべてが正常に機能しました。

ここで同様の問題が見つかりました: https://forum.ionicframework.com/t/ionic-serve-works-correctly-ionic-emulate-Android-just-displays-Android-emulator-home-screen/53524/ 6

3
Lukáš Černý

解決策は次のとおりです。emulator.js under platforms\Android\cordova\lib

行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())

できます。

0
Aysad K.

Device.jsとemulator.jsのコードを変更しても機能しませんでした(実際、cordova build Androidが機能しなくなるエラーが発生しました)。私の問題は完全に異なっていました:明らかに許可されていないAndroidManifest.xmlに2つの<application>がありました。

線のどこかで、AndroidManifest.xmlに<application Android:debuggable="true" />を追加しました。ただし、そのファイルalreadyには、次のような「application」要素がありました。

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

そこで、既存の<application>に「デバッグ可能」行を追加しました(2番目の<application>を削除しました)。

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

その後、cordova build Androidを使用して再構築し、cordova run Androidを使用してデバイス上で正常に実行し、手をたたいて犬を怖がらせました。

しかし、これがあなたの問題ではない場合でも、問題を発見した方法は次のとおりです。jojoの回答の指示に従い、デバイスを接続した状態でadb logcatを実行しました。その端子タブは、途方もないがらくたですぐにいっぱいになりました。

次に、同時に表示できる新しいターミナルウィンドウを開き、logcat出力の最新のタイムスタンプに注意して、cordova run Androidを実行しました。画面はがらくたでいっぱいになり、物事が落ち着いたら、開始時間までスクロールして、1行ずつ確認しました。最終的に私は犯人を見つけました:

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

お役に立てれば!

0
Sarah

私にとって、このトリックは-dを削除することで完全に機能しました

しかし、私は電話に転送して初めてapk manullayをインストールする必要があり、その後Androidを実行してionicを使用してアプリを直接実行できました

これが誰かを助けることを願って

0
Mr Megamind

シンプルを使用してみてください-

cordova run anroid

接続されたデバイスがない場合は、「ターゲットが指定されておらず、デバイスが見つかりません、エミュレータにデプロイしています」と表示され、エミュレータが起動します。

0
Bajrang Hudda