不知不覺(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
事件
注解
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版(本人很懶,能省事就省事)

腳本代碼:
#!/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)用寶




