diff --git a/FaceUnity/src/main/java/com/yunbao/faceunity/utils/FURenderer.java b/FaceUnity/src/main/java/com/yunbao/faceunity/utils/FURenderer.java
index 2c5855435..19ff7db23 100644
--- a/FaceUnity/src/main/java/com/yunbao/faceunity/utils/FURenderer.java
+++ b/FaceUnity/src/main/java/com/yunbao/faceunity/utils/FURenderer.java
@@ -55,8 +55,8 @@ public class FURenderer extends IFURenderer {
private FURenderKit mFURenderKit;
/* AI道具*/
- private String BUNDLE_AI_FACE = "model" + File.separator + "ai_face_processor_lite.bundle";
- private String BUNDLE_AI_HUMAN = "model" + File.separator + "ai_human_processor.bundle";
+ public static String BUNDLE_AI_FACE = "model" + File.separator + "ai_face_processor_lite.bundle";
+ public static String BUNDLE_AI_HUMAN = "model" + File.separator + "ai_human_processor.bundle";
/* GL 线程 ID */
private Long mGlThreadId = 0L;
diff --git a/FaceUnity/src/main/java/com/yunbao/faceunity/utils/FileUtils.java b/FaceUnity/src/main/java/com/yunbao/faceunity/utils/FileUtils.java
index ae38e1cf0..c868cbf1b 100644
--- a/FaceUnity/src/main/java/com/yunbao/faceunity/utils/FileUtils.java
+++ b/FaceUnity/src/main/java/com/yunbao/faceunity/utils/FileUtils.java
@@ -314,6 +314,35 @@ public class FileUtils {
return null;
}
+ public static String copyAssetsFile(Context context, String assetsPath, String fileName, String saveFileDir) {
+ File fileDir = new File(saveFileDir);
+ if (!fileDir.exists()) {
+ fileDir.mkdirs();
+ }
+ File file = new File(fileDir, fileName);
+ if (file.exists()) {
+ return file.getAbsolutePath();
+ }
+ try {
+ InputStream inputStream = context.getAssets().open(assetsPath);
+ FileOutputStream fos = new FileOutputStream(file);
+ BufferedInputStream bis = new BufferedInputStream(inputStream);
+ BufferedOutputStream bos = new BufferedOutputStream(fos);
+ byte[] byteArray = new byte[1024];
+ int bytes = bis.read(byteArray);
+ while (bytes > 0) {
+ bos.write(byteArray, 0, bytes);
+ bos.flush();
+ bytes = bis.read(byteArray);
+ }
+ bos.close();
+ fos.close();
+ return file.getAbsolutePath();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
/**
* 获取Uri文件绝对路径
@@ -522,6 +551,7 @@ public class FileUtils {
/**
* 遍历一个文件夹获取改文件夹下所有文件名
+ *
* @param path
* @return
*/
@@ -563,7 +593,7 @@ public class FileUtils {
* @param path String
* @return Boolean
*/
- public static Boolean checkIsVideo(Context context,String path) {
+ public static Boolean checkIsVideo(Context context, String path) {
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
try {
retriever.setDataSource(context, Uri.fromFile(new File(path)));
diff --git a/FaceUnity/src/test/java/com/yunbao/faceunity/ExampleUnitTest.java b/FaceUnity/src/test/java/com/yunbao/faceunity/ExampleUnitTest.java
index abfb46d38..f8313752a 100644
--- a/FaceUnity/src/test/java/com/yunbao/faceunity/ExampleUnitTest.java
+++ b/FaceUnity/src/test/java/com/yunbao/faceunity/ExampleUnitTest.java
@@ -1,8 +1,5 @@
package com.yunbao.faceunity;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
/**
* Example local unit test, which will execute on the development machine (host).
@@ -10,8 +7,5 @@ import static org.junit.Assert.*;
* @see Testing documentation
*/
public class ExampleUnitTest {
- @Test
- public void addition_isCorrect() {
- assertEquals(4, 2 + 2);
- }
+
}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index f21892e75..22fa13570 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -6,6 +6,9 @@ apply plugin: 'com.alibaba.arouter'
android {
dexOptions {
jumboMode = true
+ }
+ project.tasks.getByName("tasks").doFirst {
+
}
/* applicationVariants.all { variant ->
variant.mergeAssetsProvider.configure {
@@ -92,6 +95,13 @@ android {
exclude 'lib/armeabi-v7a/libmmlic.so'
exclude 'lib/armeabi-v7a/libMNN_CL.so'
exclude 'lib/armeabi-v7a/libMNN_Express.so'
+ //美颜
+ if (rootProject.ext.manifestPlaceholders.isPluginModel) {
+ exclude 'lib/armeabi-v7a/libCNamaSDK.so'
+ exclude 'lib/arm64-v8a/libCNamaSDK.so'
+ exclude 'lib/armeabi-v7a/libfuai.so'
+ exclude 'lib/arm64-v8a/libfuai.so'
+ }
}
compileOptions {
@@ -99,6 +109,11 @@ android {
targetCompatibility JavaVersion.VERSION_1_8
}
applicationVariants.all { variant ->
+ println "清空build文件夹";
+ for (final def project in rootProject.getAllprojects()) {
+ delete project.buildDir
+ println project.buildDir
+ }
String variantName = variant.name.capitalize()
def processManifestTask = project.tasks.getByName("process${variantName}Manifest")
processManifestTask.doLast { pm ->
@@ -139,9 +154,36 @@ android {
'Asset/*',
'image_effect_shaders/*',
'internal/*'
+ //美颜基础组件
+
]))
+ println "isPluginModel = " + rootProject.ext.manifestPlaceholders.isPluginModel
+ if (rootProject.ext.manifestPlaceholders.isPluginModel) {
+ delete(fileTree(dir: outputDir, includes: [
+ 'model/ai_face_processor_lite.bundle',
+ 'graphics/face_beautification.bundle'
+ ]))
+ } else {
+ println "不删除bundle"
+ }
}
}
+ variant.outputs.all {
+ def isGoogle = "link"
+ if (rootProject.ext.manifestPlaceholders.isGooglePlay) {
+ isGoogle = "Google"
+ }
+ def isPlugin = "all"
+ if (rootProject.ext.manifestPlaceholders.isPluginModel) {
+ isPlugin = "plugin"
+ }
+ def isTest = "测试服"
+ if (rootProject.ext.manifestPlaceholders.serverHost == "https://napi.yaoulive.com") {
+ isTest = "正式服"
+ }
+ outputFileName = "[${new Date().format("yyyy-MM-dd HHmmss", TimeZone.getTimeZone("GMT+8"))}]PDLive-${defaultConfig.versionName}-${isGoogle}-${isPlugin}-${variant.buildType.name}-${isTest}.apk"
+
+ }
}
signingConfigs {
release {
@@ -193,12 +235,17 @@ android {
}
buildTypes {
release {
- minifyEnabled false
+ minifyEnabled true
+ shrinkResources true
+ zipAlignEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug {
minifyEnabled false
+ shrinkResources false
+ zipAlignEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index 135a165a8..382ebd0ee 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -12,17 +12,40 @@
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
+-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+ public *;
+}
# Uncomment this to preserve the groupLast number information for
# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
+-keepattributes SourceFile,LineNumberTable
# If you keep the groupLast number information, uncomment this to
# hide the original source file name.
-#-renamesourcefileattribute SourceFile
+-renamesourcefileattribute SourceFile
+
+-keep class com.yunbao.**{
+ public ;
+ protected ;
+}
+-keep class * implements com.yunbao.common.bean.BaseModel {
+ *;
+}
+-keep class com.yunbao.common.bean.** {
+ *;
+}
+
+-keep class com.yunbao.common.views.weight.VerticalViewPager$LayoutParams{
+ *;
+}
+-keep class android.**{
+ *;
+}
+
+-keep class **.R$* {
+ public static ;
+}
+-keep class com.tencent.** { *; }
-keep class com.adjust.sdk.**{ *; }
-keep class com.google.android.gms.common.ConnectionResult {
int SUCCESS;
@@ -48,6 +71,13 @@
-keep class okhttp3.internal.**{*;}
-dontwarn okio.**
+#okhttp
+-dontwarn okhttp3.**
+-keep class okhttp3.**{*;}
+
+#okio
+-dontwarn okio.**
+-keep class okio.**{*;}
# Retrofit
@@ -55,9 +85,10 @@
-keep class retrofit2.** { *; }
--keepattributes Signature-keepattributes Exceptions
+-keepattributes Signature-keepattributes,Exceptions
# RxJava RxAndroid
+-dontwarn java.util.concurrent.Flow*
-dontwarn sun.misc.**
@@ -69,20 +100,129 @@ long consumerIndex;
}
--keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
+-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef* {
-rx.internal.util.atomic.LinkedQueueNode producerNode;
+rx.internal.util.atomic.LinkedQueueNode* producerNode;
}
--keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
+-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef* {
-rx.internal.util.atomic.LinkedQueueNode consumerNode;
+rx.internal.util.atomic.LinkedQueueNode* consumerNode;
}
# Gson
-keep class com.google.gson.stream.** { *; }
+##---------------Begin: proguard configuration for Gson ----------
+# Gson uses generic type information stored in a class file when working with fields. Proguard
+# removes such information by default, so configure it to keep all of it.
+-keepattributes Signature
+
+# For using GSON @Expose annotation
+-keepattributes *Annotation*
+
+# Gson specific classes
+-dontwarn sun.misc.**
+#-keep class com.google.gson.stream.** { *; }
+
+# Application classes that will be serialized/deserialized over Gson
+-keep class com.google.gson.examples.android.model.** { ; }
+
+# Prevent proguard from stripping interface information from TypeAdapter, TypeAdapterFactory,
+# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
+-keep class * extends com.google.gson.TypeAdapter
+-keep class * implements com.google.gson.TypeAdapterFactory
+-keep class * implements com.google.gson.JsonSerializer
+-keep class * implements com.google.gson.JsonDeserializer
+
+# Prevent R8 from leaving Data object members always null
+-keepclassmembers,allowobfuscation class * {
+ @com.google.gson.annotations.SerializedName ;
+}
+
+# Retain generic signatures of TypeToken and its subclasses with R8 version 3.0 and higher.
+-keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken
+-keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken
+
+##---------------End: proguard configuration for Gson ----------
-keepattributes EnclosingMethod
+#--------融云
+-keepattributes Exceptions,InnerClasses
+-keepattributes Signature
+-keep class io.rong.** {*;}
+-keep class cn.rongcloud.** {*;}
+-keep class * implements io.rong.imlib.model.MessageContent {*;}
+-dontwarn io.rong.push.**
+-dontnote com.xiaomi.**
+-dontnote com.google.android.gms.gcm.**
+-dontnote io.rong.**
+# 下方混淆使用了融云 IMKit 提供的 locationKit 位置插件时才需要配置,可参考高德官网的混淆方式:https://lbs.amap.com/api/android-sdk/guide/create-project/dev-attention
+-keep class com.amap.api.maps.**{*;}
+-keep class com.autonavi.**{*;}
+-keep class com.amap.api.trace.**{*;}
+-keep class com.amap.api.location.**{*;}
+-keep class com.amap.api.fence.**{*;}
+-keep class com.loc.**{*;}
+-keep class com.autonavi.aps.amapapi.model.**{*;}
+-keep class com.amap.api.services.**{*;}
+-ignorewarnings
+
+#--------科大讯飞
+-keep class com.iflytek.**{*;}
+-keepattributes Signature
+#EvenBus
+-keepattributes *Annotation*
+-keepclassmembers class * {
+ @org.greenrobot.eventbus.Subscribe ;
+}
+-keep enum org.greenrobot.eventbus.ThreadMode { *; }
+
+# If using AsyncExecutord, keep required constructor of default event used.
+# Adjust the class name if a custom failure event type is used.
+-keepclassmembers class org.greenrobot.eventbus.util.ThrowableFailureEvent {
+ (java.lang.Throwable);
+}
+
+# Accessed via reflection, avoid renaming or removal
+-keep class org.greenrobot.eventbus.android.AndroidComponentsImpl*
+
+#--------ARouter
+-keep public class com.alibaba.android.arouter.routes.**{*;}
+-keep public class com.alibaba.android.arouter.facade.**{*;}
+-keep class * implements com.alibaba.android.arouter.facade.template.ISyringe{*;}
+
+# If you use the byType method to obtain Service, add the following rules to protect the interface:
+-keep interface * implements com.alibaba.android.arouter.facade.template.IProvider
+
+# If single-type injection is used, that is, no interface is defined to implement IProvider, the following rules need to be added to protect the implementation
+# -keep class * implements com.alibaba.android.arouter.facade.template.IProvider
+
+#----retrofit2
+-keepattributes Signature, InnerClasses, EnclosingMethod
+-keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations
+-keepattributes AnnotationDefault
+-keepclassmembers,allowshrinking,allowobfuscation interface * {
+ @retrofit2.http.* ;
+}
+-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement*
+-dontwarn javax.annotation.**
+-dontwarn kotlin.Unit
+-dontwarn retrofit2.KotlinExtensions*
+-dontwarn retrofit2.KotlinExtensions$*
+-if interface * { @retrofit2.http.* ; }
+-keep,allowobfuscation interface <1>
+-if interface * { @retrofit2.http.* ; }
+-keep,allowobfuscation interface * extends <1>
+-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation
+-if interface * { @retrofit2.http.* public *** *(...); }
+-keep,allowoptimization,allowshrinking,allowobfuscation class <3>
+
+#-----glide
+-keep public class com.bumptech.glide.** {*;}
+-keep public class jp.co.cyberagent.** {*;}
+-dontwarn jp.co.cyberagent.android.gpuimage.**
+
+-printconfiguration tmp/full-r8-config.txt
\ No newline at end of file
diff --git a/app/src/main/java/com/shayu/phonelive/AppContext.java b/app/src/main/java/com/shayu/phonelive/AppContext.java
index 9ad90e49c..6f01511ef 100644
--- a/app/src/main/java/com/shayu/phonelive/AppContext.java
+++ b/app/src/main/java/com/shayu/phonelive/AppContext.java
@@ -11,9 +11,9 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
+import android.os.Process;
import android.text.TextUtils;
import android.util.Log;
-import android.os.Process;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -26,6 +26,7 @@ import com.google.firebase.FirebaseApp;
import com.google.firebase.analytics.FirebaseAnalytics;
import com.google.firebase.crashlytics.FirebaseCrashlytics;
import com.shayu.phonelive.utils.LogUtils;
+import com.shayu.phonelive.utils.PluginManager;
import com.tencent.imsdk.v2.V2TIMGroupMemberInfo;
import com.tencent.imsdk.v2.V2TIMManager;
import com.tencent.imsdk.v2.V2TIMSimpleMsgListener;
@@ -248,6 +249,7 @@ public class AppContext extends CommonAppContext {
configSPApp();
//初始化美颜SDK
// FaceManager.initFaceUnity(this);
+ PluginManager.getInstance().loadAnchorPlugin();
}
/**
@@ -289,7 +291,7 @@ public class AppContext extends CommonAppContext {
.setMainCrashHandler((t, e) -> {
Log.e("ApplicationError", "主线程异常");//此处log只是展示,当debug为true时,主类内部log会打印异常信息
e.printStackTrace();
- AppManager.runDebugCode(()->{
+ AppManager.runDebugCode(() -> {
//闪退后finish所有Activity并且杀死进程
for (WeakReference activity : activities) {
if (activity != null && activity.get() != null) {
diff --git a/app/src/main/java/com/shayu/phonelive/utils/PluginManager.java b/app/src/main/java/com/shayu/phonelive/utils/PluginManager.java
new file mode 100644
index 000000000..35121e0db
--- /dev/null
+++ b/app/src/main/java/com/shayu/phonelive/utils/PluginManager.java
@@ -0,0 +1,198 @@
+package com.shayu.phonelive.utils;
+
+import static com.yunbao.faceunity.utils.FURenderer.BUNDLE_AI_FACE;
+import static com.yunbao.faceunity.utils.FaceUnityConfig.BUNDLE_FACE_BEAUTIFICATION;
+
+import android.os.Build;
+import android.util.Log;
+
+import com.yunbao.common.CommonAppContext;
+import com.yunbao.common.utils.DownloadUtil;
+import com.yunbao.common.utils.StringUtil;
+import com.yunbao.faceunity.utils.FileUtils;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+
+/**
+ * 插件加载器
+ */
+public class PluginManager {
+ private static PluginManager manager;
+ private static final String TAG = "插件管理器";
+ private String anchorPluginDownloadUrl = "http://192.168.137.1:12345/shares/ce47aa99-3e73-4a79-8a2f-e17a2d527953";
+
+ private PluginManager() {
+ }
+
+ public static PluginManager getInstance() {
+ if (manager == null) {
+ manager = new PluginManager();
+ }
+ return manager;
+ }
+
+ /**
+ * 设置主播插件下载地址
+ */
+ public void setAnchorPluginDownloadUrl(String anchorPluginDownloadUrl) {
+ this.anchorPluginDownloadUrl = anchorPluginDownloadUrl;
+ }
+
+ /**
+ * 加载主播插件
+ */
+ public void loadAnchorPlugin() {
+ new Thread(() -> {
+ try {
+ if (Arrays.asList(CommonAppContext.sInstance.getAssets().list("")).contains("anchorPlugin.apk")) {
+ FileUtils.copyAssetsFile(CommonAppContext.sInstance,"anchorPlugin.apk","anchorPlugin.apk",CommonAppContext.sInstance.getFilesDir().getAbsolutePath() + File.separator + "plugin_download");
+ }
+ Log.d(TAG,"解压assets下的文件");
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ File sdk = new File(CommonAppContext.sInstance.getFilesDir().getAbsolutePath() + File.separator + "plugin_download" + File.separator + "anchorPlugin.apk");
+ if (!sdk.exists()) {
+ if (StringUtil.isEmpty(anchorPluginDownloadUrl)) {
+ Log.e(TAG, "主播下载地址为空");
+ return;
+ }
+ downloadAnchorSdk();
+ return;
+ }
+ String outDir = CommonAppContext.sInstance.getFilesDir().getAbsolutePath() + File.separator + "plugin";
+ loadFaceSo(sdk, outDir);
+ loadFaceBundle(sdk, outDir);
+ }).start();
+ }
+
+ /**
+ * 加载美颜so文件
+ *
+ * @param plugin 插件apk文件
+ * @param outDir 解压路径
+ */
+ private void loadFaceSo(File plugin, String outDir) {
+ unzip(plugin.getAbsolutePath(), outDir, ".so");
+ String[] abis = Build.SUPPORTED_ABIS;
+ String abi = Arrays.asList(abis).contains("arm64-v8a") ? "arm64-v8a" : "armeabi-v7a";
+ File plugins = new File(outDir + File.separator + "lib" + File.separator + abi);
+ loadSo(plugins, "libfuai");
+ loadSo(plugins, "libCNamaSDK");
+ }
+
+ /**
+ * 设置美颜Bundle文件
+ *
+ * @param plugin 插件apk文件
+ * @param outDir 解压路径
+ */
+ private void loadFaceBundle(File plugin, String outDir) {
+ unzip(plugin.getAbsolutePath(), outDir, ".bundle");
+ BUNDLE_AI_FACE = outDir + File.separator + "assets" + File.separator + BUNDLE_AI_FACE;
+ BUNDLE_FACE_BEAUTIFICATION = outDir + File.separator + "assets" + File.separator + BUNDLE_FACE_BEAUTIFICATION;
+ }
+
+ /**
+ * 加载指定so
+ *
+ * @param dir so文件路径
+ * @param file so文件名字
+ */
+ private void loadSo(File dir, String file) {
+ file += ".so";
+ if (new File(dir.getAbsolutePath() + File.separator + file).exists()) {
+ System.load(dir + File.separator + file);
+ Log.d(TAG, "加载成功 "+dir + File.separator + file );
+ } else {
+ Log.e(TAG, "不存在 "+dir + File.separator + file );
+ }
+ }
+
+ /**
+ * 下载主播插件包
+ */
+ private void downloadAnchorSdk() {
+ String downloadDir = new File(CommonAppContext.sInstance.getFilesDir().getAbsolutePath() + File.separator + "plugin_download").getAbsolutePath();
+ new DownloadUtil().download("plugin", downloadDir, "anchorPlugin.apk", anchorPluginDownloadUrl, new DownloadUtil.Callback() {
+ @Override
+ public void onSuccess(File file) {
+ Log.d(TAG, "下载成功 "+file );
+ loadAnchorPlugin();
+ }
+
+ @Override
+ public void onProgress(int progress) {
+
+ }
+
+ @Override
+ public void onError(Throwable e) {
+
+ }
+ });
+ }
+
+
+ /**
+ * 解压zip文件
+ *
+ * @param zip zip文件
+ * @param outDir 解压路径
+ * @param suffix 过滤
+ */
+ private boolean unzip(String zip, String outDir, String suffix) {
+ FileOutputStream out;
+ byte buffer[] = new byte[1024];
+ try {
+ ZipInputStream zis = new ZipInputStream(new FileInputStream(zip));
+ ZipEntry entry = zis.getNextEntry();
+ while (entry != null) {
+ String name = entry.getName();
+ if (entry.isDirectory()) {
+ File newDir = new File(outDir + entry.getName());
+ newDir.mkdir();
+ } else if (name.endsWith(suffix)) {
+ File outputFile = new File(outDir + File.separator + name);
+ String outputPath = outputFile.getCanonicalPath();
+ name = outputPath
+ .substring(outputPath.lastIndexOf("/") + 1);
+ outputPath = outputPath.substring(0, outputPath
+ .lastIndexOf("/"));
+ File outputDir = new File(outputPath);
+ outputDir.mkdirs();
+ outputFile = new File(outputPath, name);
+ outputFile.createNewFile();
+ out = new FileOutputStream(outputFile);
+
+ int tmp = 0;
+ while ((tmp = zis.read(buffer)) > 0) {
+ out.write(buffer, 0, tmp);
+ }
+ /* do {
+ tmp = zis.read(buffer);
+ if (tmp <= 0) {
+ break;
+ } else {
+ out.write(buffer, 0, tmp);
+ }
+ } while (true);*/
+ out.close();
+ }
+ entry = zis.getNextEntry();
+ }
+ zis.close();
+ return true;
+ } catch (IOException e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+}
diff --git a/common/build.gradle b/common/build.gradle
index 57d020310..39057acfc 100644
--- a/common/build.gradle
+++ b/common/build.gradle
@@ -174,8 +174,8 @@ dependencies {
api 'com.squareup.retrofit2:retrofit:2.3.0'
api 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
//gson解析
- api 'com.squareup.retrofit2:converter-gson:2.3.0'
- implementation "io.reactivex.rxjava2:rxjava:2.2.3"
+ api 'com.squareup.retrofit2:converter-gson:2.3.0'//混淆
+ implementation "io.reactivex.rxjava2:rxjava:2.2.3"//混淆
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
api 'com.jakewharton.rxbinding3:rxbinding:3.1.0'
//loading样式库
diff --git a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java
index 50dad56d9..e68000a1b 100644
--- a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java
+++ b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java
@@ -1264,6 +1264,7 @@ public class LiveNetManager {
callback.onSuccess(listResponseModel.getData().getInfo());
}
}, throwable -> {
+ throwable.printStackTrace();
if (callback != null) {
callback.onError(throwable.getMessage());
}
diff --git a/common/src/main/res/drawable/bg_xyd_button.png b/common/src/main/res/drawable/bg_xyd_button.png
index 3adab40c5..df2047044 100644
Binary files a/common/src/main/res/drawable/bg_xyd_button.png and b/common/src/main/res/drawable/bg_xyd_button.png differ
diff --git a/common/src/main/res/drawable/icon_robot.png b/common/src/main/res/drawable/icon_robot.png
index aa0d8b457..b72bba2eb 100644
Binary files a/common/src/main/res/drawable/icon_robot.png and b/common/src/main/res/drawable/icon_robot.png differ
diff --git a/common/src/main/res/drawable/loading_00003.png b/common/src/main/res/drawable/loading_00003.png
index d8c5cdad9..ddeae1222 100644
Binary files a/common/src/main/res/drawable/loading_00003.png and b/common/src/main/res/drawable/loading_00003.png differ
diff --git a/common/src/main/res/drawable/loading_00007.png b/common/src/main/res/drawable/loading_00007.png
index afe653fbe..236698b96 100644
Binary files a/common/src/main/res/drawable/loading_00007.png and b/common/src/main/res/drawable/loading_00007.png differ
diff --git a/common/src/main/res/drawable/loading_00010.png b/common/src/main/res/drawable/loading_00010.png
index b6c795d22..074661648 100644
Binary files a/common/src/main/res/drawable/loading_00010.png and b/common/src/main/res/drawable/loading_00010.png differ
diff --git a/common/src/main/res/drawable/loading_00011.png b/common/src/main/res/drawable/loading_00011.png
index 5a3964b17..b5c08c0fc 100644
Binary files a/common/src/main/res/drawable/loading_00011.png and b/common/src/main/res/drawable/loading_00011.png differ
diff --git a/common/src/main/res/drawable/loading_00012.png b/common/src/main/res/drawable/loading_00012.png
index 2c2edc4d1..bfeefdf8f 100644
Binary files a/common/src/main/res/drawable/loading_00012.png and b/common/src/main/res/drawable/loading_00012.png differ
diff --git a/common/src/main/res/drawable/loading_00013.png b/common/src/main/res/drawable/loading_00013.png
index 65a6e690d..1426c6c26 100644
Binary files a/common/src/main/res/drawable/loading_00013.png and b/common/src/main/res/drawable/loading_00013.png differ
diff --git a/common/src/main/res/drawable/loading_00014.png b/common/src/main/res/drawable/loading_00014.png
index f8638274b..62a586e68 100644
Binary files a/common/src/main/res/drawable/loading_00014.png and b/common/src/main/res/drawable/loading_00014.png differ
diff --git a/common/src/main/res/drawable/loading_00015.png b/common/src/main/res/drawable/loading_00015.png
index cb7ad90cb..2def39a33 100644
Binary files a/common/src/main/res/drawable/loading_00015.png and b/common/src/main/res/drawable/loading_00015.png differ
diff --git a/common/src/main/res/drawable/wish_list_day_en.png b/common/src/main/res/drawable/wish_list_day_en.png
index fcba5660f..57b0541d6 100644
Binary files a/common/src/main/res/drawable/wish_list_day_en.png and b/common/src/main/res/drawable/wish_list_day_en.png differ
diff --git a/common/src/main/res/drawable/wish_list_day_zh.png b/common/src/main/res/drawable/wish_list_day_zh.png
index f2cfefa71..ef4fe57e6 100644
Binary files a/common/src/main/res/drawable/wish_list_day_zh.png and b/common/src/main/res/drawable/wish_list_day_zh.png differ
diff --git a/common/src/main/res/drawable/wish_list_lunar_en.png b/common/src/main/res/drawable/wish_list_lunar_en.png
index 6f99a69e7..8f67f0677 100644
Binary files a/common/src/main/res/drawable/wish_list_lunar_en.png and b/common/src/main/res/drawable/wish_list_lunar_en.png differ
diff --git a/common/src/main/res/drawable/wish_list_lunar_zh.png b/common/src/main/res/drawable/wish_list_lunar_zh.png
index 852850794..37a61d87f 100644
Binary files a/common/src/main/res/drawable/wish_list_lunar_zh.png and b/common/src/main/res/drawable/wish_list_lunar_zh.png differ
diff --git a/common/src/main/res/drawable/wish_list_seasonal_en.png b/common/src/main/res/drawable/wish_list_seasonal_en.png
index ac0bff237..f67861552 100644
Binary files a/common/src/main/res/drawable/wish_list_seasonal_en.png and b/common/src/main/res/drawable/wish_list_seasonal_en.png differ
diff --git a/common/src/main/res/drawable/wish_list_seasonal_zh.png b/common/src/main/res/drawable/wish_list_seasonal_zh.png
index 2684339b1..4ec23b827 100644
Binary files a/common/src/main/res/drawable/wish_list_seasonal_zh.png and b/common/src/main/res/drawable/wish_list_seasonal_zh.png differ
diff --git a/common/src/main/res/drawable/wish_list_week_en.png b/common/src/main/res/drawable/wish_list_week_en.png
index 74397cf8d..2d61e4826 100644
Binary files a/common/src/main/res/drawable/wish_list_week_en.png and b/common/src/main/res/drawable/wish_list_week_en.png differ
diff --git a/common/src/main/res/drawable/wish_list_week_zh.png b/common/src/main/res/drawable/wish_list_week_zh.png
index 8e46b3dec..5a8273996 100644
Binary files a/common/src/main/res/drawable/wish_list_week_zh.png and b/common/src/main/res/drawable/wish_list_week_zh.png differ
diff --git a/common/src/main/res/mipmap-mdpi/btn_openprotection.png b/common/src/main/res/mipmap-mdpi/btn_openprotection.png
index 8178dd0cb..3b200d8b1 100644
Binary files a/common/src/main/res/mipmap-mdpi/btn_openprotection.png and b/common/src/main/res/mipmap-mdpi/btn_openprotection.png differ
diff --git a/common/src/main/res/mipmap-mdpi/chat_head_mo.png b/common/src/main/res/mipmap-mdpi/chat_head_mo.png
index 7ef47211e..74550d212 100644
Binary files a/common/src/main/res/mipmap-mdpi/chat_head_mo.png and b/common/src/main/res/mipmap-mdpi/chat_head_mo.png differ
diff --git a/common/src/main/res/mipmap-mdpi/good_nub.png b/common/src/main/res/mipmap-mdpi/good_nub.png
index 8c586bd75..54e2fa39c 100644
Binary files a/common/src/main/res/mipmap-mdpi/good_nub.png and b/common/src/main/res/mipmap-mdpi/good_nub.png differ
diff --git a/common/src/main/res/mipmap-mdpi/guli_null.png b/common/src/main/res/mipmap-mdpi/guli_null.png
index 8524bb18c..bdd755f06 100644
Binary files a/common/src/main/res/mipmap-mdpi/guli_null.png and b/common/src/main/res/mipmap-mdpi/guli_null.png differ
diff --git a/common/src/main/res/mipmap-mdpi/ic_guard_not.png b/common/src/main/res/mipmap-mdpi/ic_guard_not.png
index bfbda2dc4..c036d7b2b 100644
Binary files a/common/src/main/res/mipmap-mdpi/ic_guard_not.png and b/common/src/main/res/mipmap-mdpi/ic_guard_not.png differ
diff --git a/common/src/main/res/mipmap-mdpi/icon_avatar_test.png b/common/src/main/res/mipmap-mdpi/icon_avatar_test.png
deleted file mode 100644
index 521f60104..000000000
Binary files a/common/src/main/res/mipmap-mdpi/icon_avatar_test.png and /dev/null differ
diff --git a/common/src/main/res/mipmap-mdpi/icon_danrenpk.png b/common/src/main/res/mipmap-mdpi/icon_danrenpk.png
index b42350538..d34fee48e 100644
Binary files a/common/src/main/res/mipmap-mdpi/icon_danrenpk.png and b/common/src/main/res/mipmap-mdpi/icon_danrenpk.png differ
diff --git a/common/src/main/res/mipmap-mdpi/icon_live_font.png b/common/src/main/res/mipmap-mdpi/icon_live_font.png
index 8d7f4ce65..ee2394fe8 100644
Binary files a/common/src/main/res/mipmap-mdpi/icon_live_font.png and b/common/src/main/res/mipmap-mdpi/icon_live_font.png differ
diff --git a/common/src/main/res/mipmap-mdpi/icon_rank_top_box.png b/common/src/main/res/mipmap-mdpi/icon_rank_top_box.png
index 47838ee75..572bdb1b2 100644
Binary files a/common/src/main/res/mipmap-mdpi/icon_rank_top_box.png and b/common/src/main/res/mipmap-mdpi/icon_rank_top_box.png differ
diff --git a/common/src/main/res/mipmap-mdpi/icon_user_home_living.gif b/common/src/main/res/mipmap-mdpi/icon_user_home_living.gif
index 91243c9eb..961e45570 100644
Binary files a/common/src/main/res/mipmap-mdpi/icon_user_home_living.gif and b/common/src/main/res/mipmap-mdpi/icon_user_home_living.gif differ
diff --git a/common/src/main/res/mipmap-mdpi/topbg.gif b/common/src/main/res/mipmap-mdpi/topbg.gif
index ad5cd308d..1cff256c0 100644
Binary files a/common/src/main/res/mipmap-mdpi/topbg.gif and b/common/src/main/res/mipmap-mdpi/topbg.gif differ
diff --git a/common/src/main/res/mipmap-mdpi/user_card_man.png b/common/src/main/res/mipmap-mdpi/user_card_man.png
index 6bf8269f3..5f2649e14 100644
Binary files a/common/src/main/res/mipmap-mdpi/user_card_man.png and b/common/src/main/res/mipmap-mdpi/user_card_man.png differ
diff --git a/common/src/main/res/mipmap-mdpi/user_card_woman.png b/common/src/main/res/mipmap-mdpi/user_card_woman.png
index 1a869f675..33c504890 100644
Binary files a/common/src/main/res/mipmap-mdpi/user_card_woman.png and b/common/src/main/res/mipmap-mdpi/user_card_woman.png differ
diff --git a/common/src/main/res/mipmap-mdpi/usercard_good_nub.png b/common/src/main/res/mipmap-mdpi/usercard_good_nub.png
index 52c9ae234..a6a6a5b1f 100644
Binary files a/common/src/main/res/mipmap-mdpi/usercard_good_nub.png and b/common/src/main/res/mipmap-mdpi/usercard_good_nub.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/background_wish_item.png b/common/src/main/res/mipmap-xxhdpi/background_wish_item.png
index 008259d2d..e0ec2c437 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/background_wish_item.png and b/common/src/main/res/mipmap-xxhdpi/background_wish_item.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/bg_day_wish.png b/common/src/main/res/mipmap-xxhdpi/bg_day_wish.png
index 0567f01ee..12510b283 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/bg_day_wish.png and b/common/src/main/res/mipmap-xxhdpi/bg_day_wish.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/bg_lunar_wish.png b/common/src/main/res/mipmap-xxhdpi/bg_lunar_wish.png
index ef6aacc79..aa7db6fa7 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/bg_lunar_wish.png and b/common/src/main/res/mipmap-xxhdpi/bg_lunar_wish.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/bg_lwhqz.png b/common/src/main/res/mipmap-xxhdpi/bg_lwhqz.png
index fc50e780e..dd74931d1 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/bg_lwhqz.png and b/common/src/main/res/mipmap-xxhdpi/bg_lwhqz.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/bg_seasonal_wish.png b/common/src/main/res/mipmap-xxhdpi/bg_seasonal_wish.png
index 379c95d48..2ac2ba108 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/bg_seasonal_wish.png and b/common/src/main/res/mipmap-xxhdpi/bg_seasonal_wish.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/bg_trickery_top.png b/common/src/main/res/mipmap-xxhdpi/bg_trickery_top.png
index 473b0ae13..445cd7379 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/bg_trickery_top.png and b/common/src/main/res/mipmap-xxhdpi/bg_trickery_top.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/bg_zg.png b/common/src/main/res/mipmap-xxhdpi/bg_zg.png
index 389557418..65d2748d1 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/bg_zg.png and b/common/src/main/res/mipmap-xxhdpi/bg_zg.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/btn_golive.png b/common/src/main/res/mipmap-xxhdpi/btn_golive.png
index f979bf437..57ce1e0b1 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/btn_golive.png and b/common/src/main/res/mipmap-xxhdpi/btn_golive.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/btn_icon_quit.png b/common/src/main/res/mipmap-xxhdpi/btn_icon_quit.png
index 796ff75b6..fa9efccb0 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/btn_icon_quit.png and b/common/src/main/res/mipmap-xxhdpi/btn_icon_quit.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/ic_custom_share.png b/common/src/main/res/mipmap-xxhdpi/ic_custom_share.png
index 5e8063e4f..924658333 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/ic_custom_share.png and b/common/src/main/res/mipmap-xxhdpi/ic_custom_share.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/ic_live_fun_anchor_letter.png b/common/src/main/res/mipmap-xxhdpi/ic_live_fun_anchor_letter.png
index 7f4ecfb95..85dafa537 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/ic_live_fun_anchor_letter.png and b/common/src/main/res/mipmap-xxhdpi/ic_live_fun_anchor_letter.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/ic_live_fun_anchor_say.png b/common/src/main/res/mipmap-xxhdpi/ic_live_fun_anchor_say.png
index fc7d99691..789566172 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/ic_live_fun_anchor_say.png and b/common/src/main/res/mipmap-xxhdpi/ic_live_fun_anchor_say.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_bfsz.png b/common/src/main/res/mipmap-xxhdpi/icon_bfsz.png
index bc115ec6f..4158068ee 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_bfsz.png and b/common/src/main/res/mipmap-xxhdpi/icon_bfsz.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_cancel.png b/common/src/main/res/mipmap-xxhdpi/icon_cancel.png
index 4dbfa9072..5c6305810 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_cancel.png and b/common/src/main/res/mipmap-xxhdpi/icon_cancel.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_change.png b/common/src/main/res/mipmap-xxhdpi/icon_change.png
index 78d447821..d83bcca37 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_change.png and b/common/src/main/res/mipmap-xxhdpi/icon_change.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_close.png b/common/src/main/res/mipmap-xxhdpi/icon_close.png
index 7842d906a..aea460fa2 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_close.png and b/common/src/main/res/mipmap-xxhdpi/icon_close.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_close_tip.png b/common/src/main/res/mipmap-xxhdpi/icon_close_tip.png
index f64e53e82..70704e21c 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_close_tip.png and b/common/src/main/res/mipmap-xxhdpi/icon_close_tip.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_fhd.png b/common/src/main/res/mipmap-xxhdpi/icon_fhd.png
index 278b37842..0218dea94 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_fhd.png and b/common/src/main/res/mipmap-xxhdpi/icon_fhd.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_hd.png b/common/src/main/res/mipmap-xxhdpi/icon_hd.png
index 4bdd05b04..355858316 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_hd.png and b/common/src/main/res/mipmap-xxhdpi/icon_hd.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_live_close_3.png b/common/src/main/res/mipmap-xxhdpi/icon_live_close_3.png
index 2da0a5cfe..5af2a6755 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_live_close_3.png and b/common/src/main/res/mipmap-xxhdpi/icon_live_close_3.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_live_ready_camera.png b/common/src/main/res/mipmap-xxhdpi/icon_live_ready_camera.png
index 3706e9818..43ff285a2 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_live_ready_camera.png and b/common/src/main/res/mipmap-xxhdpi/icon_live_ready_camera.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_love_message.png b/common/src/main/res/mipmap-xxhdpi/icon_love_message.png
index d7a1fbd2b..8ea3ffe99 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_love_message.png and b/common/src/main/res/mipmap-xxhdpi/icon_love_message.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_more_02.png b/common/src/main/res/mipmap-xxhdpi/icon_more_02.png
index 3a2d32e72..fec68e1f5 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_more_02.png and b/common/src/main/res/mipmap-xxhdpi/icon_more_02.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_more_down.png b/common/src/main/res/mipmap-xxhdpi/icon_more_down.png
index 2296877ce..f368d12e4 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_more_down.png and b/common/src/main/res/mipmap-xxhdpi/icon_more_down.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_more_open.png b/common/src/main/res/mipmap-xxhdpi/icon_more_open.png
index 36f5f84f3..b689fffc4 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_more_open.png and b/common/src/main/res/mipmap-xxhdpi/icon_more_open.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_more_up.png b/common/src/main/res/mipmap-xxhdpi/icon_more_up.png
index 5f1eaadba..b0c6a5a95 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_more_up.png and b/common/src/main/res/mipmap-xxhdpi/icon_more_up.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_open_gongjue.png b/common/src/main/res/mipmap-xxhdpi/icon_open_gongjue.png
index 8e133a944..8689cbe4c 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_open_gongjue.png and b/common/src/main/res/mipmap-xxhdpi/icon_open_gongjue.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_open_guowang.png b/common/src/main/res/mipmap-xxhdpi/icon_open_guowang.png
index 1456e6a62..5e454d27b 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_open_guowang.png and b/common/src/main/res/mipmap-xxhdpi/icon_open_guowang.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_open_houjue.png b/common/src/main/res/mipmap-xxhdpi/icon_open_houjue.png
index 80a7b114f..c535a64a6 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_open_houjue.png and b/common/src/main/res/mipmap-xxhdpi/icon_open_houjue.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_open_huangdi.png b/common/src/main/res/mipmap-xxhdpi/icon_open_huangdi.png
index 14f23da21..fd4f0b455 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_open_huangdi.png and b/common/src/main/res/mipmap-xxhdpi/icon_open_huangdi.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_open_nanjue.png b/common/src/main/res/mipmap-xxhdpi/icon_open_nanjue.png
index 701f8bca5..804654643 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_open_nanjue.png and b/common/src/main/res/mipmap-xxhdpi/icon_open_nanjue.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_open_zijue.png b/common/src/main/res/mipmap-xxhdpi/icon_open_zijue.png
index 71c9ac273..920e92267 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_open_zijue.png and b/common/src/main/res/mipmap-xxhdpi/icon_open_zijue.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_protocol_check.png b/common/src/main/res/mipmap-xxhdpi/icon_protocol_check.png
index 07d294e38..a29310a9a 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_protocol_check.png and b/common/src/main/res/mipmap-xxhdpi/icon_protocol_check.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_protocol_uncheck.png b/common/src/main/res/mipmap-xxhdpi/icon_protocol_uncheck.png
index bb1b4754a..9b0de0463 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_protocol_uncheck.png and b/common/src/main/res/mipmap-xxhdpi/icon_protocol_uncheck.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_robot.png b/common/src/main/res/mipmap-xxhdpi/icon_robot.png
index aa0d8b457..b72bba2eb 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_robot.png and b/common/src/main/res/mipmap-xxhdpi/icon_robot.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_sd.png b/common/src/main/res/mipmap-xxhdpi/icon_sd.png
index d92be9bb6..d81856d10 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_sd.png and b/common/src/main/res/mipmap-xxhdpi/icon_sd.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_selected.png b/common/src/main/res/mipmap-xxhdpi/icon_selected.png
index 5aeea828a..37a898845 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_selected.png and b/common/src/main/res/mipmap-xxhdpi/icon_selected.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_start.png b/common/src/main/res/mipmap-xxhdpi/icon_start.png
index 4a029150a..3fc6e7f89 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_start.png and b/common/src/main/res/mipmap-xxhdpi/icon_start.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_start_number.png b/common/src/main/res/mipmap-xxhdpi/icon_start_number.png
index 0600e11b8..d40d1af77 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_start_number.png and b/common/src/main/res/mipmap-xxhdpi/icon_start_number.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_tip.png b/common/src/main/res/mipmap-xxhdpi/icon_tip.png
index d5b68983e..f9fbbdcba 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_tip.png and b/common/src/main/res/mipmap-xxhdpi/icon_tip.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_voice.png b/common/src/main/res/mipmap-xxhdpi/icon_voice.png
index 2ea9d64e5..3bf35866e 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_voice.png and b/common/src/main/res/mipmap-xxhdpi/icon_voice.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_weekstar.png b/common/src/main/res/mipmap-xxhdpi/icon_weekstar.png
index 8316f9b35..6c22646ec 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_weekstar.png and b/common/src/main/res/mipmap-xxhdpi/icon_weekstar.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_withdraw.png b/common/src/main/res/mipmap-xxhdpi/icon_withdraw.png
index f92d292a4..0c5b520aa 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_withdraw.png and b/common/src/main/res/mipmap-xxhdpi/icon_withdraw.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_xinyuandan.png b/common/src/main/res/mipmap-xxhdpi/icon_xinyuandan.png
index b0eed3c6a..9e3b9a892 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/icon_xinyuandan.png and b/common/src/main/res/mipmap-xxhdpi/icon_xinyuandan.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/img_aristocrat_chaohuang.png b/common/src/main/res/mipmap-xxhdpi/img_aristocrat_chaohuang.png
index a8bea716c..c5a3448ad 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/img_aristocrat_chaohuang.png and b/common/src/main/res/mipmap-xxhdpi/img_aristocrat_chaohuang.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/img_aristocrat_gongjue.png b/common/src/main/res/mipmap-xxhdpi/img_aristocrat_gongjue.png
index 88c051df7..5e0a48b6d 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/img_aristocrat_gongjue.png and b/common/src/main/res/mipmap-xxhdpi/img_aristocrat_gongjue.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/img_aristocrat_guowang.png b/common/src/main/res/mipmap-xxhdpi/img_aristocrat_guowang.png
index d6282e9ae..9a423031f 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/img_aristocrat_guowang.png and b/common/src/main/res/mipmap-xxhdpi/img_aristocrat_guowang.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/img_aristocrat_houjue.png b/common/src/main/res/mipmap-xxhdpi/img_aristocrat_houjue.png
index efd5ef8f0..48ca70c1f 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/img_aristocrat_houjue.png and b/common/src/main/res/mipmap-xxhdpi/img_aristocrat_houjue.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/img_aristocrat_huangdi.png b/common/src/main/res/mipmap-xxhdpi/img_aristocrat_huangdi.png
index 14da24bfc..5ad36e1f4 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/img_aristocrat_huangdi.png and b/common/src/main/res/mipmap-xxhdpi/img_aristocrat_huangdi.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/img_aristocrat_nanjue.png b/common/src/main/res/mipmap-xxhdpi/img_aristocrat_nanjue.png
index 98819b426..39abe8dd9 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/img_aristocrat_nanjue.png and b/common/src/main/res/mipmap-xxhdpi/img_aristocrat_nanjue.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/img_aristocrat_notopen.png b/common/src/main/res/mipmap-xxhdpi/img_aristocrat_notopen.png
index f32017d2d..cf7c027d3 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/img_aristocrat_notopen.png and b/common/src/main/res/mipmap-xxhdpi/img_aristocrat_notopen.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/img_aristocrat_zijue.png b/common/src/main/res/mipmap-xxhdpi/img_aristocrat_zijue.png
index 57653a507..cbacb5725 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/img_aristocrat_zijue.png and b/common/src/main/res/mipmap-xxhdpi/img_aristocrat_zijue.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/img_chaohuang.png b/common/src/main/res/mipmap-xxhdpi/img_chaohuang.png
index 888cf2004..b689bb11c 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/img_chaohuang.png and b/common/src/main/res/mipmap-xxhdpi/img_chaohuang.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/img_fans_default.png b/common/src/main/res/mipmap-xxhdpi/img_fans_default.png
index da577ef1d..4edf4e2dd 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/img_fans_default.png and b/common/src/main/res/mipmap-xxhdpi/img_fans_default.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/img_honor_default.png b/common/src/main/res/mipmap-xxhdpi/img_honor_default.png
index 54e920549..70cc4118d 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/img_honor_default.png and b/common/src/main/res/mipmap-xxhdpi/img_honor_default.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/img_huangdi.png b/common/src/main/res/mipmap-xxhdpi/img_huangdi.png
index 591b55577..aab5636b2 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/img_huangdi.png and b/common/src/main/res/mipmap-xxhdpi/img_huangdi.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/img_lu_bg.png b/common/src/main/res/mipmap-xxhdpi/img_lu_bg.png
index 255811d21..5828008fb 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/img_lu_bg.png and b/common/src/main/res/mipmap-xxhdpi/img_lu_bg.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/imng_guowang.png b/common/src/main/res/mipmap-xxhdpi/imng_guowang.png
index 0d4f7cff2..971498e2d 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/imng_guowang.png and b/common/src/main/res/mipmap-xxhdpi/imng_guowang.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_icon_data.png b/common/src/main/res/mipmap-xxhdpi/live_icon_data.png
index f23f08440..f3e78e474 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_icon_data.png and b/common/src/main/res/mipmap-xxhdpi/live_icon_data.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_icon_news.png b/common/src/main/res/mipmap-xxhdpi/live_icon_news.png
index 0f2cebfec..6ff709825 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_icon_news.png and b/common/src/main/res/mipmap-xxhdpi/live_icon_news.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_aristocrat.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_aristocrat.png
index c08a2a613..d4ecec868 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_more_icon_aristocrat.png and b/common/src/main/res/mipmap-xxhdpi/live_more_icon_aristocrat.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_connect_new.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_connect_new.png
index 779b2dc96..088ed6cdb 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_more_icon_connect_new.png and b/common/src/main/res/mipmap-xxhdpi/live_more_icon_connect_new.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_events.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_events.png
index 9bd235882..95dcf6e1b 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_more_icon_events.png and b/common/src/main/res/mipmap-xxhdpi/live_more_icon_events.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_fans.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_fans.png
index a7925e8c5..6a92e61e6 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_more_icon_fans.png and b/common/src/main/res/mipmap-xxhdpi/live_more_icon_fans.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_fenestrule.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_fenestrule.png
index 421ca5945..4a0c1a9ee 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_more_icon_fenestrule.png and b/common/src/main/res/mipmap-xxhdpi/live_more_icon_fenestrule.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_fenestrule_new.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_fenestrule_new.png
index 1c277bbeb..e691f8bfc 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_more_icon_fenestrule_new.png and b/common/src/main/res/mipmap-xxhdpi/live_more_icon_fenestrule_new.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_guard.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_guard.png
index 4e5dc5283..171dc0395 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_more_icon_guard.png and b/common/src/main/res/mipmap-xxhdpi/live_more_icon_guard.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_hd.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_hd.png
index 8de7b9706..0471c63d7 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_more_icon_hd.png and b/common/src/main/res/mipmap-xxhdpi/live_more_icon_hd.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_moods.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_moods.png
index edea8ab96..7464519b6 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_more_icon_moods.png and b/common/src/main/res/mipmap-xxhdpi/live_more_icon_moods.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_more.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_more.png
index 2b0398a85..21b00b127 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_more_icon_more.png and b/common/src/main/res/mipmap-xxhdpi/live_more_icon_more.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_report.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_report.png
index b329806f0..2cffa360e 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_more_icon_report.png and b/common/src/main/res/mipmap-xxhdpi/live_more_icon_report.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_robot.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_robot.png
index bba2b0662..c42875995 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_more_icon_robot.png and b/common/src/main/res/mipmap-xxhdpi/live_more_icon_robot.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_service.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_service.png
index f463839bd..b615fe179 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_more_icon_service.png and b/common/src/main/res/mipmap-xxhdpi/live_more_icon_service.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_sliding.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_sliding.png
index 2b6318c50..fc5dd48db 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_more_icon_sliding.png and b/common/src/main/res/mipmap-xxhdpi/live_more_icon_sliding.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_sliding_new.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_sliding_new.png
index f2abfe924..15a7f8e36 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_more_icon_sliding_new.png and b/common/src/main/res/mipmap-xxhdpi/live_more_icon_sliding_new.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_special.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_special.png
index e3e41b6bf..8060afadf 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_more_icon_special.png and b/common/src/main/res/mipmap-xxhdpi/live_more_icon_special.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_special_new.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_special_new.png
index 57d08e40e..712701a2a 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_more_icon_special_new.png and b/common/src/main/res/mipmap-xxhdpi/live_more_icon_special_new.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_system.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_system.png
index 9b8a0ab46..58ad6683c 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_more_icon_system.png and b/common/src/main/res/mipmap-xxhdpi/live_more_icon_system.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_task.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_task.png
index 6265b8b3a..0b379df61 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_more_icon_task.png and b/common/src/main/res/mipmap-xxhdpi/live_more_icon_task.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_zhouxinglist.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_zhouxinglist.png
index 4e8f0e091..bb77293da 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/live_more_icon_zhouxinglist.png and b/common/src/main/res/mipmap-xxhdpi/live_more_icon_zhouxinglist.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/special_icon_off.png b/common/src/main/res/mipmap-xxhdpi/special_icon_off.png
index ed96e839f..9275165fb 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/special_icon_off.png and b/common/src/main/res/mipmap-xxhdpi/special_icon_off.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/special_icon_on.png b/common/src/main/res/mipmap-xxhdpi/special_icon_on.png
index a5ce3584d..400d33f4f 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/special_icon_on.png and b/common/src/main/res/mipmap-xxhdpi/special_icon_on.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/start_level.png b/common/src/main/res/mipmap-xxhdpi/start_level.png
index 3e8735861..fae6a335c 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/start_level.png and b/common/src/main/res/mipmap-xxhdpi/start_level.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/tab_recommend.png b/common/src/main/res/mipmap-xxhdpi/tab_recommend.png
index dc84e87de..8933e0e4f 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/tab_recommend.png and b/common/src/main/res/mipmap-xxhdpi/tab_recommend.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/update_tip_box.png b/common/src/main/res/mipmap-xxhdpi/update_tip_box.png
index 7bcfaad41..82a90642c 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/update_tip_box.png and b/common/src/main/res/mipmap-xxhdpi/update_tip_box.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/voice_fluctuations.gif b/common/src/main/res/mipmap-xxhdpi/voice_fluctuations.gif
index e00f1c7bc..62c8f59cc 100644
Binary files a/common/src/main/res/mipmap-xxhdpi/voice_fluctuations.gif and b/common/src/main/res/mipmap-xxhdpi/voice_fluctuations.gif differ
diff --git a/config.gradle b/config.gradle
index 237f93aa1..013cf6403 100644
--- a/config.gradle
+++ b/config.gradle
@@ -26,6 +26,9 @@ ext {
// true表示谷歌支付 false
isGooglePlay : false,
//是否上报异常日志
- isUploadLog : true
+ isUploadLog : true,
+ //是否打包成插件包模式
+ isPluginModel : false,
]
-}
\ No newline at end of file
+}
+//7664 1
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 3c93222c4..3265ac671 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -18,3 +18,9 @@ org.gradle.parallel=true
org.gradle.configureondemand=true
android.useAndroidX=true
android.enableJetifier=true
+
+systemProp.http.proxyHost=127.0.0.1
+systemProp.https.proxyHost=127.0.0.1
+systemProp.https.proxyPort=7890
+systemProp.http.proxyPort=7890
+#android.enableR8.fullMode=true
\ No newline at end of file
diff --git a/pluginsForAnchor/.gitignore b/pluginsForAnchor/.gitignore
new file mode 100644
index 000000000..42afabfd2
--- /dev/null
+++ b/pluginsForAnchor/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/pluginsForAnchor/build.gradle b/pluginsForAnchor/build.gradle
new file mode 100644
index 000000000..ef5b9896d
--- /dev/null
+++ b/pluginsForAnchor/build.gradle
@@ -0,0 +1,160 @@
+apply plugin: 'com.android.application'
+//apply plugin: 'com.android.library'
+
+
+android {
+ compileSdkVersion rootProject.ext.android.compileSdkVersion
+ buildToolsVersion rootProject.ext.android.buildToolsVersion
+ packagingOptions {
+ pickFirst "lib/armeabi/libyuvutils.so"
+ pickFirst "lib/arm64-v8a/libyuvutils.so"
+ pickFirst "lib/armeabi-v7a/libyuvutils.so"
+ pickFirst "lib/armeabi/libyuvtools.so"
+ pickFirst "lib/arm64-v8a/libyuvtools.so"
+ pickFirst "lib/armeabi-v7a/libyuvtools.so"
+ exclude "lib/arm64-v8a/libmmcv_api_handgesture.so"
+ exclude "lib/arm64-v8a/libmmcv_api_express.so"
+ exclude "lib/arm64-v8a/libMediaEncoder.so"
+ exclude "lib/arm64-v8a/libarcore_sdk_c.so"
+ exclude "lib/arm64-v8a/libmediadecoder.so"
+ exclude "lib/arm64-v8a/libMediaMuxer.so"
+ exclude "lib/arm64-v8a/libarcore_sdk_jni.so"
+ exclude "lib/arm64-v8a/libMediaUtils.so"
+ exclude "lib/arm64-v8a/libcosmosffmpeg.so"
+ //旧美颜so
+ exclude 'lib/arm64-v8a/libxeengine.so'
+ exclude 'lib/arm64-v8a/libmmcv_base.so'
+ exclude 'lib/arm64-v8a/libmmcrypto.so'
+ exclude 'lib/arm64-v8a/libMNN.so'
+ exclude 'lib/arm64-v8a/libc++_shared.so'
+ exclude 'lib/arm64-v8a/libmmcv_api_base.so'
+ exclude 'lib/arm64-v8a/libmmcv_api_beauty.so'
+ exclude 'lib/arm64-v8a/libmmcv_api_bodylandmark.so'
+ exclude 'lib/arm64-v8a/libmmcv_api_express.so'
+ exclude 'lib/arm64-v8a/libmmcv_api_faceattributes.so'
+ exclude 'lib/arm64-v8a/libmmcv_api_facefeatures.so'
+ exclude 'lib/arm64-v8a/libmmcv_api_faceprocessor.so'
+ exclude 'lib/arm64-v8a/libmmcv_api_facerecognition.so'
+ exclude 'lib/arm64-v8a/libmmcv_api_handgesture.so'
+ exclude 'lib/arm64-v8a/libmmcv_api_imagequality.so'
+ exclude 'lib/arm64-v8a/libmmcv_api_objectdetect.so'
+ exclude 'lib/arm64-v8a/libmmcv_api_segmentation.so'
+ exclude 'lib/arm64-v8a/libmmcv_api_videoprocessor.so'
+ exclude 'lib/arm64-v8a/libmmlic.so'
+ exclude 'lib/arm64-v8a/libMNN_CL.so'
+ exclude 'lib/arm64-v8a/libMNN_Express.so'
+ exclude 'lib/armeabi-v7a/libxeengine.so'
+ exclude 'lib/armeabi-v7a/libmmcv_base.so'
+ exclude 'lib/armeabi-v7a/libmmcrypto.so'
+ exclude 'lib/armeabi-v7a/libMNN.so'
+ exclude 'lib/armeabi-v7a/libc++_shared.so'
+ exclude 'lib/armeabi-v7a/libmmcv_api_base.so'
+ exclude 'lib/armeabi-v7a/libmmcv_api_beauty.so'
+ exclude 'lib/armeabi-v7a/libmmcv_api_bodylandmark.so'
+ exclude 'lib/armeabi-v7a/libmmcv_api_express.so'
+ exclude 'lib/armeabi-v7a/libmmcv_api_faceattributes.so'
+ exclude 'lib/armeabi-v7a/libmmcv_api_facefeatures.so'
+ exclude 'lib/armeabi-v7a/libmmcv_api_faceprocessor.so'
+ exclude 'lib/armeabi-v7a/libmmcv_api_facerecognition.so'
+ exclude 'lib/armeabi-v7a/libmmcv_api_handgesture.so'
+ exclude 'lib/armeabi-v7a/libmmcv_api_imagequality.so'
+ exclude 'lib/armeabi-v7a/libmmcv_api_objectdetect.so'
+ exclude 'lib/armeabi-v7a/libmmcv_api_segmentation.so'
+ exclude 'lib/armeabi-v7a/libmmcv_api_videoprocessor.so'
+ exclude 'lib/armeabi-v7a/libmmlic.so'
+ exclude 'lib/armeabi-v7a/libMNN_CL.so'
+ exclude 'lib/armeabi-v7a/libMNN_Express.so'
+
+ }
+ applicationVariants.all { variant ->
+ String variantName = variant.name.capitalize()
+ def processManifestTask = project.tasks.getByName("process${variantName}Manifest")
+ processManifestTask.doLast { pm ->
+ String manifestPath = "build/intermediates/bundle_manifest/release/bundle-manifest/AndroidManifest.xml"
+ def isGooglePlay = rootProject.ext.manifestPlaceholders.isGooglePlay
+ if (file(manifestPath).exists() && isGooglePlay) {
+ def manifestContent = file(manifestPath).getText()
+
+ manifestContent = manifestContent.replace('', '')
+ file(manifestPath).write(manifestContent)
+ } else {
+ print "not Exists = " + manifestPath
+ }
+ }
+ variant.mergeAssetsProvider.configure {
+ doLast {
+ delete(fileTree(dir: outputDir, includes: [
+ 'model/ai_bgseg_green.bundle',
+ 'model/ai_face_processor.bundle',
+ //'model/ai_face_processor_lite.bundle',
+ 'model/ai_hairseg.bundle',
+ 'model/ai_hand_processor.bundle',
+ 'model/ai_human_processor.bundle',
+ 'model/ai_human_processor_gpu.bundle',
+ 'model/ai_human_processor_mb_fast.bundle',
+ 'graphics/body_slim.bundle',
+ 'graphics/controller_cpp.bundle',
+ //'graphics/face_beautification.bundle',
+ 'graphics/face_makeup.bundle',
+ 'graphics/fuzzytoonfilter.bundle',
+ 'graphics/fxaa.bundle',
+ 'graphics/tongue.bundle',
+ //旧美颜
+ 'model-all.zip',
+ 'filterData.zip',
+ 'KSYResource/*',
+ 'Resources/*',
+ 'Asset/*',
+ 'image_effect_shaders/*',
+ 'internal/*',
+ ]))
+ }
+ }
+ }
+ defaultConfig {
+ applicationId "com.pdlive.plugins"
+ minSdkVersion rootProject.ext.android.minSdkVersion
+ targetSdkVersion rootProject.ext.android.targetSdkVersion
+ versionCode rootProject.ext.android.versionCode
+ versionName rootProject.ext.android.versionName
+ manifestPlaceholders = rootProject.ext.manifestPlaceholders
+ ndk {
+ abiFilters "armeabi-v7a", "arm64-v8a"
+ }
+ }
+ aaptOptions {
+ cruncherEnabled = false
+ useNewCruncher = false
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ }
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+ sourceSets {
+ main {
+ jniLibs.srcDirs = ['libs']
+ }
+ }
+
+}
+repositories {
+ flatDir {
+ dirs 'libs', '../libs'
+ }
+}
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+
+ implementation 'com.faceunity:core:8.3.1'
+ implementation 'com.faceunity:model:8.3.1'
+ //implementation 'com.faceunity:nama:8.3.1' //底层库-标准版
+
+
+}
diff --git a/pluginsForAnchor/proguard-rules.pro b/pluginsForAnchor/proguard-rules.pro
new file mode 100644
index 000000000..481bb4348
--- /dev/null
+++ b/pluginsForAnchor/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/pluginsForAnchor/src/main/AndroidManifest.xml b/pluginsForAnchor/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..8b45ca164
--- /dev/null
+++ b/pluginsForAnchor/src/main/AndroidManifest.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pluginsForAnchor/src/main/java/com/pdlive/pluginsForAnchor/MainPlugin.java b/pluginsForAnchor/src/main/java/com/pdlive/pluginsForAnchor/MainPlugin.java
new file mode 100644
index 000000000..7ac6f8cb8
--- /dev/null
+++ b/pluginsForAnchor/src/main/java/com/pdlive/pluginsForAnchor/MainPlugin.java
@@ -0,0 +1,9 @@
+package com.pdlive.pluginsForAnchor;
+
+public class MainPlugin {
+ private static final String Version = "1.0";
+
+ public static String getVersion() {
+ return Version;
+ }
+}
diff --git a/pluginsForAnchor/src/main/res/drawable-v24/ic_launcher_foreground.xml b/pluginsForAnchor/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 000000000..2b068d114
--- /dev/null
+++ b/pluginsForAnchor/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pluginsForAnchor/src/main/res/drawable/ic_launcher_background.xml b/pluginsForAnchor/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 000000000..07d5da9cb
--- /dev/null
+++ b/pluginsForAnchor/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pluginsForAnchor/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/pluginsForAnchor/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 000000000..6f3b755bf
--- /dev/null
+++ b/pluginsForAnchor/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pluginsForAnchor/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/pluginsForAnchor/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 000000000..6f3b755bf
--- /dev/null
+++ b/pluginsForAnchor/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pluginsForAnchor/src/main/res/mipmap-hdpi/ic_launcher.webp b/pluginsForAnchor/src/main/res/mipmap-hdpi/ic_launcher.webp
new file mode 100644
index 000000000..c209e78ec
Binary files /dev/null and b/pluginsForAnchor/src/main/res/mipmap-hdpi/ic_launcher.webp differ
diff --git a/pluginsForAnchor/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/pluginsForAnchor/src/main/res/mipmap-hdpi/ic_launcher_round.webp
new file mode 100644
index 000000000..b2dfe3d1b
Binary files /dev/null and b/pluginsForAnchor/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ
diff --git a/pluginsForAnchor/src/main/res/mipmap-mdpi/ic_launcher.webp b/pluginsForAnchor/src/main/res/mipmap-mdpi/ic_launcher.webp
new file mode 100644
index 000000000..4f0f1d64e
Binary files /dev/null and b/pluginsForAnchor/src/main/res/mipmap-mdpi/ic_launcher.webp differ
diff --git a/pluginsForAnchor/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/pluginsForAnchor/src/main/res/mipmap-mdpi/ic_launcher_round.webp
new file mode 100644
index 000000000..62b611da0
Binary files /dev/null and b/pluginsForAnchor/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ
diff --git a/pluginsForAnchor/src/main/res/mipmap-xhdpi/ic_launcher.webp b/pluginsForAnchor/src/main/res/mipmap-xhdpi/ic_launcher.webp
new file mode 100644
index 000000000..948a3070f
Binary files /dev/null and b/pluginsForAnchor/src/main/res/mipmap-xhdpi/ic_launcher.webp differ
diff --git a/pluginsForAnchor/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/pluginsForAnchor/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
new file mode 100644
index 000000000..1b9a6956b
Binary files /dev/null and b/pluginsForAnchor/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ
diff --git a/pluginsForAnchor/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/pluginsForAnchor/src/main/res/mipmap-xxhdpi/ic_launcher.webp
new file mode 100644
index 000000000..28d4b77f9
Binary files /dev/null and b/pluginsForAnchor/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ
diff --git a/pluginsForAnchor/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/pluginsForAnchor/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
new file mode 100644
index 000000000..9287f5083
Binary files /dev/null and b/pluginsForAnchor/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ
diff --git a/pluginsForAnchor/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/pluginsForAnchor/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
new file mode 100644
index 000000000..aa7d6427e
Binary files /dev/null and b/pluginsForAnchor/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ
diff --git a/pluginsForAnchor/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/pluginsForAnchor/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
new file mode 100644
index 000000000..9126ae37c
Binary files /dev/null and b/pluginsForAnchor/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ
diff --git a/pluginsForAnchor/src/main/res/values/colors.xml b/pluginsForAnchor/src/main/res/values/colors.xml
new file mode 100644
index 000000000..f8c6127d3
--- /dev/null
+++ b/pluginsForAnchor/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/pluginsForAnchor/src/main/res/values/strings.xml b/pluginsForAnchor/src/main/res/values/strings.xml
new file mode 100644
index 000000000..814088626
--- /dev/null
+++ b/pluginsForAnchor/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ packageSdk
+
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
index e1b3b91be..1305f2842 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -2,4 +2,5 @@ include ':app', ':video', ':common', ':main', ':baidu', ':live', ':lib_country_
include ':FaceUnity'
//include ':baidu'
//include ':recognizer'//融云语音转文字模块
-include ':Share'
\ No newline at end of file
+include ':Share'
+include ':pluginsForAnchor'