最近公司需要開(kāi)發(fā)一款A(yù)ndroid網(wǎng)關(guān)缤沦,有一個(gè)功能是這樣的:
網(wǎng)關(guān)在出廠后需要根據(jù)實(shí)際情況需要配置一些參數(shù)橙喘,但是又不能有屏幕挑庶,有屏幕的話就可以跟手機(jī)一樣操作了陆爽。想過(guò)兩種方案什往,第一種,將網(wǎng)關(guān)設(shè)置成無(wú)線AP模式慌闭,然后通過(guò)socket傳參數(shù)别威;第二鐘就是將網(wǎng)關(guān)設(shè)置成web服務(wù)器。最后我否定了第一種方式驴剔,采用第二種省古,下面就是我的整個(gè)開(kāi)發(fā)學(xué)習(xí)過(guò)程。
首先丧失,感謝嚴(yán)振杰大神的一篇技術(shù)博文AndServer豺妓,一個(gè)Android端的web服務(wù)器,關(guān)于AndServer的性能等知識(shí)請(qǐng)移步大神的博客利花。
第一步科侈,在Module中添加依賴
annotationProcessor 'com.yanzhenjie.andserver:processor:2.0.4'
implementation 'com.yanzhenjie.andserver:api:2.0.4'
implementation 'com.yanzhenjie:loading:1.0.0'
implementation 'com.alibaba:fastjson:1.1.68.android'
implementation 'org.apache.commons:commons-lang3:3.8.1'
implementation 'org.apache.commons:commons-collections4:4.2'
在Project中添加依賴
dependencies {
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
}
將大神的sample移植進(jìn)來(lái)根據(jù)錯(cuò)誤修改一下,成功啟動(dòng)web服務(wù)炒事。
如果不需適配19以下API的童鞋不用往下看了臀栈。
但是當(dāng)我把demo程序燒寫進(jìn)Android網(wǎng)關(guān)的時(shí)候頻頻報(bào)錯(cuò)。很是納悶挠乳,后來(lái)終于找到了錯(cuò)誤权薯,是大神使用的com.yanzhenjie.andserver:api:2.0.4庫(kù)中StandardCharsets.UTF_8引用的 java.nio.charset.StandardCharsets包不支持 19 以下的API未状,然后我使用Charset.forName("UTF-8")替換了一下就行了蕉汪。我替換的庫(kù)在我上傳的demo中有。
替換我的庫(kù)的步驟
將我的api庫(kù)拷貝到工程目錄下节沦,然后修改工程目錄的settings.gradle
include ':app',':api'
然后在app中將下面庫(kù)注釋
implementation 'com.yanzhenjie.andserver:api:2.0.4'
添加下面代碼
implementation project(':api')
完美運(yùn)行卖怜!
最后附上代碼
GitHub:https://github.com/hwx95/AndServer