不知不覺幾個月就過去了城侧,新項目已經(jīng)發(fā)了兩個大的版(其實已經(jīng)迭代了3版)疆偿,趁著項目新版剛剛上線閑下來的時間整理下用到的技術(shù)點咱筛。
整體架構(gòu)
采用MVP
推薦一個插件 MVPHelper可以快速生成mvp java文件(接口定義實現(xiàn)類),不過類名字后綴是固定的杆故,建議下載代碼自己重寫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ò)
項目開始時研究對比了Volley 和 Retrofit处铛,最后選擇了Retrofit + okhttp 3, 結(jié)合Rxjava一起使用
Retrofit 2 + OKHttp 3
事件
注解
butterknife
Android Butter Knife 框架——最好用的View注入
后來發(fā)現(xiàn)如果使用kotlin語言開發(fā)android沙热,注解會更簡單叉钥,一句引用就搞定了,直接使用xml布局文件的空間id作為變量
import kotlinx.android.synthetic.main.activity_detail.*
篙贸。投队。。
webView.loadUrl(url)
數(shù)據(jù)庫
Realm
realm的發(fā)展很快爵川,現(xiàn)在已經(jīng)不僅僅在移動平臺敷鸦,也開始涉及到服務(wù)器端。
https://www.infoq.com/news/2014/10/Realm-android
關(guān)于realm的坑不少寝贡,這里記錄一個項目中關(guān)于數(shù)據(jù)庫升級的扒披,一定要實現(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)計分析與埋點
友盟統(tǒng)計
GrowingIO
推送服務(wù)
Jpush極光推送
一開始使用的百度推送(決定于服務(wù)器,之前的項目使用的極光)圃泡,對接完成后會發(fā)現(xiàn)推送收不到的問題碟案,目前各個手機(jī)廠商對于手機(jī)的權(quán)限越來越重視,大部分后臺服務(wù)必須手動開啟權(quán)限后才能使用颇蜡,再加上百度推送依賴自家軟件強(qiáng)(測試的時候開了百度的幾個應(yīng)用都不行了价说,知道開啟百度地圖),最終還是更換到了機(jī)關(guān)推送
還有一點吐槽的就是百度的文檔和sdk集成方式還不如一些小公司做的簡潔风秤,呵呵鳖目!
調(diào)試
Stetho
[Facebook的一個開源調(diào)試工具](Stetho: A new debugging platform for Android)
持續(xù)集成
為了方便測試,采用了Jenkins + gradle + fir.im自動打包上傳到fir.im
http://blog.csdn.net/cunxinaimei/article/details/52540197
APK加固
我們選擇的是360加固助手缤弦,你可以在線加固领迈,也可以下載加固助手進(jìn)行加固,我們寫了一個自動加固打包腳本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加固賬號 密碼
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)行測試
最后打個廣告狸捅,介紹下APP
51建設(shè)”是服務(wù)于工程建設(shè)的一站式移動采購平臺,致力于為工程項目施工方提供高質(zhì)量低價格的商品累提,高額低息的分期還款方式尘喝,直達(dá)工地的物流服務(wù)等全方位采購體驗。
51建設(shè) 應(yīng)用寶