VS下真机调试android native app(以cocos2dx手游为例)

0.虽然使用手游为例,但适用于任何原生C++ NDK编译方式。

1. 先说说项目背景, cocos2dx的手游,开发一般在windows vs下开发调试,IOS下使用xcode也能很方便的调试,但android就没那么幸运了,一般调试就靠log来分析问题,总觉得效率低下。调试原生的android程序adb
,cygwin gdb-ndk,ecplise下android native app也搞过,但觉得不太方便,而且能否调试成功还得靠RP,真是调试不易,且行且珍惜。就想能不能在vs下调试android程序而且配置还得相对简单。

2. 在网上g了一把发现有个神器叫visualGDB,看看了可以用来调试linux和android程序,于是就想试试这个是否靠谱。

需要的工具

1.Vs2010或者2012

2.visualGDB 这工具是收费的,附件给了个破解版

3.一个被Root过,而且有要有/data和/data/data目录权限,也就是adb需要能以root登录。否则在启动调试会发现gdbserver文件无法copy到/data目录下而不能调试

4. android NDk

5. android sdk

6. ant

7. java-jdk

3. 安装配置visualGDB

1.安装后在vs的菜单上多了一项目android- àset sdk/ndk location打开下面界面设置自己的

Sdk ndk ant jdk相关路径

2 新建一个visualGDB的工程 Start Visual Studio. Select File->New project->VisualGDB->Android App Wizard.

可以看到在安装了visualGDB后在新建工程里多了一项,我们需要新建一个这样的项目

3 导入我们的项目,选择最后一个import existing from Ecplise or ant

4.选择android工程,这里是AndroidManifest.xml所在的目录

在创建工程的时候目标选择android-18

在AndroidManifest.xml里增加android:debuggable="true"来生成带调试信息的so

现在就可以开始编译了打包了(需保证android.mk文件 ant的build.xml都没有问题,至少已经能在ecplise下编译构建能通过)。

4.编译完成后,会自动使用ant打包成apk,如果在bin目录下看到生成的apk就表示成功了,下面开始调试

菜单->android->debug android app,会出现下面界面,其实该工具也是使用的adb来完成调试的。

我们项目在调试的时候会在这个界面时间比较长,一般在200s左右,提示来看可能是工程过大,文件过多导致。

PS:前几天在本机ecplise编译的时候在link的时候报个很奇怪的错误

在link的时候报了一个CreateProcess No such file or dir的错误,当时不知道什么原因,至少g了一把,就看到一个人问同样的问题,说可能是文件数过多导致。

我们文件个数796个,就怀疑在link的时候参数太长了导致。

当时就像把通用的做成一个独立的so,或者.a。但这样也只决解了当前的问题,万一以后在多起来还是一样,就想android.mk里有没有选择提供支持

找个下面这个选项,果然就ok了。

成功启动调试

Creash也能直接看到堆栈,很方便

5.遇到的几个坑

1. 设备不识别,在输入adb.exe devices 设备显示的是?号。

如果显示的是

? devices

这样表示usb打开有问题,驱动成功安卓,这样启动调试会提示“路径中具有非法字符”的错误

adb devices问号 设备不识别原因很多,我是在机器设置里选择usb连接方式选择“媒体设置(MTP)”连接就好了。

2.在创建工程的时候sdk\platforms 选择android-18,否则在调试的时候可能报一个armeabi-7v错误

3.在ant构建报一个异常,这是由于AndroidManifest.xml和project.properties里的

target=android-<value>值不一样导致

[dx] UNEXPECTED TOP-LEVEL EXCEPTION:

1> [dx] java.nio.BufferOverflowException

1> [dx] at java.nio.Buffer.nextPutIndex(Buffer.java:519)

1> [dx] at java.nio.HeapByteBuffer.putShort(HeapByteBuffer.java:315)

6. VisualGDB调试启动过程

Adb –s 设备id command

当已经有多个设备连接到主机时,可以使用-s参数进行选择.

获得设备信息

E:\lccifter_FB\lucifter\adt-bundle-windows-x86-20130917\sdk\platform-tools\adb.exe devices

List of devices attached

00664BACF43F device

查看当前进程

E:\lccifter_FB\lucifter\adt-bundle-windows-x86-20130917\sdk\platform-tools\adb.exe -s 00664BACF43F shell ps

USER PID PPID VSIZE RSS WCHAN PC NAME

root 1 0 500 368 ffffffff 00000000 S /init

root 2 0 0 0 ffffffff 00000000 S kthreadd

root 3 2 0 0 ffffffff 00000000 S ksoftirqd/0

………..N多个

E:\lccifter_FB\lucifter\adt-bundle-windows-x86-20130917\sdk\platform-tools\adb.exe -s 00664BACF43F shell id

uid=2000(shell)gid=2000(shell) groups=1003(graphics),1004(input),1007(log),1009(mount),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003

(inet),3006(net_bw_stats)

安装apk,-r表示重新安装

E:\lccifter_FB\lucifter\adt-bundle-windows-x86-20130917\sdk\platform-tools\adb.exe -s 00664BACF43F install -r "E:\lc_fb_test\cocos2d-x-2.1.4\samples\Cpp\HelloCpp

\proj.android\bin\HelloWorld-debug.apk"

pkg: /data/local/tmp/HelloWorld-debug.apk

Success

3741 KB/s (1406256 bytes in 0.367s)

启动一个app 路径由pwd返回

E:\lccifter_FB\lucifter\adt-bundle-windows-x86-20130917\sdk\platform-tools\adb.exe -s 00664BACF43F shell run-as org.cocos2dx.hellocpp /system/bin/sh -c pwd

/data/data/org.cocos2dx.hellocpp

获取cpu架构信息

E:\lccifter_FB\lucifter\adt-bundle-windows-x86-20130917\sdk\platform-tools\adb.exe -s 00664BACF43F shell getprop ro.product.cpu.abi

armeabi-v7a

运行一个包名为org.cocos2dx.hellocpp 活动activity HelloCpp

E:\lccifter_FB\lucifter\adt-bundle-windows-x86-20130917\sdk\platform-tools\adb.exe -s 00664BACF43F shell am start -n org.cocos2dx.hellocpp/.HelloCpp

Starting: Intent { cmp=org.cocos2dx.hellocpp/.HelloCpp }

E:\lccifter_FB\lucifter\adt-bundle-windows-x86-20130917\sdk\platform-tools\adb.exe -s 00664BACF43F shell ls /data/data/org.cocos2dx.hellocpp/lib/gdbserver

/data/data/org.cocos2dx.hellocpp/lib/gdbserver

E:\lccifter_FB\lucifter\adt-bundle-windows-x86-20130917\sdk\platform-tools\adb.exe -s 00664BACF43F shell ps

USER PID PPID VSIZE RSS WCHAN PC NAME

root 1 0 500 368 ffffffff 00000000 S /init

root 2 0 0 0 ffffffff 00000000 S kthreadd

root 3 2 0 0 ffffffff 00000000 S ksoftirqd/0

转发端口

E:\lccifter_FB\lucifter\adt-bundle-windows-x86-20130917\sdk\platform-tools\adb.exe -s 00664BACF43F forward tcp:5039 tcp:5039

VS下真机调试android native app(以cocos2dx手游为例)

时间: 2024-10-08 17:25:30

VS下真机调试android native app(以cocos2dx手游为例)的相关文章

mac 下真机调试 android 手机

第一步: 查看usb设备信息 在 终端输入:system_profiler SPUSBDataType     可以查看连接的usb设备的信息 比如我的usb信息如下(部分内容): Spreadtrum phone: Product ID: 0x5d04 Vendor ID: 0x1782 Version:  2.29 Serial Number: 19761202 Speed: Up to 480 Mb/sec Manufacturer: Spreadtrum Location ID: 0xf

蓝牙真机调试Android Wear App &amp; 真机卸载调试的App

可穿戴设备啥啥的市场.展望.分析.猪和风口等等...啥啥的官话就不罗嗦了,改天再换XX角色喷喷,今天记录一个技术贴备份. 一.环境 操作系统:Mac OS X 10.10.1 开发环境:Android Studio 1.0.2 (Mac版) 手表设备:Moto 360 手机设备:魅族MX4 手表系统:Ticwear v1.0.7( Android Wear 4.4W.2) 手机Android Wear软件环境就不多说了百度即可,Ticwear中文系统可以到 http://www.ticwear.

ionic真机调试Android报错 - could not read ok from ADB Server * failed to start daemon * error: cannot connect to daemon

在使用真机调试Android程序时,报错如下: could not read ok from ADB Server * failed to start daemon error: cannot connect to daemon 首先,打开命令行工具,找出占用5037端口号的对应pid号 netstat -ano | findstr :5037 如果端口被占用,在任务列表中找到占用端口的进程 tasklist | findstr processID 打开任务管理器,将对应pid号的进程杀死.然后

iOS 证书、真机调试、发布 App Store

之前对iOS的证书弄的很不清楚,Xcode里面也有各种证书,作为一个有强迫症的巨蟹座,这是不能忍的 趁着准备发布自己的第一个app,梳理一下这块内容 主要参考了这几篇文章: iOS开发:创建真机调试证书 http://jingyan.baidu.com/article/ff411625b8141312e48237a7.html 如何清除xcode里面的mobileprovision文件http://www.shuizhongyueming.com/2014/04/how-to-clear-mob

xcode下真机调试!

1. 首先,你要有一个已经越狱的iPhone/iPod/iPad,越狱方法此处不提供. 2. 在用来测试的真机Cydia中添加源:http://apt.weiphone.com,下载适合真机系统版本的AppSync. 3. 在电脑上创建一个证书,用于为生成的程序签名. 创建证书 创建证书的过程比较简单,在电脑上打开“其他-钥匙串访问”.然后在菜单栏里点击“钥匙串访问-证书助理-创建证书...”来打开向导.注意这里的三个地方,必须要把名称命名为iPhone Developer,将类型设定为代码签名

虚拟机或真机调试React Native, 开启开发者菜单

虚拟机调试呼出开发者菜单,只需按下Ctrl+M组合键即可: 对于真机,通常摇晃手机可呼出,也可以在cmd输入adb shell input keyevent 82呼出菜单.如果还是不行,可能是系统管家之类的应用阻止了这个菜单的弹出,按如下操作: (不同情况可能只需要一步,自己去尝试一下吧) 1 进入手机管家 – 权限管理 – 应用权限管理 – 找到你的react Native app – 开启桌面悬浮窗 2 进入手机管家 – 权限管理 – 通知管理 – 找到你的React Native app

mac os 用真机调试android应用

首先,要安装filetransfer.dmg程序,才能把android机连接到mac os上面 1,设置adb的环境变量 查找android tools所在的目录,在android tools下面有adb工具,目录如下“/Users/fenghewei/Android/Android_tools/android-sdk-macosx/platform-tools”,把这路径加入到~/.bash_profile文件中 #adb ANDROID_ADB=/Users/fenghewei/Androi

android studio无线真机调试------Android

第一步:安卓机要打开开发者模式,并将手机和电脑连接到同一个局域网 第二部:在安卓机上下载一个 adb无线调试软件,并打开.这时候,软件上会显示你手机的ip和端口.比如我的是192.168.1.100:55555 第三部:进入sdk所在文件夹的platform-tools文件夹.确保其中存在adb.exe文件 第四部:在android studio的最下面用cd命令进入到platform-tools文件夹 第五部:使用adb connect 192.168.1.100:55555命令连接到手机.

Android真机调试 Android.Util.AndroidRuntimeException: You cannot combine custom titles with other title features

参考连接:http://blog.csdn.net/scyatcs/article/details/9003285 Android.Util.AndroidRuntimeException: You cannot combine custom titles with other title features 错误如下图: 原文图: 解决方法: 1.在AndroidManifest.xml 中更改<application>标签中的android:theme="@style/AppThe