前回は、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にブレークポイントを設定します。
2、Debug - app-native でアプリを起動します。
3、「START」ボタンをクリックし、C++のブレークポイントで止められ、値を見ることが出来ます。
Javaのデバッガ
1、Java側のデバッガするには、メニューの"Attach debugger to Android process"アイコンをクリックします。
3、「START」ボタンをクリックして、Javaのブレークポイントで止められます。
エラーが発生した場合の解決方法
1、「Attach debugger to Android process」で時々次のようなエラーが発生してしまいます。
2、この時は、Tools - Android - Enable ADB Integrationを一旦外し、再度チェツクすれば解決できます。
MovaTestingは、クラウド上でアプリ・Webサイトやゲーム、デザインのテストが行える実機検証・自動テストサービスです。テストコードの自動生成、人工知能による自動テスト、動画の自動保存、開発ツールとの連携などの特徴があります。
スマホアプリ・サイトを開発中の方は、ぜひ一度試してみてください。
次回は、native build settingsを指定して、C/C++のNDK Debug方法を紹介します。