最近在接手一个Android开发项目,要求手机作为热点,接入ARM设备,作为Server通过TCP/IP协议与下位机Socket通讯,简单通过Service实现了封装Socket函数并保持后台连接,但在收发数据时需要对接相应的协议,这一部分协议是由下位机决定的,里面包含了一些结构体Struct和联合体Union,而Java并没有结构体和联合体以及指针的概念。
咨询伙伴公司同事,说可以使用第三方库Netty。于是着手将Netty加到自己的项目中,第一步就遇到了麻烦。
1、在Android Studio中需要导入jar包,由于习惯了使用Gradle添加依赖,直接从
https://mvnrepository.com/artifact/io.netty/netty-all/4.1.31.Final
查看到Netty的Gradle脚本添加到Build.gradle里
implementation group: 'io.netty', name: 'netty-all', version: '4.1.31.Final'
发现直接添加并sync同步会报错,查看log是在jcenter和google里并没有这个包,再一顿搜索更改maven的默认url,发现好多博客写的不明不白。
于是简单记录一下,看到网站上包的url地址为
http://central.maven.org/maven2/io/netty/netty-all/4.1.31.Final/netty-all-4.1.31.Final.jar
可以确定maven仓库的地址为
http://central.maven.org/maven2/
而gradle可以通过解析implementation的地址来获得正确的jar地址,于是在底层的gradle里修改为
buildscript {
repositories {
google()
jcenter()
maven{ url 'http://central.maven.org/maven2/'}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
并且在app/gradle里添加
implementation group: 'io.netty', name: 'netty-all', version: '4.1.31.Final'
再次sync同步,ok,正确无报错。
在程序里import一下
import io.netty.
可以直接tab提醒,问题解决。