1.Failed to allocate memory: 8 (andriod模擬器無法啓動)
今天因爲項目需要要新建一個項目,但是模擬器創建成功卻不能啓動,仔細看了一下,有如下錯誤信息提示:
[2013-05-21 15:23:43 - Emulator] Failed to allocate memory: 8
[2013-05-21 15:23:43 - Emulator]
[2013-05-21 15:23:43 - Emulator] This application has requested the Runtime to terminate it in an unusual way.
[2013-05-21 15:23:43 - Emulator] Please contact the application's support team for more information.
最後百度查詢得知:模擬器無法啓動的原因是電腦內存不足了,我們在新建模擬器的時候,默認會分配1024M(1G)的內存,
因爲我們的電腦本來就消耗了很大的內存了,所以無法再給模擬器分配1G的內存,導致模擬器無法啓動,解決方式就是打開
模擬器選擇界面,選中無法啓動的模擬器,點擊右側的“Edit”按鈕,在彈出的編輯選項中,將“Memery Option”改爲512M或者更低。
2.Android模擬器橫屏切換方法
很多沒有購買真機的網友不知道如何切換Android模擬器到橫屏顯示。常規的顯示爲HVGA-P(port),即分辨率爲320x480如果使用橫屏(land)。
如果模擬器尚未啓動,可以在Eclipse的項目Run as=>Open Run Dialog對話框中設置,如果android模擬器已經啓動後,可以使用快捷鍵F12或Ctrl+F11來切換。
當然是用命令行僅僅啓動模擬器可以使用參數emulator.exe -skin HVGA-L 來啓動。
需要注意的是,切換land或port可以通過資源文件來讓界面自適應窗體,但程序可能會重載onCreate,避免的方法可以通過在androidmanifest.xml文件
中重新定義方向,以及根據Activity的重寫onConfigurationChanged(Configuration newConfig)方法來控制,相關的可以在Android SDK中獲取到。
3.如何在android真機調試程序
步驟: menu---> 設置 ---> 應用程序 ---> 開發 , 選擇【USB調試】2. 用USB連接手機和電腦,並確保成功。
步驟: 在windows下執行c:\adb devices,
查看手機是否已經連接成功。
3. 設置應用程序爲調試模式。操作: 編輯AndroidManifest.xml 增加調試參數android:debuggable="true", 如下:
4. 執行真機調試操作:ECLIPSE調試對話框中,Target窗口中選擇Manual,點擊【debug】按鈕,選擇真機設備,開始調試。
注:不管是否啓用ECLIPSE環境,任何Android軟件只要在真機上運行發生異常,都可以在命令行窗口下查看具體異常信息
:執行:.\adb logcat 可以查看到更多的系統異常消息。
4..fatal error C1083: 無法打開包括文件:“extensions/ExtensionMacros.h”: No such file or directory”。
可以採用下列的操作。
第一步:在項目中添加附加項目。
A:在“解決方案資源管理器”中找到整個解決方案,右擊,選擇“添加”->“現有項目”。在彈出的對話框中找到“項目目錄/cocos2d/cocos/editor-support/cocostudio/proj.win32/libCocoStuido”點擊確定。
B:在“解決方案資源管理器”中找到整個解決方案,右擊,選擇“添加”->“現有項目”。在彈出的對話框中找到“項目目錄/cocos2d/cocos/gui/proj.win32/libGUI”點擊確定。
C:在“解決方案資源管理器”中找到整個解決方案,右擊,選擇“添加”->“現有項目”。在彈出的對話框中找到“項目目錄/cocos2d/extensions/proj.win32/libExtensions”點擊確定。
在你導放完成之後,你的項目結構看起來像這樣。
第二步:你需要在你的項目中引用這些剛導入的項目。
對你的項目右鍵,選擇“引用...”。在彈出的屬性頁中點選下面的“添加新引用”。在彈出的子級對話框中勾選我們剛纔剛加入的三個lib項目(如圖),點擊確定,這樣就完成添加項目對庫的引用。
第三步:爲你的項目添加包含目錄。
$(EngineRoot)
$(EngineRoot)cocos
$(EngineRoot)cocos\editor-support
最後編譯一下,完成此次附加項目的添加
5.cocos2d-x 控制檯輸出日誌
在2dx中用CCLog輸出日誌,但是在vs的控制檯中由於信息很多,很難發現。可以用下面方法,會重新啓動一個黑色的控制檯來輸出日誌
修改main.c文件,如下:
- #include "main.h"
- #include "AppDelegate.h"
- #include "CCEGLView.h"
- #include "net/NetWork.h"
- #include "adapter/RouterAdapter.h"
- USING_NS_CC;
- #define USE_WIN32_CONSOLE
- int APIENTRY _tWinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPTSTR lpCmdLine,
- int nCmdShow)
- {
- UNREFERENCED_PARAMETER(hPrevInstance);
- UNREFERENCED_PARAMETER(lpCmdLine);
- #ifdef USE_WIN32_CONSOLE
- AllocConsole();
- freopen("CONIN$","r",stdin);
- freopen("CONOUT$","w",stdout);
- freopen("CONOUT$","w",stderr);
- #endif
- // create the application instance
- CCEGLView* eglView = CCEGLView::sharedOpenGLView();
- eglView->setViewName("MT");
- //eglView->setFrameSize(480,320);
- return CCApplication::sharedApplication()->run();
- #ifdef USE_WIN32_CONSOLE
- FreeConsole();
- #endif
- }
#include "main.h"
#include "AppDelegate.h"
#include "CCEGLView.h"
#include "net/NetWork.h"
#include "adapter/RouterAdapter.h"
USING_NS_CC;
#define USE_WIN32_CONSOLE
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
#ifdef USE_WIN32_CONSOLE
AllocConsole();
freopen("CONIN$","r",stdin);
freopen("CONOUT$","w",stdout);
freopen("CONOUT$","w",stderr);
#endif
// create the application instance
CCEGLView* eglView = CCEGLView::sharedOpenGLView();
eglView->setViewName("MT");
//eglView->setFrameSize(480,320);
return CCApplication::sharedApplication()->run();
#ifdef USE_WIN32_CONSOLE
FreeConsole();
#endif
}
注意宏定義: #define USE_WIN32_CONSOLE 要加上這一句,否則在編譯android文件的時候會編譯出錯,要想在控制檯上輸出中文,要用printf函數,否則會使亂碼。
同時要注意 命名空間的引用,否則printf函數不能使用