2

Kitkat はクロム ベースの webview を使用し、ディレクトリ "external/chromium_org" にはクロムのコードが含まれています。

ディレクトリに android webview の統合テストがあります。

"external/chromium_org/android_webview/javatests".

私はここでウィキを読みました(https://code.google.com/p/chromium/wiki/AndroidTestInstructions)、クロムソースディレクトリでスムーズに進みました(AOSPではなく、クロムをスタンドアロンでダウンロードしてください)。

しかし、AOSP/external/chromium_org では、テスト パッケージをビルドできません。最初のアサート エラーには NDK がありません。スタンドアロン クロムの NDK へのリンクを作成しました。それでも、エラーでビルドできません:

"ninja: Entering directory `out/Debug'
 ninja: error: loading 'build.ninja': No such file or directory
"

私の質問は以下のとおりです。

Q1: AOSP でテスト パッケージをビルドし、KitKat WebView のテストを実行する方法を教えてください。

Q2: または、これらのテストは Chromium ソース ディレクトリでのみビルドおよび実行できますか? もしそうなら、テストされたウェブビューがキットカットで使用されているものと同じであることをどのように保証できますか? AndroidWebViewTest.apk のターゲットは AndroidWebView.apk であるため、「AOSP/external/chromium_org」のコードからビルドされた KitKat システム イメージの webview ではありません。

Q3: KitKat Chromium WebView が特定のデバイスで適切に動作することを確認したい場合、どのテスト ケースが必要ですか? 現在、CTS に android.webkit と統合テスト AndroidWebViewTest.apk を含めたいのですが、これで十分でしょうか? より多くのテスト ケースを利用する必要がありますか?

4

1 に答える 1

2

AOSP/external/chromium_org から取得したコードは、Chromium ソースのストリップ バージョンであり、テストのビルドと実行には使用できません (Android CTS テスト以外)。必要なのは、 Chromium コードをチェックアウトしてビルドすることです。

私が使用する特定のビルドおよび呼び出しコマンドは次のとおりです。

# Set up your environment
. build/android/envsetup.sh

# Generate the ninja files
GYP_GENERATORS="ninja" build/gyp_chromium

# Use -C out/Release for release build
ninja -C out/Debug android_webview_apk android_webview_test_apk

# Install the webview test shell
adb install out/Debug/apks/AndroidWebView.apk

# Connect a device and run tests
build/android/test_runner.py instrumentation --test-apk AndroidWebViewTest --test_data webview:android_webview/test/data/device_files

gyp表示されているエラーは、おそらく、ninja ファイルを生成するために実行しなかったか、-Cオプションを使用して適切なフォルダーを ninja に渡さなかったことが原因です。

あなたの質問に答えるには:

Q1: 上記のとおり - AOSP チェックアウトから Chromium インストルメンテーション テストを実行することはできません。

Q2: テストの実行方法については、上記を参照してください。アップストリームの Chromium コードは、明らかに AOSP/external/chromium_org コードよりも新しいものです。WebView に貢献する方法は、上流の Chromium コードにパッチを送信し、それが将来の Android リリースに含まれるのを待つことです。AOSP/external/chromium_org のコードに対するパッチは受け入れられません。

残念ながら、AOSP/external/chromium_org コードを Tip-Of-Tree Chromium コードに置き換えた場合、必要な CL の多くがフレームワーク/webview に到達していないため、コンパイルされません。WebView チームはこれを認識しており、今のところ最善の策は、上流の Chromium ツリーですべての作業を行うことです。

Q3: 良いスタートですね。Chromium プロジェクトの Android ボットは、説明したものよりも多くのテストを実行します。Android テストおよびWebKit レイアウト テストボットで実行されるものを参照してください。残念ながら、特定のハードウェアでコードが動作することを保証するテスト スイートを用意することは不可能だと思います。

于 2013-12-09T15:53:30.360 に答える