android插件化開發的框架:CJFrameForAndroid

jopen 9年前發布 | 45K 次閱讀 Android開發 移動開發 CJFrameForAndroid

CJFrameForAndroid 是一個實現android插件化開發的框架。使用CJFrameForAndroid,apk動態加載不再是難題,更重要的是可以輕松實現插件與APP項目之間的解耦。


注: CJFrameForAndroid現已并入Android應用開發框架KJFrameForAndroid中,作為其插件化模塊存在,此處更新將延后。

原理描述

CJFrameForAndroid的實現原理是通過類加載器,動態加載存在于SD卡上的apk包中的Activity。通過使用一個托管所,插件Activity全部事務(包括聲明周期與交互事件)將交由托管所來處理,間接實現插件的運行。更多介紹:CJFrameForAndroid原理介紹
一句話概括:CJFrameForAndroid中的托管所,復制了插件中的Activity,來替代插件中的Activity與用戶交互。

框架使用

●使用 CJFrameForAndroid 插件開發框架需要在你項目的AndroidManifest.xml文件中加入托管所的聲明。

<activity android:name="org.kymjs.aframe.plugin.CJProxyActivity" />  <!-- 如果使用了插件Activity,需要添加 -->
<service android:name="org.kymjs.aframe.plugin.service.CJProxyService"/>  <!-- 如果使用了插件Service,需要添加 -->


●讓插件應用中的Activity繼承CJActivity,并且一切使用this調用的方法都使用that替代。例如this.setContentView();需要改為that.setContentView();
●插件中涉及到的Android權限,須在APP項目清單中具有聲明。
●插件Activity跳轉時,推薦使用CJActivityUtils類來輔助跳轉。若一定要startActivity或 startActivityForResult,在跳轉過程中的Intent不能自己new,必須使用 CJActivityUtils.getPluginIntent();
●在插件和APP兩個工程中不能引用相同的jar包。解決辦法是:在插件工程的項目中添加一個/cjlibs的文件夾,將需要調用的jar包放到這個文件夾中,并在插件項目目錄下的.classpath中加入如下語句,系統會自動處理相關細節

<classpathentry kind="lib" path="cjlibs"/>


項目主頁:http://www.baiduhome.net/lib/view/home/1422862401763

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!