第九章競品技術分析
開機速度
- splash廣告邏輯,首次載入的圖片為應用放在res資料夾下面幾個資料夾裡面的圖片,同時會去呼叫介面獲取下一次開啟的時候要顯示的圖片url,並快取圖片;下次進入該介面顯示圖片並繼續訪問接下來一次的圖片,為了保證開啟速度,這個網路請求務必非同步處理。
- 引導圖,不要超過4頁。動畫可原生實現,可gif,可視訊來實現。
- 進入首頁之前進行地理位置的定位,保證進入首頁顯示的資料為當前城市的資訊。
- app首頁設計,儘可能多的將所有產品展示在首頁,會有廣告,搜尋欄,滾動條。
上面為使用者可見的資料,一些不可見資料:
- umeng打點,統計啟用數。
- 註冊推送。
- 根據推送協議進行頁面跳轉。
- 初始化崩潰收集機制,比如崩潰資訊上傳等。
為了加快splash的載入速度建議客戶端這邊儘可能避免耗時間的任務操作
html5頁面開啟速度
- 將html5資料打包進zip包裡面去,每次從本地zip解壓檔案裡面載入html5資料;新增或者修改html5資訊怎麼辦,進行版本控制,如果版本一致,載入本地解壓資料,如果不是載入新的zip包的解壓資料;其中公共的,不變化的html5資料壓縮為公用的zip壓縮包並下發,那麼每次下載的時候只下載新增和修改的那部分html5檔案的壓縮包。在上個頁面設定不可顯示的webview載入html5資料,在下個webview載入的時候直接從本地快取檔案裡面去載入。
安裝包大小
- app安裝包一定要小,或者實現增量更新,減少對使用者流量的不必要耗費。
- 圖片,音訊,視訊檔案應該在前期提供的時候就儘可能處理的體積足夠小。
我的觀點:
對於分享,推送,定位,地圖等第三方服務整合的時候,能用微信官方,新浪官方自己去實現就儘可能自己去實現,因為團隊裡面有人為了實現分享整合umeng分享功能,導致應用大小增加4M知道,其中包括很多無用的程式碼和資原始檔,請慎重。
png和jpg的使用場景
- 同背景圖片,png載入速度大於jpg,手機會對png進行硬體加速。
- 網路圖片採用jpg圖片比較合適。
- 廣告圖,引導圖採用jpg比較合適。
splash圖片,引導圖,背景圖
- splash圖片現在在300-500k之間。
- 引導圖可以將背景圖片和前景圖片分開,實現背景圖片或者前景圖片的可重用性。
- 背景圖限制在1M以內,並沒必要png格式,jpg格式就行了。
表情包的方案同上面html5頁面開啟速度的論述,都是通過zip來進行增量更新。
清理無用程式碼和資原始檔
- eclipse時代用undector可以實現無用程式碼的檢測,android studio暫時沒發現,無用資原始檔可以通過link來實現無用資原始檔,無用style等檢測,但是還是需要手動進行刪除。
- 通過使用proguard來配置混淆程式碼檔案來清理無用的程式碼,減少apk的大小。
效能優化
- 網路請求優化:針對2G,3G,4G,wifi環境伺服器端配置不同的伺服器,分別接入移動,聯通,電信的專線,並在客戶端進行配置,app登入獲取遍歷訪問2G,3G,4G,wifi的針對性域名並判斷出最佳的訪問素的的域名,並在一段時間內訪問該域名。為了避免搶佔同一伺服器的資源,可以在伺服器端設定針對的優先順序。
- 拋棄使用http+json,轉而使用tcp+protobuf。
頁面跳轉邏輯解耦
我個人專案裡面是寫個路由類,所有的跳轉邏輯都寫在這個路由類裡面,作為所有activity介面跳轉中間控制層。
作者利用反射也提供了一個不錯的思路:
import android.app.Activity; import android.content.Intent; public abstract class BaseActivity extends Activity { public void navigateTo(final String activityName, final Intent intent) { //在這個位置執行頁面打點的操作,這裡可以利用到activityName Class<?> clazz = null; try { clazz = Class.forName(activityName); if (clazz != null) { intent.setClass(this, clazz); this.startActivity(intent); } } catch (final ClassNotFoundException e) { return; } } }
activity的常量類:
public class ActivityNameConstants { public final static String SecondActivity = "com.example.navigator.SecondActivity"; }
demo:
import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.Button; public class MainActivity extends BaseActivity { Button btnNav1, btnNav2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnNav1 = (Button) findViewById(R.id.btnNav1); btnNav1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivity(intent); } }); btnNav2 = (Button) findViewById(R.id.btnNav2); btnNav2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.putExtra("name", "Jianqiang"); navigateTo(ActivityNameConstants.SecondActivity, intent); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
個人認為各有優缺點,還是看自己的偏好吧。
打點統計
頁面打點:放在跳轉邏輯程式碼前面;
事件打點:打點邏輯寫在基類控制元件裡面,比如寫onclick等觸發事件的基類,並在這些基類裡面寫事件打點的邏輯。
多渠道打包
我一般是上傳到360,百度等加固平臺驚醒加固打包,然後利用平臺的多渠道打包工具進行批量多渠道打包,書裡面講的是python程式來實現,你可以去github找找,這類程式碼很多。
class.dex的拆與合
主要還是處理65536的問題,2種方案:
- 外掛化:獨立模組做成單獨的apk,使用dexClassLoader來進行載入。
- dex分包:主要利用multidex來實現class.dex的拆分。
模組化拆分
android程式碼的模組化拆分:
- 將常用的工具類程式碼,封裝程式碼,第三方程式碼單獨封裝為基礎類庫。
- 指定資原始檔命名規範,並以模組名稱作為字首來進行命名。
- 模組間傳遞的資料以json或者單獨拉出來公用的bean作為一個庫引用。
版本策略:
一般情況下版本名稱為3位:比如6.0.0
第一位為大版本更新,第二位用於小版本迭代,第三位作為緊急發版。
相關文章
- 競品分析
- 《App研發錄:架構設計、Crash分析和競品技術分析》— Android書籍APP架構Android
- 房天下APP競品分析APP
- 競品分析--近來感悟
- [技術] CDM技術分析和產品選擇建議
- 唯品會競爭風險分析
- 我的產品/競品分析鍛鍊記錄(分析產品核心)
- 電影票App競品分析報告APP
- 競品商業情報收集和競品商業情報分析該怎麼做?
- 網易雲閱讀競品分析報告
- 從0認識競品分析(附實戰分析抖音)
- 區塊雜湊競猜遊戲系統開發技術分析遊戲
- 短影片獲客系統市場分析和競品分析
- NFT藝術品鑄造交易競拍商城dapp系統開發技術服務公司APP
- 區塊雜湊競猜遊戲系統開發技術原理分析遊戲
- 大資料競賽技術分享大資料
- 分析技術
- Cocos 技術派:實時競技小遊戲技術實現分享遊戲
- 618前端競品分析研究(互動篇)前端
- vmware技術及產品
- 戰術競技遊戲的吃雞之路遊戲
- 那些值得你試試的 Android 競品分析工具Android
- NFT藝術品鑄造交易競拍DAPP商城系統開發功能分析搭建APP
- 雜湊趣投競猜遊戲專案系統開發(技術說明分析)遊戲
- 《和平精英》“奇趣派對”版本多點發力 再度拉高戰術競技品類天花板
- 技術宅找女朋友的技術分析
- xMIS需求分析技術
- IPIDEA分享|大資料技術助力消費者分析,提高市場競爭力Idea大資料
- 交換技術:NGN核心軟交換技術分析(轉)
- 技術“破圈”核心競爭力迭代路徑
- [技術討論]軟體的產品、技術、標準對話
- 產品生命週期(PLM)發展歷程及技術核心分析指導
- 品鈦產品技術怎麼樣,品鈦RPA大放異彩
- 產品分析:AFK2——商業化的藝術品
- 技術人怎麼“打通”產品業務?
- SAP產品增強技術回顧
- 產品資料管理(PDM)技術概述
- 產品經理要懂多少技術?