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函数不能使用