1. 程式人生 > >Android studio匯入Netty(修改maven倉庫Url)

Android studio匯入Netty(修改maven倉庫Url)

最近在接手一個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提醒,問題解決。