1.建立activity
package com.example.mycocos2dbyjni;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener {
private Button btnTestCCAnim;
private TextView tView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnTestCCAnim = (Button) findViewById(R.id.button1);
btnTestCCAnim.setOnClickListener(this);
tView = (TextView) findViewById(R.id.textView1);
tView.setText(stringFromJNI());// 調用native 方法獲得string
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public void onClick(View v) {
if(v == btnTestCCAnim){
// run cocos2d-x animation
}
}
public native String stringFromJNI();// 聲明c中的方法
//load cc-jni庫, cc-jni庫由ndk編譯來,後面會講到
static{
System.loadLibrary("cc-jni");
}
}
2. 由javah,產生c的標頭檔(可參見:http://tech.ddvip.com/2012-10/1351226397184207.html)
cd到項目的根目錄
運行命令:
javah -classpath bin/classes -d jni com.example.mycocos2dbyjni.MainActivity
可產生.h檔案(.h上面2個檔案不用理會,後面會產生)
3. 由.h檔案產生c/c++檔案
eclipse裡面建立c++檔案失敗了,我是將ndk範例程式碼helloJni的c檔案copy過來改名成
並將com_example_mycocos2dbyjni_MainActivity.c中的方法改為.h中聲明的方法。
4. 建立android.mk檔案
同第三步也是copy過來做修改的。
Android.mk的檔案內容:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := cc-jni
LOCAL_SRC_FILES := com_example_mycocos2dbyjni_MainActivity.c
include $(BUILD_SHARED_LIBRARY)
5.cd到 jni目錄,然後運行ndk-build, 會在libs下產生libcc-jni.so 庫檔案,此時運行android項目又失敗了,後來我從範例程式碼中把libc.so拷貝過來就成功了!!