快應用生態已經發展的很是完善,今天我就快應用的安裝開發和統計打點,作一個總結,但願有所收穫,歡迎指導。node
1、安裝快應用開發工具
1.安裝nodeJs
2.安裝hap-toolkit
- 安裝hap-toolkit,命令行爲 npm install -g hap-toolkit
- 校驗:Hap –v (提示安裝成功便可)
3.安裝調試器
- 安裝調試器,經過下載地址:https://www.quickapp.cn/docCenter/post/69
- 下載好的apk文件是 (quickapp_debugger.apk) ,QQ或者微信都可傳送,建議QQ傳送安裝。
4.安裝預覽版
- 安裝預覽版,經過下載地址:https://www.quickapp.cn/docCenter/post/69
- 下載好的apk文件是 (quickapp_platform_preview_release_v1030.apk) ,QQ或者微信都可傳送,建議QQ傳送安裝。
- 按照目前的兼容狀況和各個版本市場佔有率來講,推薦1030, 快應用的最低版本薦1030,快應用是向上兼容不向下兼容。
5.安裝rpk文件過程
如圖所示,在手機上安裝並打開調試器webpack
![](http://static.javashuo.com/static/loading.gif)
- 掃碼安裝:配置 HTTP 服務器地址,下載 rpk 包,並喚起平臺運行 rpk 包
- 本地安裝:選擇手機文件系統中的 rpk 包,並喚起平臺運行 rpk 包
- 例qq接收:本地安裝→文件管理→內部存儲設備→tencent(騰訊)→QQfile_recv 這是對應文件的查找路徑
- 在線更新:從新發送 HTTP 請求,更新 rpk 包,並喚起平臺運行 rpk 包
- 開始調試:喚起平臺運行 rpk 包,並啓動遠程調試
2、建立項目和開發調試
1.手動建立項目
- 創建項目模板
- 安裝依賴
- npm install 安裝模塊到
node_modules
目錄
- 若是出現 Cannot find module '.../node_modules/hap-tools/webpack.config.js 報錯,則hap update -force ,進行升級便可,升級後無需從新npm install
- 編譯項目
- npm run watch 監聽
- npm run build 手動編譯打包
- 啓動http服務
- npm run server
- 手動設置端口 npm run server -- -- port 8080
- 手機預覽
- 將http服務的地址,複製到瀏覽器,生成二維碼,用手機掃一掃便可
- 項目簽名
- 凡是上線的項目,必需要作簽名,而且線上簽名不可更改。最好在第一次項目簽名後,將簽名進行保存。以防後期修改項目意外變動。未上線項目簽名還可更改,可是隻要上線後,簽名則不能更改,請注意。
- 手動簽名命令是 openssl req -newkey rsa:2048 -nodes -keyout private.pem -x509 -days 3650 -out certificate.pem
2.自動新建快應用工程
3.項目結構
4.項目編譯
- watch
- npm run watch
- 若是但願每次修改源代碼文件後,都自動編譯項目 IDE->調試-啓動調試
- build
- npm run build
- 最終產出生成 rpk 包-不可上線 IDE->Hap-生成rpk包
- 按照build的目錄結構
- build ---build:臨時產出,包含編譯後的頁面 js,圖片等
- build ---dist:最終產出,包含 rpk 文件。實際上是將 build 目錄下的資源打包壓縮爲一個文件,後綴名爲rpk,這個rpk文件就是項目編譯後的最終產出
- release
- npm run release
- 上線rpk包-必須作簽名
5.啓動http服務器
- 如圖所示 npm run server 啓動服務
![](http://static.javashuo.com/static/loading.gif)
- 複製地址到瀏覽器生成二維碼
- 可直接掃碼
6.項目簽名
- 第一種方式就是openssl命令形式
- openssl req -newkey rsa:2048 -nodes -keyout private.pem -x509 -days 3650 -out certificate.pem
- 第二種方式是經過快應用IDE 一鍵簽名
- 快應用ide- Hap -生成證書
![](http://static.javashuo.com/static/loading.gif)
按照如上簽名格式,給予一個demobash
- CH
- BeiJing
- BeiJing
- Company
- CompanyCn
- abc@163.com
7.manifest配置文件詳解
mainfest的配置文件內容較多, 這裏只列舉項目中咱們經常使用且須要注意的一部分服務器
- package-應用包名,例 com.demo.com
- name-應用名稱 ,例 某某應用
- icon-應用圖標 , 標準(192 *192),按照官方給予的icon爲標準
- versionName-應用版本名稱 例 1.0.0.0
- versionCode-應用版本號,若是已經上線,再次傳包,要更改,好比+1,每次均不一樣且不重複。
- minPlatformVersion-最小平臺 ,例1030
- features-接口列表,不聲明不能直接調用,全部須要調用的必須在這聲明
- config-系統配置信息
- designWidth 寬度比例,例1080 750經常使用手機適配寬度
- logLevel 日誌模式,重中之重,若是你沒踩過這個坑,你該高興,若是你各類打印不出現,想必就是這裏忘了改了, 通常是 debug模式。
- data 一些data配置。 好比後面咱們要說到的打點,就須要在這配置appkey
- router-路由信息
- entry:入口文件,好比home
- pages:其餘的路由文件
- display-UI顯示相關信息
- fullScreen , 是否全屏
- titleBar ,是否顯示titleBar
- menu ,是否顯示標題欄右上角菜單按鈕,若是須要本身的一些判斷邏輯,須要本身編寫
- pages ,各個頁面的顯示樣式,key 爲頁面名,與路由一致。路由寫了。這裏也要寫,要互相匹配上,不然編譯可能就會報一些莫名其妙的錯誤,單個頁面樣式可覆蓋總體頁面樣式哦。
- Bgcolor ,窗口背景色,若是你想改狀態欄的顏色,那就要修改這裏了。
3、快應用的差別性簡述
這裏就說一些標籤類的差別微信
- img和image
- img是單標籤 <img src="../images/icon.png" alt="頭像">
- image是雙標籤, <image class=「cosPicture」 src=「」alt="不見了"></image> 是的,雙標籤,別寫着寫着就丟了
- text 和p span div ,承載文字的標籤
- <text >文字</text>
- <text > <span>文字內部</span>文字外部</text>
- <p >文字</p>
- <span >文字</ span >
- <div>文字</ div >
- list和list-item
- stack
- 瞭解stack,在快應用的佈局上,應該是不會有太大問題。 stack顛覆了以往的標籤模式,採用層疊式佈局,如下代碼和圖片是我對stack的詳解
<stack class="stack">
<image class="image「 src="pic2.webp"> </image> <text class="title">stack容器排列方式爲層疊,每一個子組件按照前後順序依次堆疊,覆蓋前面的組件</text> <div class="wrap"> <image class="btn「 src="demo.png">
</image>
</div>
</stack>
複製代碼
![](http://static.javashuo.com/static/loading.gif)
相信看見這個圖你就能夠明白了。 他的結構都是一層一層羅列上去的,最外層是stack,stack裏面包含的image,text,div,這三者的佈局是,text顯示在image上面,div在text上面,而div內部的image,直接顯示。通俗來講,摞壓摞!
app
- border
- border-width+ border-style + border-color =border
- 例如 :
- border-bottom-width:3px;
- border-bottom-style:solid;
- border-bottom-color:#fff000
- 等同於border-bottom:3px solid #fff000;的確有點小累啊
- border-radius
- 左上角+右上角+左下角+右下角= 四角
- 例如
- border-top-left-radius:15px
- border-top-right-radius:15px
- border-bottom-left-radius:15px
- border-bottom-right-radius:15px
- 等同於 border-radius:15px
- 注意
- 圓角時只使用 border-width,border-[left|top|right|bottom]-width 無效
- 圓角時只使用 border-color,border-[left|top|right|bottom]-color 無效
- 快應用的flex佈局
- flex-direction
- column | row | column-reverse 1040+ | row-reverse 1040+
- 默認:row水平
- flex-wrap
- nowrap | wrap | wrap-reverse
- 默認: nowrap不換行
- justify-content
- flex-start | flex-end | center | space-between | space-around
- 默認:flex-start 左對齊 -上對齊
- align-items
- stretch | flex-start | flex-end | center
- 默認:stretch容器高度
- align-content
- stretch | flex-start | flex-end | center | space-between | space-around
- 默認:stretch軸線佔滿整個交叉軸
- align-self
- 1010+ auto | stretch | flex-start | flex-end | center | baseline
- 默認:auto繼承父元素的align-items屬性
4、快應用小坑總結
- 缺乏依賴
- Can’t resolve ‘less-loader’ ,證實缺乏 less-loader依賴,直接從新安裝依賴便可, 即 npm install less-loader ,其餘依賴同理。
- swiper中多圖片加載
- 部分機型(小米)出現一些圖片被切割現象。(不可恢復) 部分機型(華爲、oppo)滑動過快,出現圖片被切割現象,從新加載能夠還原頁面。多是手機渲染的問題。 圖片屬性: resize-mode: contain;相信版本的更新會修復和完善!
- 頁面調試
- 最初調試時注意版本號以及是否在同一網段。若是手機電腦都使用一個wifi 。可是電腦安裝了360wifi等,則會改變網段。請注意必須在同一網段 。
- input特例
- 獲取input的value值必須有change <input id="phone" type="text" placeholder="請輸入手機號碼" maxlength ="11" class="phone" value="{{phoneInput}}" @change="bindPhoneChange"/>
- 修改和獲取 this.$element('phone').value
5、快應用的打點總結
目前打點接觸的友盟和輕粒子兩家,都是很好的快應用統計平臺下面我針對統計打點,作一個簡單的對比less
- 友盟-流程和植入
- Appkey申請——登陸友盟+官網,在個人產品頁面添加新應用,而後獲取到Appkey
- 建立快應用並接入SDK——umengannlysis.es.min.js
- 項目導入SDK——將umengannlysis.es.min.js拷貝到您的快應用項目src/路徑下
- 添加依賴——npm install js-base64 --save 和 npm install md5 --save
- 爲SDK添加相應權限——
"features": [
{ "name": "system.storage"},
{ "name": "system.fetch"},
{ "name": "system.network"},
{ "name": "system.device"}
]
複製代碼
- appkey植入——
"config": {
"data":{
"umeng_appkey" : "5ad7fb4**********d0000d5",//umeng_appkey即爲上步申請的Appkey
}}複製代碼
- app.ux文件-初始化打點 ——
import './umenganalysis.es.min';
onCreate(){
$umeng_stat.init(this); //在onCreate函數中加入該行代碼,必須添加!!!
}複製代碼
- 輕粒子-流程和植入
- Appkey申請——註冊帳號並登陸 輕粒子官網 在「個人快應用」頁面點擊建立快應用,成功建立快應用後便可獲取到對應快應用 app_key。
- 建立快應用並接入SDK ——appStatistics.min.js 和 statistics.config.js
- 項目導入SDK ——把 sdk 中的 appStatistics.min.js、statistics.config.js 拷貝到項目中和 app.ux 同級的目錄
- 添加依賴 ——須要md5 (自帶)
- 爲SDK添加相應權限 ——
"features": [
{ "name": "system.fetch"},
{"name": "system.storage"},
{"name": "system.device"},
{"name": "system.network"},
{"name": "service.account"},
{"name": "system.shortcut"}
]
複製代碼
- appkey——在statistics.config.js 文件中
export default {
'app_key' : '0000000000000' //請在此行填寫統計平臺獲取的 app_kye
}
複製代碼
- app.ux文件-初始化打點 ——
import "./appStatistics.min.js"
onCreate(){
APP_STATISTICS.app_sta_init( this );//在onCreate函數中加入該行代碼,
//必須添加!!!}複製代碼
- 友盟和輕粒子打點自定義事件對比
- 輕粒子
onShow(){
APP_STATISTICS.page_show( this );
} 複製代碼
onHide(){
APP_STATISTICS.page_hide( this );
}, 複製代碼
APP_STATISTICS.track_event('事件id');複製代碼
APP_STATISTICS.track_event('homeLikeDot', countLikeStatus);複製代碼
APP_STATISTICS.track_event('homeShareDot' , {
shareEveId: item.id,
share_count_str: item.share_count_str
});複製代碼
- 友盟
onShow(){
$umeng_stat.resume(this)
}複製代碼
onHide(){
$umeng_stat.pause(this);
}複製代碼
$umeng_stat.trackEvent('事件ID'); 複製代碼
$umeng_stat.trackEvent('homeLikeDot',countLikeStatus); 複製代碼
$umeng_stat.trackEvent('homeShareDot' , {
shareEveId: item.id,
share_count_str: item.share_count_str
}); 複製代碼
- 備註
- 自定義事件打點接口及調用
- $umeng_stat.trackEvent(id,attr);
- APP_STATISTICS.track_event(id,attr);
- 該方法接收兩個參數,第一個參數 id 爲事件ID(必傳)。 第二個參數 attr 爲事件攜帶參數(非必傳)。 該參數能夠爲一個字符串( String )或者一個 JavaScript 對象 ( Object )。
- 差別性,輕粒子有一個錯誤分析
6、最後
感謝你們的閱讀,歡迎提出寶貴意見,但願本篇文章能夠給快應用開發的小夥伴,帶來一些新的體驗,謝謝!