Android 软件化,qihoo360软件计划方案配备实例教程

Android 软件化,qihoo360软件计划方案

文件目录

Android 软件化,qihoo360软件计划方案

寄主App软件化: 软件App软件配备: 寄主启用软件App:

在建一个新项目,刚开始配备

寄主软件化配备: 在新项目的网站根目录build.gradle中配备
.qihoo360.replugin:replugin-host-gradle:2.2.4 
在App module的build.gradle中引进
apply plugin: replugin-host-gradle 

在其中repluginHostConfig 需看你是不是应用AppCompat 来开展个性化化配备

repluginHostConfig {
 * 是不是应用 AppCompat 库
 * 不用个性化化配备时,不用加上
 useAppCompat = true
}

3.加上依靠:
.qihoo360.replugin:replugin-host-lib:2.2.4 
4.配备 Application 类

让工程项目的 Application 立即承继自 RePluginApplication。

假如您的工程项目现有Application类,则能够将基类转换到RePluginApplication就可以。或是您还可以用 非承继式 连接。

public class MainApplication extends RePluginApplication {
}
即然申明了Application,当然还必须在AndroidManifest中配备这一Application。
 
候选: 非承继式 配备Application

若您的运用对Application类承继关联的改动比较有限制,或想自定RePlugin载入全过程(慎用!),则能够立即启用有关方式来应用RePlugin。

public class MainApplication extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); RePlugin.App.attachBaseContext(this); .... } @Override public void onCreate() { super.onCreate(); RePlugin.App.onCreate(); .... } @Override public void onLowMemory() { super.onLowMemory(); /* Not need to be called if your application s minSdkVersion = 14 */ RePlugin.App.onLowMemory(); .... } @Override public void onTrimMemory(int level) { super.onTrimMemory(level); /* Not need to be called if your application s minSdkVersion = 14 */ RePlugin.App.onTrimMemory(level); .... } @Override public void onConfigurationChanged(Configuration config) { super.onConfigurationChanged(config); /* Not need to be called if your application s minSdkVersion = 14 */ RePlugin.App.onConfigurationChanged(config); .... }}
对于 非承继式 的留意点全部方式务必在UI进程来 同歩 启用。切忌放进工作中进程,或是根据post方式来实行 全部方式务必逐一相匹配,比如 RePlugin.App.attachBaseContext 方式只在Application.attachBaseContext中启用 请将RePlugin.App的启用方式,放到 仅次super.xxx() 方式的后边软件App的配备:在网站根目录下的build.gradle中加上依靠:
 .qihoo360.replugin:replugin-plugin-gradle:2.2.4 
在App module中的builder.gradle中引进:
apply plugin: replugin-plugin-gradle 
加上dependencies依靠:
 .qihoo360.replugin:replugin-plugin-lib:2.2.4 
4.配备别称信息内容:
/*软件名配备*/repluginPluginConfig { //软件名 pluginName = androidgo //寄主app的包名 hostApplicationId = com.newdicooker.tempetek.hostreplugin //寄主app的起动activity hostAppLauncherActivity = com.newdicooker.tempetek.hostreplugin.MainActivity }

之上流程完后才可以便是印证惊喜的時刻了:

寄主启用软件App:

启用内嵌软件 启用外接软件

启用内嵌软件:

软件App转化成apk,将APK更名为:[软件名].jar 将[软件名].jar放进主程序的Assets/plugins文件目录下 可根据别称:

 RePlugin.startActivity(MainActivity.this, RePlugin.createIntent( androidgo , com.newdicooker.tempetek.androidgo.MainActivity ));

androidgo:.newdicooker.tempetek.androidgo.MainActivity:要起动App的起动页

可根据包名来开展浏览:

RePlugin.startActivity(MainActivity.this, RePlugin.createIntent( com.newdicooker.tempetek.androidgo , com.newdicooker.tempetek.androidgo.MainActivity ));
启用外接软件:根据互联网免费下载软件apk启用RePlugin.install(path)安裝;

根据打开服务来开展多线程免费下载每日任务的:

RePlugin.isPluginInstalled( image )是根据别称来分辨软件是不是安裝,假如未安裝则免费下载安裝,假如早已安裝则立即进到。
 public void jumpToOut(View view) { if (RePlugin.isPluginInstalled( image )) {RePlugin.startActivity(MainActivity.this, RePlugin.createIntent( image , com.xq.imageplugindemo.MainActivity ));return; } // 软件免费下载详细地址 String urlPath = ZhangZeQiao/ImagePluginDemo/7c5866db83b57c455302fac12ea72af30d9a5364/app/src/main/assets/image.apk // 软件免费下载后的储放相对路径 String downloadDir = Environment.getExternalStorageDirectory().getAbsolutePath(); Intent intent = new Intent(this, DownloadAndUpdateService.class); intent.putExtra( urlPath , urlPath); intent.putExtra( downloadDir , downloadDir); startService(intent); }
免费下载安裝:
public class DownloadAndUpdateService extends IntentService { public DownloadAndUpdateService() { // 完成父类的结构方式,用以取名工作中进程,仅用于调节。 super( DownloadAndUpdateService } @Override protected void onHandleIntent(@Nullable Intent intent) { // Intent是以Activity发回来的,带上鉴别主要参数,依据主要参数不一样实行不一样的每日任务 // 软件免费下载详细地址 String urlPath = intent.getStringExtra( urlPath // 软件免费下载后的储放相对路径 String downloadDir = intent.getStringExtra( downloadDir File file = null; try {// 统一資源URL url = new URL(urlPath);// 联接类的父类,抽象性类URLConnection urlConnection = url.openConnection();// http的联接类HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection;// 设置恳求的方式,默认设置是GEThttpURLConnection.setRequestMethod( GET // 设定标识符编号httpURLConnection.setRequestProperty( Charset , UTF-8 // 开启到此 URL 引入的資源的通讯连接(假如并未创建那样的联接)。httpURLConnection.connect();// 文档尺寸int fileLength = httpURLConnection.getContentLength();// 文档名String filePathUrl = httpURLConnection.getURL().getFile();String fileFullName = filePathUrl.substring(filePathUrl.lastIndexOf(File.separatorChar) + 1);URLConnection con = url.openConnection();BufferedInputStream bin = new BufferedInputStream(httpURLConnection.getInputStream());String path = downloadDir + File.separatorChar + fileFullName;file = new File(path);if (!file.getParentFile().exists()) { file.getParentFile().mkdirs();}OutputStream out = new FileOutputStream(file);int size = 0;int len = 0;byte[] buf = new byte[1024];while ((size = bin.read(buf)) != -1) { len += size; out.write(buf, 0, size); // 免费下载百分数 Log.v( xq , 免费下载了------- + len * 100 / fileLength);}bin.close();out.close();// 升級安裝软件新版本本RePlugin.install(path);Log.v( xq , 免费下载进行 : + path); } catch (MalformedURLException e) {e.printStackTrace(); } catch (IOException e) {e.printStackTrace(); } finally { } }}
点一下拷贝连接 与朋友共享!盈利站