51建設(shè)Android版一些技術(shù)整理

不知不覺(jué)幾個(gè)月就過(guò)去了,新項(xiàng)目已經(jīng)發(fā)了兩個(gè)大的版(其實(shí)已經(jīng)迭代了3版),趁著項(xiàng)目新版剛剛上線閑下來(lái)的時(shí)間整理下用到的技術(shù)點(diǎn)。

整體架構(gòu)

采用MVP

Android官方MVP架構(gòu)示例項(xiàng)目解析

推薦一個(gè)插件 MVPHelper可以快速生成mvp java文件(接口定義實(shí)現(xiàn)類(lèi)),不過(guò)類(lèi)名字后綴是固定的,建議下載代碼自己重寫(xiě)Idea插件,打包使用

Android Support包

“com.android.support:appcompat-v7:25.1.0", 
 "com.android.support:design:25.1.0", 
"com.android.support:recyclerview-v7:25.1.0",
"com.android.support:cardview-v7:25.1.0",
"com.android.support:support-v4:25.1.0",
"com.android.support:multidex:1.0.1",
"com.android.support:support-core-utils:25.1.0",

第三方軟件包

圖片

Fresco
facebook出品,值得推薦

網(wǎng)絡(luò)

項(xiàng)目開(kāi)始時(shí)研究對(duì)比了Volley 和 Retrofit,最后選擇了Retrofit + okhttp 3, 結(jié)合Rxjava一起使用

Retrofit 2 + OKHttp 3

事件

EventBus

注解

butterknife
Android Butter Knife 框架——最好用的View注入

后來(lái)發(fā)現(xiàn)如果使用kotlin語(yǔ)言開(kāi)發(fā)android,注解會(huì)更簡(jiǎn)單,一句引用就搞定了,直接使用xml布局文件的空間id作為變量

import kotlinx.android.synthetic.main.activity_detail.*
。。。
webView.loadUrl(url)

數(shù)據(jù)庫(kù)

Realm
realm的發(fā)展很快,現(xiàn)在已經(jīng)不僅僅在移動(dòng)平臺(tái),也開(kāi)始涉及到服務(wù)器端。
https://www.infoq.com/news/2014/10/Realm-android

關(guān)于realm的坑不少,這里記錄一個(gè)項(xiàng)目中關(guān)于數(shù)據(jù)庫(kù)升級(jí)的,一定要實(shí)現(xiàn) RealmMigration

public class MyMigration implements RealmMigration {
    @Override
    public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
   
        // DynamicRealm exposes an editable schema
        RealmSchema schema = realm.getSchema();

//        if (oldVersion == 0) {
//            schema.create("TestBean")
//                    .addField("name", String.class)
//                    .addField("age", int.class)
//            oldVersion++;
//        }

        if (oldVersion == 0) {
            schema.get("TestBean")
                    .addField("version", int.class);
            oldVersion++;
        }
    }
}

統(tǒng)計(jì)分析與埋點(diǎn)

友盟統(tǒng)計(jì)
GrowingIO

推送服務(wù)

Jpush極光推送
一開(kāi)始使用的百度推送(決定于服務(wù)器,之前的項(xiàng)目使用的極光),對(duì)接完成后會(huì)發(fā)現(xiàn)推送收不到的問(wèn)題,目前各個(gè)手機(jī)廠商對(duì)于手機(jī)的權(quán)限越來(lái)越重視,大部分后臺(tái)服務(wù)必須手動(dòng)開(kāi)啟權(quán)限后才能使用,再加上百度推送依賴(lài)自家軟件強(qiáng)(測(cè)試的時(shí)候開(kāi)了百度的幾個(gè)應(yīng)用都不行了,知道開(kāi)啟百度地圖),最終還是更換到了機(jī)關(guān)推送

還有一點(diǎn)吐槽的就是百度的文檔和sdk集成方式還不如一些小公司做的簡(jiǎn)潔,呵呵!

調(diào)試

Stetho
[Facebook的一個(gè)開(kāi)源調(diào)試工具](Stetho: A new debugging platform for Android)

持續(xù)集成

為了方便測(cè)試,采用了Jenkins + gradle + fir.im自動(dòng)打包上傳到fir.im

http://blog.csdn.net/cunxinaimei/article/details/52540197

APK加固

我們選擇的是360加固助手,你可以在線加固,也可以下載加固助手進(jìn)行加固,我們寫(xiě)了一個(gè)自動(dòng)加固打包腳本Mac版(本人很懶,能省事就省事)

Paste_Image.png

腳本代碼:

#!/usr/bin/env bash

echo "------ clean  apks ..."
rm -rf ../biuild/apk
echo "------ clean  apks  finished!"

echo "------ build  running..."
gradle  clean assembleDev -b ../build.gradle
echo "------ build  finished!"


java -jar ./jiagu.jar -login 360加固賬號(hào) 密碼
java -jar ./jiagu.jar -importsign 簽名文件 密碼 別名 密碼
java -jar ./jiagu.jar -showsign
java -jar ./jiagu.jar  -importmulpkg ./渠道列表.txt
java -jar ./jiagu.jar  -showmulpkg
java -jar ./jiagu.jar  -showconfig

mkdir -p ../build/apk
java -jar jiagu.jar  -jiagu ../app/build/outputs/apk/51jianshe-dev-release_*.apk ../build/apk -autosign -automulpkg

#curl -F "file=@/yourpath/yourapp.apk" -F "uKey=userkey" -F "_api_key=apikey" https://www.pgyer.com/apiv1/app/upload

最后一句可以直接把加固好的apk上傳到蒲公英進(jìn)行測(cè)試


最后打個(gè)廣告,介紹下APP

51建設(shè)”是服務(wù)于工程建設(shè)的一站式移動(dòng)采購(gòu)平臺(tái),致力于為工程項(xiàng)目施工方提供高質(zhì)量低價(jià)格的商品,高額低息的分期還款方式,直達(dá)工地的物流服務(wù)等全方位采購(gòu)體驗(yàn)。
51建設(shè) 應(yīng)用寶

splash_five.png

splash_four.png
splash_one.png
splash_three.png
splash_two.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容