接入微信分享 以及使用eclipse调试cocos2dx

参考文章:http://www.zaojiahua.com/eagled-the-letter-to-share.html

以下是文章内容:

本次的游戏代码是使用lua完成,所以接入第三方的SDK也和c++层的方法稍有区别,首先来说明整体的思路。我们是在Android应用平台接入的微信分享,所以在这个平台下,也就是java层实现接入逻辑,留下给c++层调用的接口,c++层通过jni来调用java层实现业务逻辑的接口,而我们是在Lua中完成的游戏逻辑,所以我们还需要做的一个步骤就是,将c++的接口导出给lua层来使用,这个过程需要使用lua-binding。

Lua小游戏别撞车——接入微信分享

前俩个过程我在博客用3.0实现飞机大战——接入微信分享有详细的说明,请大家参考这篇博客,我们把整个接入流程再走一遍。

1、将项目导入eclipse的工程中,添加微信的SDK,在微信的开发者中心申请接入的应用,获得APPID。

2、实现java层的接入逻辑,在AppActivity文件中实现了一些函数,应该是和lua有关的,不用管。在onCreate中调用注册代码,将用到的成员变量和接口函数写在appActivity文件中。以下是涉及到调用微信的代码,其中有一个Util类,在上面给的博客地址中有说明,注意包名写对了。

1 //微信SDK
2     private static final String APP_ID = "wx42ca6be8e52eebfb";
3     private static IWXAPI api;
4     private static AppActivity instance;
5  
6     static String hostIPAdress="0.0.0.0";
7     @Override
8     protected void onCreate(Bundle savedInstanceState) {
9         // TODO Auto-generated method stub
10         super.onCreate(savedInstanceState);
11  
12         //注册到微信
13         regToWX();
14  
15         if(nativeIsLandScape()) {
16             setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
17         else {
18             setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
19         }
20  
21         //2.Set the format of window
22  
23         // Check the wifi is opened when the native is debug.
24         if(nativeIsDebug())
25         {
26             getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
27             if(!isNetworkConnected())
28             {
29                 AlertDialog.Builder builder=new AlertDialog.Builder(this);
30                 builder.setTitle("Warning");
31                 builder.setMessage("Open Wifi for debuging...");
32                 builder.setPositiveButton("OK",new DialogInterface.OnClickListener() {
33  
34                     @Override
35                     public void onClick(DialogInterface dialog, int which) {
36                         startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
37                         finish();
38                         System.exit(0);
39                     }
40                 });
41                 builder.setCancelable(false);
42                 builder.show();
43             }
44         }
45         hostIPAdress = getHostIpAddress();
46     }
47  
48     //初始化微信
49     private void regToWX(){
50         api = WXAPIFactory.createWXAPI(this, APP_ID, true);
51         api.registerApp(APP_ID);
52     }
53  
54     //留下给c++层调用的接口
55     public static void sendMsgToFriend(){
56         if(api.openWXApp())
57         {
58                 //初始化一个对象WebpageObject
59             WXTextObject textObject = new WXTextObject();
60             textObject.text = "小塔博客用lua写的小游戏别撞车,博客地址http://www.zaojiahua.com/tag/3-0%E9%A3%9E%E6%9C%BA%E5%A4%A7%E6%88%98!";
61  
62             //媒体对象中
63             WXMediaMessage msg = new WXMediaMessage(textObject);
64             msg.title = "别撞车";
65             msg.description = "分享给你的好友,让更多的人来玩!";
66  
67             //建立请求对象
68             SendMessageToWX.Req req = new SendMessageToWX.Req();
69             //transaction是用来表示一个请求的唯一标示符
70             req.transaction = buildTransaction("textObject");
71             req.message = msg;
72             req.scene = SendMessageToWX.Req.WXSceneSession;
73  
74             //使用通信类发送
75             api.sendReq(req);
76         }
77         else
78         {
79              Toast.makeText(instance, "启动微信失败!", Toast.LENGTH_SHORT).show();
80         }
81     }
82  
83     public static void sendMsgToTimeLine(){
84         if(api.openWXApp())
85         {
86             if(api.getWXAppSupportAPI() >= 0x21020001)
87             {
88                 WXWebpageObject webpage = new WXWebpageObject();
89                 webpage.webpageUrl = "http://m.baidu.com/app?action==content&docid=6561264&f=s1001";
90  
91                 WXMediaMessage msg = new WXMediaMessage(webpage);
92                 msg.title = "别撞车";
93                 msg.description = "分享到我的朋友圈,让更多的人来玩!";
94  
95                 Bitmap thumb = BitmapFactory.decodeResource(instance.getResources(),R.drawable.icon);
96                 msg.thumbData = Util.bmpToByteArray(thumb, true);
97  
98                 SendMessageToWX.Req req = new SendMessageToWX.Req();
99                 req.transaction = buildTransaction("webpage");
100                 req.message = msg;
101                 req.scene = SendMessageToWX.Req.WXSceneTimeline;
102                 api.sendReq(req);
103             }
104             else{
105                 Toast.makeText(instance, "微信版本过低", Toast.LENGTH_SHORT).show();
106             }
107         }
108         else
109         {
110              Toast.makeText(instance, "启动微信失败", Toast.LENGTH_SHORT).show();
111         }
112     }
113     private static String buildTransaction(final String type) {
114         return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();
115     }

Lua小游戏别撞车——接入微信分享

3、接下来实现c++层的逻辑,从这里开始才是本篇博客重点要说明的。首先需要打开c++层的代码,我是在Mac下写的代码,所以打开我的Xcode工程,工程位置如图所示,如果没有frameworks文件夹,可以采用如图的操作。

Lua小游戏别撞车——接入微信分享Lua小游戏别撞车——接入微信分享

之前我们写的圆周运动类是在classes文件夹下,注册是在appDelegate中完成的,这种方法在我的博客绑定自定义类到Runtime(Lua-binding)中有详细的说明,本篇博客采用另一种更加简单的方法,但是思路是不变的,采用这种方法以后扩展比较容易,再换一种方式来做可以更好的理解绑定的机制。

在frameworks/cocos2d-x/cocos目录下新建custom文件夹,顾名思义就是自定义的一些类,以后我们可以将自己定义的类全部放到这个文件夹中,在这个文件夹中新建类WeixinShare,然后在工程中导入这个类,导入路径如下。

Lua小游戏别撞车——接入微信分享Lua小游戏别撞车——接入微信分享

以下是俩个静态函数的实现。

1 #ifndef __ColorBlind__WeixinShare__
2 #define __ColorBlind__WeixinShare__
3  
4 #if(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
5  
6 #include "platform/android/jni/JniHelper.h"
7 #include <jni.h>
8  
9 #endif
10  
11 #include "Cocos2d.h"
12 USING_NS_CC;
13  
14 class CC_DLL WeixinShare
15 {
16 public:
17     static void sendToFriend();
18     static void sendToTimeLine();
19 };
20  
21 #endif /* defined(__DontCrash__WeixinShare__) */
1 #include "WeixinShare.h"
2  
3 #if(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
4  
5 #include "platform/android/jni/JniHelper.h"
6 #include <jni.h>
7  
8 #endif
9  
10 void WeixinShare::sendToFriend()
11 {
12 #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台
13     JniMethodInfo minfo;
14  
15     bool isHave = JniHelper::getStaticMethodInfo(minfo,"org/cocos2dx/lua/AppActivity","sendMsgToFriend""()V");
16  
17     if (!isHave) {
18         log("jni:sendMsgToFriend is null");
19     }else{
20         //调用此函数
21         minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID);
22     }
23 #endif
24 }
25  
26 void WeixinShare::sendToTimeLine()
27 {
28 #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台
29     JniMethodInfo minfo;
30  
31     bool isHave = JniHelper::getStaticMethodInfo(minfo,"org/cocos2dx/lua/AppActivity","sendMsgToTimeLine""()V");
32  
33     if (!isHave) {
34         log("jni:sendMsgToTimeLine is null");
35     }else{
36         //调用此函数
37         minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID);
38     }
39 #endif
40 }

这样的话c++层的代码也完成了,大家可以编译一下工程,看看是否有错误。如果没有错误我们就导出给lua使用。

4、进入tools/tolua目录,复制一份cocos2dx.ini配置文件,改名为cocos2dx_custom.ini文件,然后修改这个文件,主要注意的地方如图所示。

Lua小游戏别撞车——接入微信分享Lua小游戏别撞车——接入微信分享

这样我们自己导出类的配置文件就OK啦,然后打开genbinding.py文件,添加一行新的配置文件内容。

Lua小游戏别撞车——接入微信分享

接着在控制台下执行脚本genbinding.py。

Lua小游戏别撞车——接入微信分享Lua小游戏别撞车——接入微信分享

这样在auto目录下我们就成功的得到了桥接函数lua_cocos2dx_custom_auto,现在我们将这个桥接函数导入到我们的工程中,之所以要导入是为了让整个项目在编译的时候编译这些文件。在lua_cocos2dx_custom_auto.cpp中,对WeixinShare.h的包含要加入目录名。现在编译整个工程,如果编译成功代表导出的就没有问题,我们才能进行下一步。

Lua小游戏别撞车——接入微信分享Lua小游戏别撞车——接入微信分享

现在只差最后一步注册了,之前的函数注册是在appDelegate中完成的,这次的注册和cocos2d-x的注册函数放到一起完成,路径在cocos/scripting/lua-bindings/manual/CCLuaStack.cpp文件中,需要先包含头文件,所谓的注册就是调用桥接函数的头文件中所声明的那个函数。

Lua小游戏别撞车——接入微信分享Lua小游戏别撞车——接入微信分享

函数注册完毕以后我们需要重新编译一下c++层的代码,你可以在Xcode中编译,也可以在IDE中build一下runtime,俩者的道理是一样的,都是重新编译c++层代码。不过需要注意的是,如果是在Xcode工程中编译的代码,在IDE中可能需要选择一下使用最新编译出来的runtime,如图所示。整个lua-binding的过程就是这样,这么做的方便是以后如果你写很多的自定义类那么只需要在custom目录下新建文件,在init中新增自己的类名,然后运行genbinding.py脚本就会生成绑定的接口了,不再需要注册自己的多个导出函数了,刚才的这些步骤刚开始做是比较麻烦,不过为以后再导出自定义的类省下不少功夫。

Lua小游戏别撞车——接入微信分享

5、下面我们就使用导出的函数来完成程序的功能,先对lua层的代码稍作修改,添加调用分享的菜单项。

1 --游戏介绍以后的处理
2 function MainGameScene:gameOver(layer)
3     --清除数据
4     GlobalData:reset()
5     self.score:setString("0")
6     --重新设置小车的位置
7     self:resetCar()
8  
9     --添加分享和更多菜单项
10     self:addButton(layer)
11 end
12  
13 function MainGameScene:addButton(layer)
14     local share = cc.MenuItemImage:create("share.png","","")
15     share:setScale(0.8)
16     local more = cc.MenuItemImage:create("more.png","","")
17     more:setScale(0.8)
18     local retry = cc.MenuItemImage:create("retry.png","","")
19     retry:setScale(0.8)
20     local menu = cc.Menu:create(share,retry,more)
21     menu:alignItemsHorizontallyWithPadding(self.size.width*0.1)
22     menu:setPosition(cc.p(self.size.width/2,self.size.height/2))
23     layer:addChild(menu,3)
24  
25     --callback
26     local retry_callback = function()
27         --播放音效
28         SoundDeal:playEffect(EffectType.Start)
29         retry:runAction(cc.Sequence:create(cc.ScaleTo:create(0.05,1.3),
30             cc.CallFunc:create(function()menu:removeFromParentAndCleanup(trueend)))
31         self:runRedCar(self.car_red)
32         self:runYelloCar(self.car_yello)
33         self.play = true
34         self:collision(layer)
35     end
36     local share_callback = function()
37         share:runAction(cc.Sequence:create(cc.ScaleTo:create(0.05,1.3),cc.ScaleTo:create(0.05,0.8)))
38         if cc.Application:getInstance():getTargetPlatform() == cc.PLATFORM_OS_ANDROID then
39             cc.WeixinShare:sendToFriend()
40         end
41     end
42     local more_callback = function()
43         more:runAction(cc.Sequence:create(cc.ScaleTo:create(0.05,1.3),cc.ScaleTo:create(0.05,0.8)))
44     end
45     retry:registerScriptTapHandler(retry_callback)
46     share:registerScriptTapHandler(share_callback)
47     more:registerScriptTapHandler(more_callback)
48     --判断游戏是否开始的变量
49     self.play = false
50 end

通过cc.WeixinShare:sendToFriend()调用c++层导出来的接口,注意要判断一下平台。最后需要做的就是打包apk,来测试我们写的程序是否正确。在IDE中导出包的过程中,你可能会遇到类没有实现的错误,因为我们添加了自定义的类却没有告诉编译器啊,在之前我们把自定义的类添加到Xcode工程中就是告诉编译器要编译我们新建的类,现在的平台是Android,我们要怎么告诉编译器编译我们的类呢,那就是修改.mk文件。我们需要修改俩处文件,一个是将WeixinShare.cpp添加到.mk文件中,另一个是将导出的桥接函数lua_cocos2dx_custom_auto添加到.mk文件中,这俩个mk文件的位置如图所示。

Lua小游戏别撞车——接入微信分享Lua小游戏别撞车——接入微信分享Lua小游戏别撞车——接入微信分享Lua小游戏别撞车——接入微信分享

通过这几个步骤我们就完成了微信的分享功能,这个过程刚开始比较复杂,大家在完成了某一个阶段以后最好测试一下是否正确,出现错误仔细排查一下,只要认真一些一定可以导出成功的,最后微信分享的截图如下。

Lua小游戏别撞车——接入微信分享


参考了上面的教程之后,自己也照着写了一份,确实可以实现了

不过,遇到问题jni的问题的时候还是比较难发现的。我就写错了类的路径..下面用eclipse调试c++,Android

Eclipse调试C++(Cocos2dx Android )

先说windows下的,mac下的在最后

环境:win8.1、java 1.5、Eclipse 4.3.1、ADT bundle 22.6.2.v20140321、NDK r8e、cocos2dx 2.2.3

前提:下载好cocos2dx、NDK(r8e以上版本可以不装cygwin) 、ADT bundle(带Eclipse、sdk等各种插件),配置好 JAVA_HOME、CLASSPATH、NDK_ROOT、ANDROID_SDK等环境变量;配置好Cocos2dx的Android开发环境,即可以通过ndk-build编译cocos2dx的工程生成 .so文件、生成生成jar包、能成功运行HelloCpp工程。注意:所有涉及到的目录不要有中文或者空格!

 

1、把Eclipse的workSpace目录里的 .metadata 文件删除,恩,Eclipse我设置了不自动build~~ 然后打开Eclipse把cocos2dx工程(Q:\cocos2d-x-2.2.3\cocos2dx\platform\android)和HelloCpp工程(Q:\cocos2d-x-2.2.3\samples\Cpp\HelloCpp\proj.android)导进去:File->import->Android->Existing Android Code Into WorkSpace->next<在Root Directory里填上cocos2dx工程所在的目录,按回车键,cocos2dx的工程就出现,并且会自动选上,点finish,搞定。同样,也把HelloCpp工程导进去。

 

2、TestCpp工程报错说不认识bash :Error: Program "bash" not found in PATH

 

解决:(1):给Eclipse配置好NDK路径

   (2):设置TestCpp项目的C/C++ builder :ndk-build.cmd NDK_DEBUG=1 。注意:NDK_DEBUG=1   等号左右不要留有空格

 

3、build一下TestCpp工程,会报错:

1 D:/new_soft/android-ndk-r8e/build/core/add-application.mk:128: Android NDK: WARNING: APP_PLATFORM android-9 is larger than android:minSdkVersion 8 in ./AndroidManifest.xml   

把工程里的AndroidManifest.xml文件里<uses-sdk android:minSdkVersion="8"/>的8改成9。查了一下文章,说这是NDK的一个bug:AndroidManifest.xml里的minSdkVersion设置不能小于项目用于编译的SDK版本,而HelloCpp项目用于编译的sdk版本是 2.2.3.。。。也就是 sdkversion 是 9.。。。。

 

4、刷新,再build,还报错:

1 jni/Android.mk:19: *** Android NDK: Aborting.    .  Stop.
2 Android NDK: jni/Android.mk: Cannot find module with tag 'cocos2dx' in import path    
3 Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ?    
4 Android NDK: The following directories were searched:    
5 Android NDK:         

说的是Android.mk文件里的19行 找不到 cocos2dx,大概意思是找不到这个cocos2dx这个模块,类似于#include头文件时要加上对应的搜索路径的意思,那就补上这个模块的上一层目录:打开Android.mk文件,在最后一行$(call import-module,cocos2dx) 之前加上一行: $(call import-add-path,Q:/cocos2d-x-2.2.3)。也就是加上cocos2dx这个文件夹所在的目录给mk文件去搜索。

注意里面的反斜杠:我们直接从windows下拷贝路径时 是 Q:\cocos2d-x-2.2.3的,要把 \ 改成 / 。如果你的cocos2dx工程所在的目录比较深,有很多层,要把路径里所有的 \ 都改成 / 。

 

5、刷新,再build,还报错:

1 Android NDK: Q:/cocos2d-x-2.2.3/cocos2dx/Android.mk: Cannot find module with tag 'libjpeg' in import path    
2 Q:/cocos2d-x-2.2.3/cocos2dx/Android.mk:175: *** Android NDK: Aborting.    .  Stop.
3 Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ?    
4 Android NDK: The following directories were searched:    
5 Android NDK:       

恩,同样的错误,说的cocos2dx工程的Android.mk文件的175行上找不到 libjepg,注意,cocos2dx工程的mk文件不在它的工程目录下,而是在它的上两层,在 Q:/cocos2dx-2.2.3/cocos2dx 下面,打开它,在175行的$(call import-module,libjpeg)之前插入一句: $(call import-add-path,Q:/cocos2d-x-2.2.3/cocos2dx/platform/third_party/android/prebuilt)。注意斜杠转成反斜杠! 因为libjepg是第三方库,放在cocos2dx\platform\third_party\android\prebuilt这个目录里的。

 

注意:第4、5步添加 ndk module 时都是用了绝对路径,在不同电脑上都要重新配置一下。你也可以改成相对路径,可惜我还不太熟悉mk文件的一些东西,以后再改~~

 

6、再build,嗯,好像成功了,成功生成了libhellocpp.so文件~~看到libs文件夹下生成了一个gdbserver文件和gdb.setup文件没,就是因为上面设置 NDK_DEBUG=1 所以生成的,gdbserver会被部署到手机里。当触发C++断点时,相当于手机端的gdbserver是服务端,会发送一些信息到Eclipse这边,Eclipse这边的gbdserver是客户端,Eclipse这边的gdbserver接收到信息就进行相关操作,嗯,我猜的~~

 

下面说的是如何调试cpp文件

1、右键cocos2dx工程,选择 Android tools -> Add Native Support,so文件的名字不用改,点finish

2、刷新,build cocos2dx工程,报错: 

D:/new_soft/android-ndk-r8e/build/core/add-application.mk:128: Android NDK: WARNING: APP_PLATFORM android-9 is larger than android:minSdkVersion 8 in ./AndroidManifest.xml  

把工程里的AndroidManifest.xml里 <uses-sdk android:minSdkVersion="8"/> 的 8 改成 9

 

3、刷新,build cocos2dx工程,没报错了,再build HelloCpp工程,也没报错了

4、加入需要调试的C++文件:

  (1):右键 hellocpp工程,new->folder

    

  (2):选中HelloCpp,下面点 advanced,选择最后一个选项:Link to alternate location(Linked Folder),在下面输入要导进来的cpp所在的目录(这里我填了 Q:\cocos2d-x-2.2.3\samples\Cpp\HelloCpp\Classes),点 finish即可:

      

注意:文件夹名 不能和工程里已有的文件同名

 

5、打开刚才加进来的CCNode.cpp文件,发现里面一大堆错误,包括各种#include的.h文件找不到,各种不能识别的符号或者各种 unknown symbol~~,我猜这个问题是因为只导入少数几个cpp文件,这几个cpp文件依赖的其他的cpp文件没有加进来的原因,如果把所有cpp文件都加进来估计是可以的,我没试过~~(因为libcocos2dx工程在目录cocos2dx下面,不能直接把cocos2dx这个目录加进来,要把里面的CocosDenshion、extensions等目录一个个加进来~~)

解决方法:右键cocos2dx工程,属性,C/C++ General->Code Analysis,选择 使用项目设置,然后把下面的勾都去掉,如下:

  

 

6、刷新,再build两个项目,应该都没有问题了

7、在刚才加进来的随便一个cpp文件里断点,右键选择HelloCpp工程,debug as->android native application(请用真机调试,用模拟器的话不知道有啥问题不),居然报错:

  

 

8、原来是assert文件夹里的资源没有,可能也是相对路径又问题引起的吧,没有把Resources里的资源拷过来吧,把Q:\cocos2d-x-2.2.3\samples\Cpp\HelloCpp\Resources里的所有东西拷到Q:\cocos2d-x-2.2.3\samples\Cpp\HelloCpp\proj.android\assets下,再跑,debug as->android native application,成功!

 

注意:调试C++的时候,gdbServer会有所延迟(大概有好几秒,和你的电脑和调试的手机的性能有关吧),所以你的断点最好不要加在程序启动的那些代码里,上面截图就是加在一个菜单的点击事件里的,点击关闭菜单时触发。

线程、单步、变量观察~~perfect~~

 

有些时候报以下形式的 Unknow Application ABI 错误:

这个折腾了我许久许久。。。但偏偏今晚不能重现,这种问题其实在上面已经涉及到了的,只不过这种log的形式很迷惑人,看到红色框没,只要竖着读就很清晰了:Android NDK warning:App_Platform android-14 is larger than android:minSdkVersion 8 in ./AndroidManifest.xml .......是不是很熟悉~~~~~~有一些找不到module的如Cannot find module with tag 'cocos2dx' in import path 错误也会以这种形式报错,哎,坑爹

 

PS:因为我用的Eclipse加了个汉化包。。。但又想在文章涉及到Eclipse设置的一些东西尽量用英文版的。。。所有有些地方用文字说的和截图的有所差别,见谅~~

发布release版本时记得把工程属性里配置的 NDK_DEBUG=1去掉~~

感觉这个东西的重点就在于了解Android.mk文件吧,把里面的配置看懂,在这过程中看报什么错,就对应修改就是了。反正暂时我还是不怎么了解,所以文章里充满了大量的我猜等字眼~~先用着,再研究吧

 

mac下也差不多是这个步骤,如果大家有什么问题的话,把详细信息贴出来,我尽量把我知道的分享出来~~

mac下明明配置了NDK_ROOT,Eclipse运行的时候一直说找不到:直接在对应工程的mk文件的首行设置 NDK_ROOT="~~~~~~~~~~"  (~~~表示你的ndk所在的目录,如: D:/new_soft/android-ndk-r8e)

处理完上面的步骤之后,我还需要在android.mk文件中添加如下路径,不然无法识别$(call import-module,scripting/lua-bindings),因此在这句的前面添加如下代码:

$(call import-add-path, I:\Cocos2dx\WeiXinShare\frameworks\cocos2d-x)\
$(call import-add-path, I:\Cocos2dx\WeiXinShare\frameworks\cocos2d-x\cocos)\
$(call import-add-path, I:\Cocos2dx\WeiXinShare\frameworks\cocos2d-x\external\)\


不过在eclipse下调试c++的时候,还是遇到了一个暂时无法解决的问题,导致无法调试:

[2015-03-24 00:35:22 - WeiXinShare] Unknown Android version on device.
[2015-03-24 00:42:56 - WeiXinShare] Unknown Android version on device.
[2015-03-24 00:43:53 - WeiXinShare] gdbserver output:
[2015-03-24 00:43:53 - WeiXinShare] run-as: Package 'org.monkey.com' is unknown


[2015-03-24 00:43:53 - WeiXinShare] Verify if the application was built with NDK_DEBUG=1

以后解决了在进行补充,现在暂时就通过打印来进行调试吧。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值