[Android-JNI篇]Fatal signal 11,找不到JNI函式

文章撰寫日期︰2013/07/17 11:42
cocos2dx使用版本︰v 2.0.4
cocosBuilder使用版本︰v 2.0 alpha 1

一、問題

今天在寫JNI試圖從C++ call JAVA時,
遇到了
Fatal signal 11 (SIGSEGV) xxxx
的問題,
告訴我找不到JAVA層的某個static函式。


二、解決辦法

JAVA端的Code如下
package com.simon.utility;
public class DataManager {
 public static void test(){
  
  Log.i("tag", "into test");
 }
}
 
C++端使用JNI呼叫上面的Java函式
void FileOperator::getAndroidTest(){
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
    CCLog("into FileOperator::getAndroidTest(), Involking JNI...");
    
    JniMethodInfo t;
    
    if (JniHelper::getStaticMethodInfo(t, "com/simon/utility/DataManager","test","()V;"))
    {
        CCLog("classID: %d",t.classID);
                CCLog("methodID: %d",t.methodID);
        t.env->CallStaticBooleanMethod(t.classID,t.methodID);
        
    }
#endif
}
 
程式一直跟我報找不到test這個函式,
後來才知道()V;那邊
V後面不用打分號

題外話︰
()是JAVA端接收參數的值
V是這隻JAVA函式是否有回傳值。

[Android篇]無法使用GET/POST

文章撰寫日期︰2013/07/05 15:37
cocos2dx使用版本︰v 2.0.4
cocosBuilder使用版本︰v 2.0 alpha 1

一、問題

今天使用cocos2dx提供的CCHttpRequest跟伺服器發出GET/POST請求時,
Android端一直無法取得到正確資料,出現以下的LOG︰
response failed
error buffer: Couldn't resolve host 'xxxxxxx.amazonaws.com'

二、解決辦法

這是因為沒有開啟Android端的用戶權限。

註︰
Google對於每一隻APP需要使用到的權限,
都要求開發者必須在AndroidMenifest.xml裡註冊,
這是為了讓Google Play可以在提供使用者下載的地方,
show出這隻APP需要哪些資訊。

如︰這隻APP需要有上網能力、需要讀取您的通訊錄、需要讀取您的外部SD卡等等⋯

Android端的User-Permission需要加入Internet這個Permission。
〈uses-permission android:name="android.permission.INTERNET"/〉

加入後,就能在Android端GET/POST取到資料了。