android中發開帶頁面sdk時需要注意的兩點

近期個人由於公司需求,開發一個簡單的sdk。其實sdk中並沒有什麼大批量的處理邏輯,只是提供幾個簡單的接口。但是裏面比較特殊的是需要提供一個頁面,這個頁面用於顯示一些接口回調的數據。
其實sdk大家一看到,不由自主的會想到是一些提供數據,或者提供一些封裝好的方法或者邏輯算法等。但其實sdk 面向很廣泛。可以做一切開發中能做到的。但是由於他比較偏向於邏輯,所以屬於抽象層,一般實現起來會比較費腦力,但是我想如果經常開發這種接口 的人肯定就不會有這種感覺了。
一開始寫的話我就在想寫一個sdk那裏面至少得有點內容吧。就是怎麼說也得提供或者封裝一些複雜的算法,或者邏輯。但是最終令我想不到的是,需要我的知識一個空框架,並不需要提供很複雜的功能。
1、 在sdk 中如果需要用到一些資源文件,例如一些預先裝好的圖片素材等等,或者一些預先寫好的佈局,這些資源我們平時開發都是直接通過id來獲取的,但是如果封裝成sdk的話。你的這些id由於編譯的機制值是會變的。所以我們不能通過正常的方式來獲取這些資源文件。在此我們需要通過java中的反射機制來獲取這個id,通過傳入的上下文,資源所屬類型例如(id,layout,values、drawable、attrs、等等),接下來就是具體的名字了。其中上下文最主要的就是來獲取包名。sdk 我們一般肯定是需要封裝成jar 包的,如果在eclipse 中很簡單,對工程進程導出,爲jar。選擇所需要的文件主要是一些源文件,資源文件、第三方的包等等。如果實在as中打包的話我們可以再gradle中添加task 然後通過執行這個task 導出jar 。最後我們將這個jar 引入我們的工程中,先通過初始化,然後一步步來完成接口的調用。但是我在完成demo引入jar包的時候出了問題,就是打開這個頁面的時候顯示的一直是demo中定義的佈局。並不是我們在sdk 中預先寫好的頁面。切會有一些控件轉換出錯的問題。當時解決了很久,愣是找不到問題所在。最終通過請教別人得知。
2、我們在sdk中用到的靜態頁面需要導入到demo的工程中,不然資源還是會找不到的。然後按照這種方式試了一下,發現的確能達到這種效果。
其中還有一個需要注意的地方就是你所打開的頁面必定是一個activity 那麼你也需要在你的demo的mainfest頁面進行註冊,不然這個頁面會找不到的。
其實我所說的這種類型的sdk的開發還是挺常見的。比如一些第三方的支付sdk 都會用到他們自己定義的支付頁面我們需要跳轉,然後裏面會用到向我們一樣的註冊頁面。引入佈局等等。
最後想說的是,當你覺得這樣比較麻煩的時候我們還有一種方式,是提供動態的頁面。就是所有的控件等,都是通過動態的代碼生成,這樣就不需要這些資源文件,也就不會出現上面的問題了。
但是動態頁面不好的地方就是在於頁面我們難度相對較大。如果很複雜的頁面我們建議還是通過靜態頁面相對比較簡單。

發佈了34 篇原創文章 · 獲贊 88 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章