Android插件開發

插件開發的概念:git

  對於一個功能特別多,代碼量特別大的App好比支付寶、360手機助手來講,若是把全部的功能和代碼都寫在一個App中,就會形成App體積過於龐大,用戶下載體驗差,不方便測試,業務、模塊耦合性太高等問題。插件開發就是指在一個APP中只完成基礎和主要功能模塊,對於其餘可選的功能模塊採用下載插件的方式實現。一般來說,一個插件就是一個完成了某個功能模塊的app,那麼安裝一個插件,就是安裝一個具備該功能模塊的apk文件。github

插件開發的解決方案:app

  目前的插件開關解決方案主要有360的DroidPlugindynamic-load-apk攜程的DynamicAPK 等等。其中360的DroidPlugin框架最爲穩定。框架

 

使用DroidPlugin的步驟:ide

  • 建立module,依賴DroidPlugin庫:測試

    compile project(':Libraries:DroidPlugin')
  • 在Application中初始化DroidPlugin:spa

    public class MyApp extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            PluginHelper.getInstance().applicationOnCreate(getBaseContext());
        }
        @Override
        protected void attachBaseContext(Context base) {
            PluginHelper.getInstance().applicationAttachBaseContext(base);
            super.attachBaseContext(base);
        }
    }
  • 編寫代碼,實現安裝插件功能:插件

    public void installNet(View v){
            String filepath = Environment.getExternalStorageDirectory()+"/app-minifyEnabled.apk";
            try {
                PluginManager.getInstance().installPackage(filepath, 0);
                Log.e(TAG, "installNet: 插件安裝成功!");
            } catch (RemoteException e) {
                e.printStackTrace();
            }
    }
  • 編寫代碼,實現啓動插件功能:code

    public void lanchPlugin(View v){
            PackageManager pm = getPackageManager();
            Intent intent = pm.getLaunchIntentForPackage("com.itheima.appthin98");
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
    }
相關文章
相關標籤/搜索