package zeus.test; import android.content.Intent; import android.content.res.AssetManager; import android.os.Bundle; import android.view.View; import android.widget.Toast; import java.io.FileOutputStream; import java.io.InputStream; import zeus.plugin.PluginConfig; import zeus.plugin.PluginManager; import zeus.plugin.PluginUtil; import zeus.plugin.ZeusBaseActivity; import zeus.plugin.ZeusPlugin; import zeus.test.hotfix.TestHotFixActivity; import zeus.test.plugin.TestPluginActivity; /** * Created by huangjian on 2016/6/21. */ public class MainActivity extends ZeusBaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /** * 插件测试 * * @param view */ public void testPlugin(View view) { Intent intent = new Intent(MainActivity.this, TestPluginActivity.class); startActivity(intent); } /** * 补丁测试 * * @param view */ public void testHotfix(View view) { //第一次启动是宿主,应用补丁后就是补丁。 Intent intent = new Intent(MainActivity.this, TestHotFixActivity.class); startActivity(intent); } /** * 应用补丁 * * @param view */ public void applyHotfix(View view) { if(PluginManager.isInstall(PluginConfig.HOTFIX_TEST)){ Toast.makeText(this, "补丁"+PluginConfig.HOTFIX_TEST+"已经被安装,不用再次安装", Toast.LENGTH_SHORT).show(); return; } ZeusPlugin zeusPlugin = PluginManager.getPlugin(PluginConfig.HOTFIX_TEST); FileOutputStream out = null; InputStream in = null; try { AssetManager am = PluginManager.mBaseResources.getAssets(); in = am.open("zeushotfix_test.apk"); PluginUtil.createDirWithFile(PluginUtil.getZipPath(PluginConfig.HOTFIX_TEST)); out = new FileOutputStream(PluginUtil.getZipPath(PluginConfig.HOTFIX_TEST), false); byte[] temp = new byte[2048]; int len; while ((len = in.read(temp)) > 0) { out.write(temp, 0, len); } } catch (Exception e) { e.printStackTrace(); } finally { PluginUtil.close(in); PluginUtil.close(out); } boolean result= zeusPlugin.install(); if (result) { Toast.makeText(this, "补丁"+PluginConfig.HOTFIX_TEST+"安装成功,下次启动生效", Toast.LENGTH_SHORT).show(); } } @Override protected void onDestroy() { super.onDestroy(); android.os.Process.killProcess(android.os.Process.myPid()); } }