1、声网里美颜(相心)so动态加载 开发基本完成

2、Gradle速度很慢,配置缓存等设置
This commit is contained in:
laopi
2024-09-04 17:32:19 +08:00
parent b4a4302cc7
commit cbd99e0664
11 changed files with 83 additions and 85 deletions

View File

@@ -1,22 +1,16 @@
package com.shayu.phonelive.activity;
import static com.yunbao.live.views.SystemMessageViewHolder.PERMISSION_REQUEST_CODE;
import android.Manifest;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.view.Display;
@@ -30,20 +24,15 @@ import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.app.ActivityOptionsCompat;
import androidx.core.app.NotificationManagerCompat;
import androidx.core.content.ContextCompat;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.lxj.xpopup.XPopup;
import com.shayu.phonelive.AppContext;
import com.tencent.rtmp.ITXLivePlayListener;
import com.tencent.rtmp.TXLiveBase;
@@ -65,14 +54,12 @@ import com.yunbao.common.interfaces.CommonCallback;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.manager.imrongcloud.RongcloudIMManager;
import com.yunbao.common.utils.DownloadUtil;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.L;
import com.yunbao.common.utils.LogUtil;
import com.yunbao.common.utils.MD5Util;
import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.utils.SpUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.live.views.LauncherAdViewHolder;
import com.yunbao.main.activity.EntryActivity;
import com.yunbao.main.activity.MainActivity;
@@ -178,13 +165,41 @@ public class LauncherActivity extends AppCompatActivity implements View.OnClickL
mHandler.sendEmptyMessageDelayed(WHAT_GET_CONFIG, 1000);
}else {
//链接包 下载so库
downLoadSo();
checkFaceUnitySOFile();
checkAgoraSOFile();
}
}
private void downLoadSo() {
private void checkFaceUnitySOFile() {
File outputDir = new File(mContext.getDir("lib", Context.MODE_PRIVATE).getAbsoluteFile(), Constants.DOWNLOAD_FaceUnity_SO);
String cpuAbi = "";
cpuAbi = Build.CPU_ABI;
if (!outputDir.exists()) {
outputDir.mkdirs();
}
File fileSo = new File(outputDir, Constants.FaceUnity_SO_Name);
File fileSoList = new File(outputDir, cpuAbi);
//解压后的文件数量必须要有2个
//如果文件存在,解压后 文件数量一致,直接进入下一步
if (fileSo.exists() && getFileCount(fileSoList.getAbsolutePath()) == 2){
return;
}
// https://downs.yaoulive.com/androidLibs/t3/faceunity2-so-arm64-v8a.zip
String soUrl = String.format("https://downs.yaoulive.com/androidLibs/t3/faceunity2-so-%s.zip", cpuAbi);
Log.i("download", soUrl);
if (!fileSo.exists()) {
downloadSo(outputDir.getAbsolutePath(), soUrl,Constants.FaceUnity_SO_Name,false);
}else if (fileSo.exists() && getFileCount(outputDir.getAbsolutePath()) < 3) {
fileSo.delete();
downloadSo(outputDir.getAbsolutePath(), soUrl,Constants.FaceUnity_SO_Name,false);
}
}
private void checkAgoraSOFile() {
//存储路径 //检查是否下载过
File outputDir = new File(mContext.getDir("lib", Context.MODE_PRIVATE).getAbsoluteFile(), Constants.DOWNLOAD_SO);
File outputDir = new File(mContext.getDir("lib", Context.MODE_PRIVATE).getAbsoluteFile(), Constants.DOWNLOAD_Agora_SO);
Log.i("downLoad", "outputDir.getAbsolutePath() = " + outputDir.getAbsolutePath());
String cpuAbi = "";
@@ -194,7 +209,7 @@ public class LauncherActivity extends AppCompatActivity implements View.OnClickL
Log.e("downLoad", "outputDir:>>>" + outputDir.exists());
outputDir.mkdirs();
}
File fileSo = new File(outputDir, "soKuZip.zip");
File fileSo = new File(outputDir, Constants.Agora_SO_Name);
Log.i("downLoad", "fileSo.getAbsolutePath() = " + fileSo.getAbsolutePath());
File fileSoList = new File(outputDir, cpuAbi);
@@ -213,18 +228,16 @@ public class LauncherActivity extends AppCompatActivity implements View.OnClickL
//2开始下载
//检查压缩包是否已经下载过
Log.i("download", "permission WRITE_EXTERNAL_STORAGE.." + ContextCompat.checkSelfPermission(LauncherActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE));
Log.i("download", "permission READ_EXTERNAL_STORAGE .." + ContextCompat.checkSelfPermission(LauncherActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE));
String soUrl = String.format("https://downs.yaoulive.com/so-%s.zip", cpuAbi);
String soUrl = String.format("https://downs.yaoulive.com/androidLibs/t1/agora-so-%s.zip", cpuAbi);
// https://downs.yaoulive.com/androidLibs/t1/agora-so-arm64-v8a.zip
Log.i("download", soUrl);
if (!fileSo.exists()) {
downloadSo(outputDir.getAbsolutePath(), soUrl);
downloadSo(outputDir.getAbsolutePath(), soUrl,Constants.Agora_SO_Name,true);
}else if (fileSo.exists() && getFileCount(outputDir.getAbsolutePath()) < 23) {
fileSo.delete();
downloadSo(outputDir.getAbsolutePath(), soUrl);
downloadSo(outputDir.getAbsolutePath(), soUrl,Constants.Agora_SO_Name,true);
}
}
Dialog progressDialog;
@@ -251,34 +264,32 @@ public class LauncherActivity extends AppCompatActivity implements View.OnClickL
progressDialog.setCancelable(false);
progressDialog.show();
}
public void downloadSo(String outputDir, String downloadUrl) {
public void downloadSo(String outputDir, String downloadUrl,String fileName,boolean isShowDialog) {
DownloadUtil downloadUtil = new DownloadUtil();
showDialog(LauncherActivity.this);
downloadUtil.download("so", outputDir, "soKuZip.zip", downloadUrl, new DownloadUtil.Callback() {
if(isShowDialog){
showDialog(LauncherActivity.this);
}
downloadUtil.download("so", outputDir, fileName, downloadUrl, new DownloadUtil.Callback() {
@Override
public void onSuccess(File file) {
progressDialog.dismiss();
//存储路径
// File outputDir = new File(getApplicationInfo().dataDir, "dataLib");
//
// if (!outputDir.exists()) {
// Log.e("downLoad", "outputDir:>>>" + outputDir.exists());
// outputDir.mkdirs();
// }
mHandler.sendEmptyMessageDelayed(WHAT_GET_CONFIG, 20);
File fileSo = new File(outputDir, "soKuZip.zip");
if (isShowDialog){
progressDialog.dismiss();
mHandler.sendEmptyMessageDelayed(WHAT_GET_CONFIG, 20);
}
File fileSo = new File(outputDir, fileName);
try {
unzip(fileSo.getAbsolutePath(), outputDir);
} catch (Exception e) {
Log.e("ZipCheck", "Error reading ZIP file", e);
throw new RuntimeException(e);
}
}
@Override
public void onProgress(int progress) {
progressBar.setProgress(progress);
if (isShowDialog){
progressBar.setProgress(progress);
}
Log.i("downLoad", "progress:>>>" + progress);
}