web-dev-qa-db-ja.com

デバイスでシェルコマンド「getprop、dev.bootcomplete」を実行できませんでした:Androidのエラー

Androidフレームワークを介してIonicエミュレーターに新しいデバッグapkファイルをビルドおよびデプロイした後、getprop,dev.bootcompleteエラーが発生します。

エミュレータはAndroidのホーム画面にポップアップ表示されますが、アプリはエミュレータにインストールされていないため、エミュレータの起動時に開きません。

私はこの問題に関する同様の投稿を見て、adbのさまざまな手順を試して、エミュレータ用の新しいデバイスを削除して作成しました他に何ができるかわからない。 CordovaからAndroidを削除してから再び追加すると問題が解決するとは思わない。エラーログは次のとおりです。

編集:

この問題に関してこれまでに見たすべての投稿は、問題を解決していません。 Android St​​udioまたはSDKツールをまだアンインストールおよび再インストールしていませんが、必要があるとは思いません。

この問題の原因は、アプリがionic cordovaで正しくビルドされていないため、NDKバージョンを最新のr17bではなくr16bに戻す必要があることです。現在は正常にビルドされていますが、エミュレーターにはまだこの問題があり、アプリをインストールできません。

エラーログ:

emulator: Requested console port 5584: Inferring adb port 5585.
HAX is working and emulator runs in fast virt mode.
(node:11468) UnhandledPromiseRejectionWarning: CordovaError: Failed to execute Shell command "getprop,dev.bootcomplete"" on device: Error: C:\Users\noaht\AppData\Local\Android\sdk\platform-tools\adb.exe: Command failed with exit code 1 Error output:
error: device still connecting
    at C:\Noah\Noah School\SSAapp\SMAPP\platforms\Android\cordova\lib\Adb.js:88:25
    at _rejected (C:\Noah\Noah School\SSAapp\SMAPP\platforms\Android\cordova\node_modules\q\q.js:864:24)
    at C:\Noah\Noah School\SSAapp\SMAPP\platforms\Android\cordova\node_modules\q\q.js:890:30
    at Promise.when (C:\Noah\Noah School\SSAapp\SMAPP\platforms\Android\cordova\node_modules\q\q.js:1142:31)
    at Promise.promise.promiseDispatch (C:\Noah\Noah School\SSAapp\SMAPP\platforms\Android\cordova\node_modules\q\q.js:808:41)
    at C:\Noah\Noah School\SSAapp\SMAPP\platforms\Android\cordova\node_modules\q\q.js:624:44
    at runSingle (C:\Noah\Noah School\SSAapp\SMAPP\platforms\Android\cordova\node_modules\q\q.js:137:13)
    at flush (C:\Noah\Noah School\SSAapp\SMAPP\platforms\Android\cordova\node_modules\q\q.js:125:13)
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickCallback (internal/process/next_tick.js:180:9)
(node:11468) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:11468) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
emulator: S
aving state on exit with session uptime 4695 ms
25
user9958535

これはCordova-Android bug です。Googleがアプリを実行しようとしたときにエラーメッセージを変更した可能性が高いためです。

既に修正されており、cordova-Android 7.1.1以降でリリースされています。これらのバージョンに更新できない場合は、次を実行してください。

this を自分でyourAppName/platforms/Android/cordova/lib/emulator.jsに変更すると適用できると思います

変化する

if ((error && error.message && (error.message.indexOf('not found') > -1)) || (error.message.indexOf('device offline') > -1))

if ((error && error.message && (error.message.indexOf('not found') > -1)) || (error.message.indexOf('device offline') > -1) || (error.message.indexOf('device still connecting') > -1))

44
jcesarmobile

別の回避策は、Android studioからエミュレーターを起動し、cordovaコマンドを実行してアプリを実行することです。この方法で、cordovaはエミュレータがすでに実行されていることを検出し、競合状態を回避します。ありがとう!

19
Pranit

これはIonic 3バージョンの私にとっての解決策でした:

  1. Android studioを開き、AVD Managerに移動します
  2. 新しいAVDデバイスを作成し、「詳細設定を表示」をクリックします
  3. 「コールドブート」を選択します。デフォルトでは、「クイックブート」が選択されています。

エミュレータを再度実行してみてください。

6

Windows 10マシンで次のコマンドを使用すると、同じエラーが発生しました。

cordova emulate Android --target=N5Oreo

Windows 10 Corodva 7.1.0 Oreo based emulator

この問題は、jcesarmobileによる回答で一時的に修正されました( デバイスでシェルコマンド "getprop、dev.bootcomplete"を実行できませんでした:Androidのエラー )。

コマンドを実行すると、エミュレータが起動しましたが、エラーが何度も何度も発生し続けました。マシンを再起動すると、数日間動作し、再び作動しました。

adbは強力なツールであることがわかりました。そのため、cordova emulate Android --target=N5Oreoに依存してビルドと起動を行う代わりに、cordova build Androidを使用し、adb install myApp.apkを使用して現在実行中のエミュレーターに結果のビルドをインストールしました。

0
AsitK