`
KB章鱼
  • 浏览: 26996 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

关于ANE的调试心德

阅读更多

在编写android项目时,我们可以通过Log去查看程序的执行状态和打印信息。



 

然而在ANE中这些Log的内容是无法通过控制台看到的,也就是说程序在android部分出错了我们很难知道程序是在那一步出错了。那么应该用什么来替代Log呢? 日前我就遇到了这样的问题,我的解决方案是是使用Socket。

这个方法主要包含2个部分

1.客户端--------代码会写在android部分

2.服务器--------任何能实现SocketService的都可以,由于对flash熟悉且对性能方面无要求我使用的是air

 

服务器的实现是简单到不能再简单将收到的信息打印出来,由于代码很少我直接全部粘贴了,相信不需要注释也是能读懂的

package
{
	import flash.display.Sprite;
	import flash.events.ProgressEvent;
	import flash.events.ServerSocketConnectEvent;
	import flash.net.ServerSocket;
	import flash.net.Socket;
	import flash.text.TextField;
	import flash.utils.ByteArray;
	
	public class TestSocketServices extends Sprite
	{
		private var ss:ServerSocket;
		private var tf:TextField;
		private var cs:Socket;
		
		public function TestSocketServices()
		{
			initSS();
		}
		
		private function initSS():void
		{
			ss = new ServerSocket();
			ss.bind(5689);
			ss.addEventListener(ServerSocketConnectEvent.CONNECT, onConnect);
			ss.listen();
			
			tf = new TextField();
			addChild(tf);
			tf.width = stage.stageWidth;
			tf.height = stage.stageHeight;
			tf.border = true;
			tf.borderColor = 0;
			tf.wordWrap = tf.multiline = true;
		}
		
		private function log(msg:String):void
		{
			tf.appendText(msg + "\n");
			trace(msg);
		}
		
		protected function onConnect(event:ServerSocketConnectEvent):void
		{
			cs = event.socket;
			cs.addEventListener(ProgressEvent.SOCKET_DATA, getData);
		}
		
		protected function getData(event:ProgressEvent):void
		{
			if(cs.bytesAvailable)
			{
				var ba:ByteArray = new ByteArray();
				cs.readBytes(ba, 0, cs.bytesAvailable);
				log("msg from android:" + ba.toString());
			}
		}
	}
}

 客户端的代码更是简单,我也完全粘贴吧

package com.example.sockets;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class SocketLog {

	private static SocketLog _ins; 
	
	private Socket cs;
	PrintWriter out;
	
	public SocketLog()
	{
		try {
			cs = new Socket("192.168.1.32", 5689);
			out = new PrintWriter(cs.getOutputStream());
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public static SocketLog ins()
	{
		if(_ins == null)
		{
			_ins = new SocketLog();
		}
		return _ins;
	}
	
	
	public void log(String msg)
	{
		out.print(msg);
		out.flush();
	}
}

 需要注意的是IP地址和端口号需要根据实际情况进行设置。

 

接下来是如何使用,其实也很简单

只需要将android中的log(...)的代码替换成SocketLog.ins().log(...)就可以了。

看看实际的效果吧



 

最后要说明的一点很重要。当运行程序的时候发现程序一直启动不起来很有可能是你的服务器没有启动,程序一直在连接服务器导致。所以测试的时候记得开服务器,发布的时候记得将相关代码去除!

  • 大小: 33.9 KB
  • 大小: 32 KB
1
0
分享到:
评论

相关推荐

    ane打包范例及注意事项

    最后,关于ANE开发的一些个人经验分享: 1. **版本管理**:为了方便版本控制和升级,建议为每个ANE版本创建单独的分支,便于回溯和维护。 2. **跨平台兼容**:ANE需要考虑多平台支持,确保在iOS、Android及其他...

    友盟推送ANE,推送ANE

    4. 测试和调试:在不同平台上进行测试,确保推送功能正常工作,同时关注可能出现的兼容性问题。 5. 监控和优化:利用友盟提供的统计分析工具,了解推送效果,根据反馈进行策略调整。 总之,友盟推送ANE是一个方便的...

    移动MM ane 附源码

    同时,根据源码,开发者还可以定制自己的功能,或者对原生代码进行调试和优化。 7. 注意事项: 在使用ANE时,确保遵循Adobe Air和Android的开发最佳实践,例如处理权限请求、适配不同版本的Android系统以及进行充分...

    ANE调用原生对话框

    在描述中提到的博客链接(https://kboctopus.iteye.com/blog/1836688)可能提供了关于如何使用ANE来实现原生对话框的具体步骤和示例代码。虽然具体的内容没有给出,但通常这类教程会涵盖以下知识点: 1. **ANE的...

    支付宝ANE,支付宝

    支付宝ANE,全称为Alipay Native Extension,是一种针对Adobe Air开发的应用程序扩展,允许开发者在Air应用中集成支付宝的支付功能,实现iOS和Android双平台的支持。这个技术是为了解决移动应用中的付费问题,使用户...

    ane制作打包例子

    ANE,全称Adobe Native Extension,是Adobe Flash Platform用于扩展Flash Player和Adobe AIR功能的一种机制。它允许开发者使用原生代码(如Java、Objective-C或C++)创建功能,然后在ActionScript项目中调用这些功能...

    银联ANE

    银联ANE,全称为Air Native Extension,是一种专为Adobe AIR应用程序设计的技术,使得开发者能够将原生移动平台的功能,如Android和iOS上的银联支付功能,整合到AIR应用中。这个压缩包包含了银联ANE在双平台...

    ane在xcode上面的模板

    ANE,全称Adobe Native Extension,是Adobe Flash Platform的一部分,它允许开发者使用ActionScript与原生移动平台(如iOS和Android)进行交互,扩展Flash Player或Air的功能。在Xcode上创建ANE项目时,通常需要一个...

    ANE——Android本地编写

    ANE,全称Adobe Native Extension,是Adobe AIR(Adobe Integrated Runtime)的一个重要特性,允许开发者使用原生代码(如Java或Objective-C)来扩展Flash和Flex应用程序的功能。在Android平台上,ANE使得开发者能够...

    Flash串口通信ANE.rar

    由于串口通信涉及到硬件层面,因此在调试过程中可能需要配合串口终端软件来验证通信效果。 总结来说,Flash Air串口通信ANE是AS3开发者扩展应用程序功能,与物理世界交互的重要工具。通过学习和熟练掌握这一技术,...

    ane打包规范及开发技巧

    - 使用Adobe AIR的调试器进行运行时调试,查看ANE的日志输出。 - 在真实设备上进行测试,确保ANE在各种环境下的表现。 6. **性能优化**: - 尽可能减少ANE与Flash之间的数据交换,避免频繁的跨层调用。 - 使用...

    微信登录支付分享ANE

    **源码和打包环境Demo** 提供的源码和打包环境可以帮助开发者更好地理解ANE的工作原理,通过查看和调试源码,可以学习如何封装和调用微信的SDK,同时Demo可以快速验证功能的正确性,减少开发中的试错时间。...

    Android代码-安卓ane模板

    - 调试ANE较为复杂,可能需要使用到Android的Logcat输出或专门的ANE调试工具。 - 适当地封装和设计ANE接口,以保持其可扩展性和可维护性。 7. **应用场景**: - ANE常用于实现AIR应用无法直接支持的功能,如GPS...

    百度和谷歌广告的ane

    本文将深入探讨如何集成百度和谷歌的广告ANE(Adobe Native Extension)到Android和iOS应用中,以实现有效的广告展示和优化用户体验。 首先,我们需要理解ANE的含义。ANE是Adobe Air的扩展机制,它允许开发者使用...

    Android代码-魅族安卓平台ANE

    3. **错误处理**:正确处理可能出现的异常情况,提供友好的错误提示,以便于调试和问题定位。 4. **性能优化**:尽量减少ANE的内存占用和CPU消耗,提升用户体验。 总的来说,魅族安卓平台ANE是针对魅族手机优化的...

    ANE打包AIR扩展示例

    在本文中,我们将深入探讨如何使用Adobe AIR(Adobe Integrated Runtime)和ANE(AIR Native Extensions)进行打包,以创建本机扩展并提供一个完整的使用示例。ANE是AIR框架的一个强大特性,它允许开发者利用本地...

    admob ane android ios 稳定附例子详细教程

    【标题】"admob ane android ios 稳定附例子详细教程"涉及的主要知识点是Adobe Air应用开发中集成Google AdMob广告网络的过程,适用于Android和iOS平台。AdMob ANE(Adobe Native Extension)是一种扩展,它允许Air...

    AIR Native Extensions (ANE) Package

    - **调试困难**:由于涉及到多层交互,调试过程可能较为复杂。 **总结** ANE是Adobe AIR的重要组成部分,它提供了与操作系统深度集成的能力,使得开发者能够充分利用移动设备或桌面系统的特性。然而,这也意味着...

    Flex for Android第一个ANE(ActionScript Native Extensions)

    ANE的调试可能相对复杂,因为你需要同时处理ActionScript和Android两端的问题。可以使用LogCat查看Android的日志,同时在Flex应用中添加日志输出,以便跟踪问题。 九、跨平台支持 虽然我们在这里讨论的是Android ...

    Android新浪微博和QQ登录ANE

    《Android新浪微博和QQ登录ANE详解》 在移动应用开发中,集成社交网络登录功能已经成为一个不可或缺的特性。本文将深入探讨如何在Android平台上实现新浪微博和QQ的登录功能,特别是通过ANE(Adobe Native Extension...

Global site tag (gtag.js) - Google Analytics