本人不是专业的android开发者,最近有个项目要求用android开发一个控制平板电脑的程序,之前我们有mina开发的控制客户端,现在要移植到android中,出现了若干问题,现总结下:
1.第三方jar包的使用
如果在Java Build Path中使用Add External JARs这种方式,运行时会有找不到类的错误(我的上面有,如果你没出现,恭喜你),上网查了几种方式,我这边运行通过的方式如下:
在项目中建个lib文件夹,把需要的jar包复制进去,在
Java Build Path中使用
Add JARs ,选择项目下的lib包中的jar文件即可,发布apk文件时会自动打包进去。
网上还有一种方式,在
Java Build Path
中使用 Add Library, 选择 User Libaray -> 新建一个User Libaray的方式,这种我没试,有通过的同志们说下。
本人推荐项目建文件夹的方式。
2. mina包的使用之日志
我使用的是mina2.0.2,如果没有特殊需求,使用mina-core-2.0.2核心包就可以了。
关键点在这里:
mina中使用slf4j作为日志框架(不知道slf4j的同志们请google下), 这个只是一个日志框架,是没有实现的,你需要一个具体的实现,比如说log4j(具体使用方法我就不说了,很简单,实在不知道给我发站内信)。使用mina必须把slf4j的jar包也引入,那么你也要引入一个实现日志的包,在普通客户端开发这个不是问题,但在android中,已经有了一个日志实现,而且配合logcat,其功能是很强大的,那么怎么配合slf4j来使用呢?(ps:slf4j是必须的,mina要用到)
这里就要感谢网络了,我在slf4j的官网居然发现有一个slf4j-android的jar包
http://www.slf4j.org/android/ 同志们可以去看看,(强烈推荐去看看)下载这个包,引入到项目中,注意啊,这个包是不能和slf4j-api包共存的,我的解决方式是只使用slf4j-android这个包,其余的日志相关的包都删除,(其实别的日志包也没什么用,我们有android提供的日志类),这样mina就不会报日志类找不到的错误了,而且日志都输出到logcat,调试程序也方便。这方面我们要感谢slf4j,如果没有这个实现,mina使用就麻烦了,我能想到的方式就只有更改mina源代码,重新编译了,当然你也可以自己提供日志实现类。
android的日志类中有一个限制,tag不能超过23个字符(你不知道tag,我也不知道该怎么说了...),slf4j也给解决了,官网上面有介绍。(再建议看下官网)
3. mina包的使用之NioSocketConnector
在android2.1中好像没有问题,但在android2.2中会有Bad address family的异常,这个异常是由于IPv6引起的,这个bug已经在 http://code.google.com/p/android/issues/detail?id=9431 (同志们看看吧),android2.2不支持IPV6,在使用nio 时会有问题,有建议是使用io,可以解决,但我们如果一定要使用nio呢,解决方法如下:
设置系统属性: System.setProperty("java.net.preferIPv6Addresses", "false"); 就这一行解决问题,有同志可能要问,在哪加啊?系统开始的地方加,比如说是service,在onCreate()中启动mina前加上就行,activity中也一样。
写的有些啰嗦啊,我也是android新手,也是写给新手看的,我尽量说的明白点,高手不要喷我,如果还有不明白的地方,站内信联系,也可以加我QQ:287586925. 同时也希望android大牛们把这方面的问题说的清楚点。
分享到:
相关推荐
在Android开发过程中,有时我们需要利用网络通信框架进行服务器与客户端之间的数据交互,Mina就是其中的一个...通过学习和实践`TestMinaServerQQ`和`TestMinaAndroid`,你将更好地掌握在Android环境中使用Mina的技巧。
在实际使用`Android-MinaSocket` 时,开发者需要注意以下几点: - **连接管理**:保持长连接需要考虑网络波动、设备休眠等因素,确保在异常情况下能自动重连。 - **心跳机制**:为了检测连接是否断开,通常需要...
在实际使用中,我们需要关注中文乱码问题的解决、保持Socket连接的稳定性和可靠性,以及如何在Android Studio环境中有效地整合和管理MINA框架。通过不断实践和学习,我们可以充分利用MINA的强大功能,提升Android...
下面将详细介绍Mina框架在Android中的应用及其核心概念。 1. **Mina框架基础** Mina源于Java平台,但在Android上同样适用。它提供了事件驱动的非阻塞I/O模型,提高了网络通信的效率。Mina的核心组件包括Acceptor...
本教程将深入探讨如何在Android项目中集成MINA框架,以及如何解决在实际开发中可能遇到的问题,如中文乱码和消息接收不全等问题。 1. **MINA框架基础** - MINA的核心是其异步事件驱动模型,它允许开发者通过回调...
**Android使用Mina与服务器通信Demo** Mina(Minimum Asynchronous Network)是一个高度可扩展的、高性能的网络应用开发框架,常用于构建基于TCP和UDP的网络应用,如服务器和客户端。在Android平台上,Mina可以帮助...
- **Android的权限管理**:在Android中使用MINA需要获取INTERNET权限,如果需要在后台运行,还需考虑WAKE_LOCK权限。 - **线程管理**:MINA默认使用多线程处理连接,但在Android中需要谨慎使用线程,以免影响UI...
在Android开发中,Mina库是一个非常强大的网络通信框架,它允许开发者构建高性能、高效率的网络应用程序。本文将深入探讨如何使用Mina库在Android客户端与Java服务器之间实现UDP(用户数据报协议)的数据交互。 UDP...
因此,这个压缩包可能是为了帮助开发者理解如何在Android应用中使用MINA来构建可靠的UDP通信服务。 压缩包内的“udp”文件可能包含了实现上述功能的Java源代码,可能包括了ServerBootstrap配置、FilterChain构建、...
如果是一个源码项目,开发者可以通过阅读和修改代码来学习MinaServer的实现原理,理解如何在Android环境中配置和使用Apache Mina框架。如果是APK文件,用户可以直接安装到兼容的Android设备上运行和测试MinaServer...
Mina(MINA,全称Java Minimal Asynchronous Network Library)是一个...在提供的文件"MinaServer"和"MinaTcp"中,可能包含了实现这些功能的详细代码示例,你可以参考它们来进一步了解和实践Mina在Android上的使用。
提供的"app"可能是一个使用mina的Android应用示例,它展示了如何在Android环境中集成mina并实现网络通信。这个app可能包括了服务端和客户端两部分,服务端使用mina监听特定端口,接收客户端连接,并处理发送过来的...
根目录下的《Mina2.0学习笔记》应该包含了详细的教程和示例,涵盖了Mina的基本概念、配置、过滤器使用、协议处理等方面,是学习和理解Mina框架的重要参考资料。 总之,Android Java Socket框架Mina2.0提供了一个...
在Android中使用MINA,你需要将提供的jar包导入到你的项目中。具体步骤如下: 1. 将`mina`目录下的所有jar包复制到你的Android项目的`libs`目录下。 2. 在Android Studio中,右键点击`libs`目录,选择`Add as ...
MINA(Multipurpose Infrastructure for Network Applications)框架是一个用于构建高性能、高可...但要注意,由于MINA主要设计为服务器端框架,因此在Android这样的移动设备上使用时,需要考虑资源管理和功耗问题。
在使用"Android Mina UDP 所需jar包"时,你需要将压缩包解压后将其中的jar文件添加到Android项目的libs目录下,然后在项目的build.gradle文件中添加对应的依赖。例如,如果你的jar文件名为`mina-core.jar`,你可以在...
在Android中使用Mina,开发者需要考虑以下几个关键点: 1. **依赖管理**:确保正确地引入Mina库,这可能涉及到在build.gradle文件中添加本地库引用或者通过Maven或JCenter仓库获取。 2. **权限设置**:在...
标题中提到的"android mina 即时通讯 服务端客户端代码",意味着我们将探讨如何在Android客户端和服务器之间建立这样的通信链路。在服务端,你需要创建一个基于Mina的SocketAcceptor,监听特定的端口(如描述中提到...
XML和JSON作为常见的数据交换格式,经常在分布式系统中使用。Mina可以通过集成如JAXB(Java Architecture for XML Binding)或Jackson这样的库,将XML和JSON文档转换为字节流进行传输。同样,接收端可以反向操作,...
在Android项目中使用MiNa,需要在`build.gradle`文件中添加依赖,例如: ```groovy dependencies { implementation 'org.apache.mina:mina-core:2.1.5' } ``` 确保Maven仓库被正确配置,并同步项目。 ### 3. ...