想深入了解android動態載入技術,需要掌握什麼基本技能?

時間 2021-05-30 02:29:20

1樓:走失的貓

我用的是乙個叫apkplug的框架,這個框架能提供後台託管,這是我覺的比較方便的地方,不用我們自己搭伺服器,而且外掛程式間通訊支援的也比較好

2樓:

最近一直在做外掛程式化相關的工作。現在最常見的方案就是來自阿里的 Atlas 和 360 的 DroidPlugin 了。按照我的理解,對於當前的大多數應用來講,可能 Atlas 會更適合一些,因為它允許外掛程式與宿主之間,甚至是外掛程式之間可以有互動;而 DroidPlugin 的思想會更先進,可想象空間更大一些,理論上它可以啟動任何乙個第三方應用,比如虛擬化,可參照物就是 LBE 的平行空間。

Atlas 並沒有開源,DroidPlugin 已開源,我們現在採用的方案是基於 Atlas 的,有興趣的可以看看 ACDD ,核心思想都是一樣。

不管是外掛程式化,還是熱補丁,現在的方案都比較多,相應方案在 GitHub 上也都能找得到 demo ,Google 一下,也有不少文章,然而停留在 demo 和文章介紹階段,始終與實際的生產開發有較大的距離,尤其是大部分文章還只是紙上談兵,寫文章的十之七八恐怕都沒有真正的在自己的應用裡實踐過,而外掛程式化最困難的部分就是實踐過程中遇到各種細節和適配問題,還有對當前開發模式的影響也是怎麼都繞不過去的問題。下面我大致列一下我們在實踐過程中遇到的一些問題。

外掛程式怎麼去引用宿主裡的類?

外掛程式怎麼去引用宿主的資源?

外掛程式化要給每個外掛程式進行資源分段,該如何進行資源分段?

為了讓業務的同學更容易接受,怎麼處理宿主的類和資源?

在引用宿主的資源的時候,預設可用的 context 在外掛程式化裡是否依然可用?

不同的資源型別,引用和處理方式是否相同?

外掛程式之間共用的一些類,是放在宿主裡,還是在外掛程式裡開放出介面,該怎麼樣去考量?

外掛程式如何去開放介面,讓其他外掛程式引用?

外掛程式開放出了介面,其他外掛程式又該怎樣去引用?

不同的外掛程式都要引用同乙個類和同乙個資源,類和資源重複了該怎麼辦?

載入各個外掛程式時,怎麼樣知道各個外掛程式的資訊?

外掛程式版本該如何去管理?

怎樣實現 debug 和 release 開發的宿主和外掛程式打包?

應用啟動時要載入那麼多外掛程式,怎麼加速第一次啟動?

外掛程式引用的宿主的類和資源發生改變,難道每次都要去每個外掛程式裡手動修改嗎?

四大元件的免註冊是怎麼回事?

四大元件免註冊了,是否還需要合併每個外掛程式的 AndroidManifest ?

在不允許手動拷貝的情況下,如何合併各個外掛程式的 AndroidManifest ?

宿主的方法數超過 65535 了,該怎麼辦?

混淆問題怎麼去處理?

適配,還是適配。

實際操作中,因為對開發的影響是不可避免的,多虧了有 gradle ,通過定製 gradle 指令碼,外掛程式,甚至是 SDK 元件,很多事情我們可以做到自動化,當然,凡事有利就有弊,在這個過程中,會發現相當多的正常開發遇不到的 gradle 的『bug』,因此,假如 gradle 玩不轉,會有很多麻煩。目前大致能想到的就這麼多,以後有想到了再補充吧。

如何深入了解python原理?

蘇維 這些都不了解,只能說明工程實踐不夠。裡面很多東西不僅py,對大部分語言都是同樣的,可以推廣的。不僅py實踐不夠,可能唯一會的語言就是py。另外 會了 一種程式語言其實是個很混淆的概念,不實際了解別人到底 會了 什麼,就扣帽子說人吹牛,也不是什麼好行為。乙個個真不拿20年才能精通c當梗啊。上面是...

怎樣深入了解金光布袋戲

玦殘何 看劇呀,可以開著彈幕看,多看幾集就入門啦。其他的資訊渠道的話官博有新人物的介紹,fb上會放一些幕後花絮啥的,或者跑跑線下見面會 黑影中的小布 能啃的下去的話去啃黑白龍狼傳,黑白龍狼傳是新金光第一部劇,把絕大多數既有的人物關係都給打碎捨棄或重新介紹了一遍,所以沒有後續作品常見的不認識舊人物 不...

想深入了解一下 jQuery 的原始碼,但是覺得學習曲線有點陡峭,有沒什麼好的方法或者學習資源推薦?

Sizzle 部分可以跳過,不影響理解jQuery,而且隨著HTML5的推廣,原生的選擇器效率更高,jQuery的選擇器效率顯得低下了。所以可以直接學習簡化版的Zepto也可以學習,因為不用考慮對IE6 8的支援,結構更清楚更好理解。 秦廣東 打算深入研究jQuery原始碼的話,必須要有很紮實的JS...