From 90b903b192f10005bb99beb75bf7f9ac3d43f029 Mon Sep 17 00:00:00 2001 From: wuliang Date: Thu, 19 Jan 2023 10:56:23 +0800 Subject: [PATCH] optizime code --- lib/src/main/java/com/wuliang/lib/AppUtils.kt | 3 +-- .../main/java/com/wuliang/lib/FileUtils.kt | 2 +- .../java/com/wuliang/lib/InstallActivity.java | 22 +++---------------- .../com/wuliang/lib/MultiApkXapkInstaller.kt | 7 ------ .../main/java/com/wuliang/lib/RomUtils.java | 2 +- .../com/wuliang/lib/SingleApkXapkInstaller.kt | 8 ------- .../com/wuliang/lib/UtilsFileProvider.java | 6 ++--- .../java/com/wuliang/lib/XapkInstaller.kt | 14 +----------- .../com/wuliang/lib/XapkInstallerFactory.kt | 19 ---------------- 9 files changed, 9 insertions(+), 74 deletions(-) diff --git a/lib/src/main/java/com/wuliang/lib/AppUtils.kt b/lib/src/main/java/com/wuliang/lib/AppUtils.kt index 6a6c96a..07c8a52 100644 --- a/lib/src/main/java/com/wuliang/lib/AppUtils.kt +++ b/lib/src/main/java/com/wuliang/lib/AppUtils.kt @@ -1,6 +1,5 @@ package com.wuliang.lib -import android.app.Activity import android.content.Context import android.content.Intent import android.net.Uri @@ -13,7 +12,7 @@ import java.io.File * author: Blankj * blog : http://blankj.com * time : 2016/08/02 - * desc : App相关工具类 + * desc : app utils,just copy from https://github.com/Blankj/AndroidUtilCode * */ diff --git a/lib/src/main/java/com/wuliang/lib/FileUtils.kt b/lib/src/main/java/com/wuliang/lib/FileUtils.kt index d57efec..941eba2 100644 --- a/lib/src/main/java/com/wuliang/lib/FileUtils.kt +++ b/lib/src/main/java/com/wuliang/lib/FileUtils.kt @@ -7,7 +7,7 @@ import java.io.File * author: Blankj * blog : http://blankj.com * time : 2016/05/03 - * desc : utils about file + * desc : utils about file,just copy from https://github.com/Blankj/AndroidUtilCode * */ diff --git a/lib/src/main/java/com/wuliang/lib/InstallActivity.java b/lib/src/main/java/com/wuliang/lib/InstallActivity.java index 74b3a16..4d81eb2 100644 --- a/lib/src/main/java/com/wuliang/lib/InstallActivity.java +++ b/lib/src/main/java/com/wuliang/lib/InstallActivity.java @@ -36,10 +36,8 @@ public class InstallActivity extends AppCompatActivity { private static final String PACKAGE_INSTALLED_ACTION = "com.wuliang.common.SESSION_API_PACKAGE_INSTALLED"; - public static final String KEY_XAPK_PATH = "xapk_path"; public static final String KEY_APK_PATHS = "apk_path"; - private String xapkPath; private List apkPaths; private ExecutorService installXapkExectuor; @@ -48,16 +46,13 @@ public class InstallActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_install); initData(); - installXapk(); } public void initData() { - xapkPath = getIntent().getStringExtra(KEY_XAPK_PATH); apkPaths = getIntent().getStringArrayListExtra(KEY_APK_PATHS); } @@ -80,9 +75,7 @@ public class InstallActivity extends AppCompatActivity { installXapkExectuor = Executors.newSingleThreadExecutor(); installXapkExectuor.execute(() -> { - try { - mSession = initSession(); for (String apkPath : apkPaths) { @@ -90,24 +83,21 @@ public class InstallActivity extends AppCompatActivity { } commitSession(mSession); - } catch (IOException e) { e.printStackTrace(); abandonSession(); } - }); - - } @TargetApi(21) private PackageInstaller.Session initSession() throws IOException { - PackageInstaller.Session session = null; + PackageInstaller.Session session; PackageInstaller packageInstaller = getPackageManager().getPackageInstaller(); PackageInstaller.SessionParams params = new PackageInstaller.SessionParams( PackageInstaller.SessionParams.MODE_FULL_INSTALL); - int sessionId = 0; + + int sessionId; sessionId = packageInstaller.createSession(params); session = packageInstaller.openSession(sessionId); @@ -131,9 +121,7 @@ public class InstallActivity extends AppCompatActivity { @TargetApi(21) private void commitSession(PackageInstaller.Session session) { - // Create an install status receiver. - Intent intent = new Intent(this, InstallActivity.class); intent.setAction(PACKAGE_INSTALLED_ACTION); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0); @@ -141,7 +129,6 @@ public class InstallActivity extends AppCompatActivity { // Commit the session (this will start the installation workflow). session.commit(statusReceiver); - } @TargetApi(21) @@ -198,12 +185,9 @@ public class InstallActivity extends AppCompatActivity { @Override protected void onDestroy() { super.onDestroy(); - if (installXapkExectuor != null && !installXapkExectuor.isShutdown()) { installXapkExectuor.shutdown(); } - abandonSession(); - } } diff --git a/lib/src/main/java/com/wuliang/lib/MultiApkXapkInstaller.kt b/lib/src/main/java/com/wuliang/lib/MultiApkXapkInstaller.kt index 3f76995..96a5871 100644 --- a/lib/src/main/java/com/wuliang/lib/MultiApkXapkInstaller.kt +++ b/lib/src/main/java/com/wuliang/lib/MultiApkXapkInstaller.kt @@ -9,9 +9,7 @@ import java.io.File /** *
  *     author : wuliang
- *     e-mail : l_wu@mingboent.com
  *     time   : 2019/09/27
- *     desc   :
  * 
*/ class MultiApkXapkInstaller(xapkPath: String, xapkUnzipOutputDir: File) @@ -22,7 +20,6 @@ class MultiApkXapkInstaller(xapkPath: String, xapkUnzipOutputDir: File) } override fun install(xapkPath: String, context: Context) { - val files = xapkUnzipOutputDir.listFiles() val apkFilePaths = files.filter { file -> @@ -30,16 +27,13 @@ class MultiApkXapkInstaller(xapkPath: String, xapkUnzipOutputDir: File) }.map { it.absolutePath } enterInstallActivity(xapkPath, ArrayList(apkFilePaths), context) - } private fun enterInstallActivity(xapkPath: String, apkFilePaths: ArrayList, context: Context) { - Log.d(INSTALL_OPEN_APK_TAG, "multi apk xapk installer,enter InstallActivity,xapkPath:$xapkPath," + "apkFilePaths:$apkFilePaths") val intent = Intent(context, InstallActivity::class.java) - intent.putExtra(InstallActivity.KEY_XAPK_PATH, xapkPath) intent.putStringArrayListExtra(InstallActivity.KEY_APK_PATHS, apkFilePaths) if (context !is Activity) { intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) @@ -47,5 +41,4 @@ class MultiApkXapkInstaller(xapkPath: String, xapkUnzipOutputDir: File) context.startActivity(intent) } - } \ No newline at end of file diff --git a/lib/src/main/java/com/wuliang/lib/RomUtils.java b/lib/src/main/java/com/wuliang/lib/RomUtils.java index ba7cd4d..f1445a7 100644 --- a/lib/src/main/java/com/wuliang/lib/RomUtils.java +++ b/lib/src/main/java/com/wuliang/lib/RomUtils.java @@ -18,7 +18,7 @@ import java.util.Properties; * author: Blankj * blog : http://blankj.com * time : 2018/07/04 - * desc : utils about rom + * desc : utils about rom,just copy from https://github.com/Blankj/AndroidUtilCode * */ public final class RomUtils { diff --git a/lib/src/main/java/com/wuliang/lib/SingleApkXapkInstaller.kt b/lib/src/main/java/com/wuliang/lib/SingleApkXapkInstaller.kt index 696cf8e..a49053f 100644 --- a/lib/src/main/java/com/wuliang/lib/SingleApkXapkInstaller.kt +++ b/lib/src/main/java/com/wuliang/lib/SingleApkXapkInstaller.kt @@ -7,33 +7,25 @@ import java.io.File /** *
  *     author : wuliang
- *     e-mail : l_wu@mingboent.com
  *     time   : 2019/09/27
- *     desc   :
  * 
*/ class SingleApkXapkInstaller(xapkPath: String, xapkUnzipOutputDir: File) : XapkInstaller(xapkPath, xapkUnzipOutputDir) { override fun install(xapkPath: String, context: Context) { - val files:Array? = xapkUnzipOutputDir.listFiles() files?.forEach { file -> if ((file.isFile && file.name.endsWith(".apk"))) { - val filePath = file.absolutePath if (!filePath.isNullOrEmpty()) { - Log.d(INSTALL_OPEN_APK_TAG, "single apk xapk installer,openDownloadApk") - installApp(filePath,context) } - } } - } override fun getUnzipPath(): String? { diff --git a/lib/src/main/java/com/wuliang/lib/UtilsFileProvider.java b/lib/src/main/java/com/wuliang/lib/UtilsFileProvider.java index 79a65ff..7da0f06 100644 --- a/lib/src/main/java/com/wuliang/lib/UtilsFileProvider.java +++ b/lib/src/main/java/com/wuliang/lib/UtilsFileProvider.java @@ -7,9 +7,7 @@ import androidx.core.content.FileProvider; * author: blankj * blog : http://blankj.com * time : 2020/03/19 - * desc : + * desc : just copy from https://github.com/Blankj/AndroidUtilCode and modify for file provider * */ -public class UtilsFileProvider extends FileProvider { - -} +public class UtilsFileProvider extends FileProvider { } diff --git a/lib/src/main/java/com/wuliang/lib/XapkInstaller.kt b/lib/src/main/java/com/wuliang/lib/XapkInstaller.kt index d874a04..cd03b26 100644 --- a/lib/src/main/java/com/wuliang/lib/XapkInstaller.kt +++ b/lib/src/main/java/com/wuliang/lib/XapkInstaller.kt @@ -7,25 +7,13 @@ import java.io.File /** *
  *     author : wuliang
- *     e-mail : l_wu@mingboent.com
  *     time   : 2019/09/27
- *     desc   :
  * 
*/ abstract class XapkInstaller(val xapkPath: String, val xapkUnzipOutputDir: File) { - /** - * 返回apk - */ fun installXapk(context: Context) { - - try { - - install(xapkPath,context) - - } catch (e: ZipException) { - } - + install(xapkPath,context) } internal abstract fun install(xapkPath: String,context: Context) diff --git a/lib/src/main/java/com/wuliang/lib/XapkInstallerFactory.kt b/lib/src/main/java/com/wuliang/lib/XapkInstallerFactory.kt index 54d61e3..8b87c9c 100644 --- a/lib/src/main/java/com/wuliang/lib/XapkInstallerFactory.kt +++ b/lib/src/main/java/com/wuliang/lib/XapkInstallerFactory.kt @@ -10,16 +10,13 @@ import java.io.File /** *
  *     author : wuliang
- *     e-mail : l_wu@mingboent.com
  *     time   : 2019/09/27
- *     desc   :
  * 
*/ internal const val INSTALL_OPEN_APK_TAG = "install_open_apk_tag" fun createXapkInstaller(xapkFilePath: String?): XapkInstaller? { - if (xapkFilePath.isNullOrEmpty()) { return null } @@ -27,32 +24,25 @@ fun createXapkInstaller(xapkFilePath: String?): XapkInstaller? { val xapkFile = File(xapkFilePath) val unzipOutputDirPath = createUnzipOutputDir(xapkFile) - if (unzipOutputDirPath.isNullOrEmpty()) { return null } val unzipOutputDir = File(unzipOutputDirPath) - try { - //只保留apk文件和Android/obb下的文件,以及json文件用于获取主包(当有多个apk时) ZipUtil.unpack(xapkFile, unzipOutputDir, NameMapper { name -> - when { name.endsWith(".apk") -> return@NameMapper name else -> return@NameMapper null } - }) - } catch (e: ZipException) { e.printStackTrace() return null } val files = unzipOutputDir.listFiles() - val apkSize = files.count { file -> file.isFile && file.name.endsWith(".apk") } @@ -66,14 +56,11 @@ fun createXapkInstaller(xapkFilePath: String?): XapkInstaller? { } else { SingleApkXapkInstaller(xapkFilePath, unzipOutputDir) } - } private fun createUnzipOutputDir(file: File): String? { val filePathPex = file.parent + File.separator - val unzipOutputDir = filePathPex + getFileNameNoExtension(file) - val result = createOrExistsDir(unzipOutputDir) return if (result) @@ -86,26 +73,20 @@ private fun unzipObbToAndroidObbDir(xapkFile: File, unzipOutputDir: File): Boole val prefix = "Android/obb" try { - //只保留apk文件和Android/obb下的文件,以及json文件用于获取主包(当有多个apk时) ZipUtil.unpack(xapkFile, unzipOutputDir, NameMapper { name -> - when { name.startsWith(prefix) -> return@NameMapper name.substring(prefix.length) else -> return@NameMapper null } - }) Log.d(INSTALL_OPEN_APK_TAG, "unzip obb to Android/obb succeed") - return true - } catch (e: ZipException) { e.printStackTrace() return false } - } /**