LoginSignup
5
6

More than 5 years have passed since last update.

MovaTesting開発の心得(2) ー Android StudioでNDK Debug - ②

Last updated at Posted at 2015-09-18

前回は、Android Studioを使ったNDK Debugの入門編を紹介しましたが、今回は、少し実用的なNDK Debugを紹介します。

準備

1、 HelloJni Activityにボタン1個を追加し、クリックされた場合は、JniメソッドstringFromJNIを呼び出し、結果を表示するようにソースコードを変更します。

public class HelloJni extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        // Create a TextView
        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);

        LinearLayout row = new LinearLayout(this);
        row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

        final TextView tv = new TextView( this );
        tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        tv.setText( "hello");
        row.addView(tv);
        layout.addView(row);

        // Create a Button
        row = new LinearLayout(this);
        row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
        Button btn = new Button(this);
        btn.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        btn.setText("START");
        row.addView(btn);

        layout.addView(row);
        setContentView(layout);

        // when clicked, set the text retrieved by calling a native function to TextView
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                tv.setText(stringFromJNI());
            }
        });
    }

2、 ProjectをBuildします。

NDK Debug

1、 hello-jni.cにブレークポイントを設定します。
1.png

2、Debug - app-native でアプリを起動します。
スクリーンショット 2015-09-18 11.06.14.png

3、「START」ボタンをクリックし、C++のブレークポイントで止められ、値を見ることが出来ます。
スクリーンショット 2015-09-18 11.10.51.png

Javaのデバッガ

1、Java側のデバッガするには、メニューの"Attach debugger to Android process"アイコンをクリックします。
スクリーンショット 2015-09-18 11.14.21.png

2、接続したいアプリのpackageを選択してOKします。
スクリーンショット 2015-09-18 11.19.52.png

3、「START」ボタンをクリックして、Javaのブレークポイントで止められます。
スクリーンショット 2015-09-18 11.41.50.png

エラーが発生した場合の解決方法

1、「Attach debugger to Android process」で時々次のようなエラーが発生してしまいます。
スクリーンショット 2015-09-18 11.27.39.png

2、この時は、Tools - Android - Enable ADB Integrationを一旦外し、再度チェツクすれば解決できます。
スクリーンショット 2015-09-18 11.44.37.png

MovaTestingは、クラウド上でアプリ・Webサイトやゲーム、デザインのテストが行える実機検証・自動テストサービスです。テストコードの自動生成、人工知能による自動テスト、動画の自動保存、開発ツールとの連携などの特徴があります。
スマホアプリ・サイトを開発中の方は、ぜひ一度試してみてください。

次回は、native build settingsを指定して、C/C++のNDK Debug方法を紹介します。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6