From fdcfe6ef562cc3e8bbd6fcf2faedfbd9571f4490 Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期一, 01 四月 2024 14:33:42 +0800
Subject: [PATCH] 解决小程序白屏的问题

---
 app/src/main/res/anim/dcloud_unimp_close_exit.xml                    |   17 +---
 app/src/main/res/values/styles.xml                                   |    4 
 app/src/main/java/com/hdl/photovoltaic/ui/StartActivity.java         |   33 ++++++--
 app/src/main/res/layout/activity_splash.xml                          |    8 ++
 app/src/main/res/values/themes.xml                                   |    2 
 app/src/main/AndroidManifest.xml                                     |    1 
 app/src/main/java/com/hdl/photovoltaic/ui/CPowerStationActivity.java |   27 +++++-
 app/src/main/res/anim/dcloud_unimp_host_open_enter.xml               |   19 ++--
 app/src/main/java/com/hdl/photovoltaic/HDLApp.java                   |    9 ++
 app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMPSDKManager.java   |    8 +
 app/src/main/res/anim/dcloud_unimp_open_enter.xml                    |   18 +---
 build.gradle                                                         |   13 +++
 app/src/main/res/anim/dcloud_unimp_host_close_exit.xml               |   19 +---
 app/src/main/java/com/hdl/photovoltaic/uni/MySplashView.java         |   35 ++++++++
 app/build.gradle                                                     |    8 +
 15 files changed, 156 insertions(+), 65 deletions(-)

diff --git a/app/build.gradle b/app/build.gradle
index 8612b31..a125b6e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -28,14 +28,14 @@
     defaultConfig {
         applicationId "com.hdl.photovoltaic"
         minSdk 23
-        targetSdk 30
+        targetSdk 28
         versionCode 1
         versionName "1.3.1"//鐗堟湰瑙勫垯1.3鏄骇鍝佸姛鑳借凯浠g敤鐨�,鏈�鍚庝竴浣�0鏄垜浠慨澶峛ug鐢ㄧ殑
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         multiDexEnabled true
         manifestPlaceholders = mfph
         ndk {
-            abiFilters 'x86', 'armeabi-v7a', "arm64-v8a" //涓嶆敮鎸乤rmeabi
+            abiFilters 'armeabi-v7a', "arm64-v8a" //涓嶆敮鎸乤rmeabi
         }
 
         manifestPlaceholders = [
@@ -62,6 +62,10 @@
         ]
 
     }
+    // 淇濊瘉鍏朵粬鐨刲ib娌℃湁琚玴reDex
+    dexOptions {
+        preDexLibraries = false
+    }
     repositories {
         flatDir {
             dirs 'libs'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bdce55a..f0e4c06 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -144,6 +144,7 @@
             android:exported="false" />
         <activity
             android:name=".ui.MyPowerStationActivity"
+            android:theme="@style/DCloudMPHostActivityTheme"
             android:exported="false" />
         <activity
             android:name=".ui.HomeLoginActivity"
diff --git a/app/src/main/java/com/hdl/photovoltaic/HDLApp.java b/app/src/main/java/com/hdl/photovoltaic/HDLApp.java
index 6622578..4b6c7f4 100644
--- a/app/src/main/java/com/hdl/photovoltaic/HDLApp.java
+++ b/app/src/main/java/com/hdl/photovoltaic/HDLApp.java
@@ -1,9 +1,12 @@
 package com.hdl.photovoltaic;
 
 import android.app.Application;
+import android.content.Context;
 import android.content.Intent;
 import android.text.TextUtils;
 
+
+import androidx.multidex.MultiDex;
 
 import com.hdl.hdlhttp.HxHttpConfig;
 import com.hdl.linkpm.sdk.HDLLinkPMSdk;
@@ -311,4 +314,10 @@
             HdlLogLogic.print("娴嬭瘯Mqtt杩炴帴鏈嶅姟绔け璐�--->");
         }
     }
+
+    @Override
+    protected void attachBaseContext(Context base) {
+        MultiDex.install(base);
+        super.attachBaseContext(base);
+    }
 }
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/CPowerStationActivity.java b/app/src/main/java/com/hdl/photovoltaic/ui/CPowerStationActivity.java
index dbeacb9..2c34460 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/CPowerStationActivity.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/CPowerStationActivity.java
@@ -5,7 +5,10 @@
 import android.os.Process;
 import android.os.SystemClock;
 import android.text.TextUtils;
+import android.util.Log;
 
+
+import androidx.annotation.Nullable;
 
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
@@ -84,11 +87,25 @@
     }
 
     @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+//        setTheme(R.style.NoAnimationTheme);
+    }
+
+    @Override
     protected void onResume() {
         super.onResume();
         //鍚姩椤典笌mainActivity鏍峰紡涓�鏍凤紝杩欐牱鍚姩椤靛拰mainActivity鐪嬩笂鍘绘槸涓�涓晫闈紝鐩殑鏄负浜唌ainActivity閬綇涓嬩竴椤碉紱
-        AppManagerUtils.getAppManager().finishActivity(StartActivity.class);
+//        AppManagerUtils.getAppManager().finishActivity(StartActivity.class);
         this.portConflictDialog();
+    }
+    public void startAppAutomaticallyOpenUni() {
+        //浣庝簬瀹夊崜14鐗堟湰
+        if (android.os.Build.VERSION.SDK_INT < 34) {
+            startAppAutomaticallyOpenUni(false);
+        } else {
+            startAppAutomaticallyOpenUni(true);
+        }
     }
 
     @Subscribe(threadMode = ThreadMode.MAIN)
@@ -176,11 +193,15 @@
         }
     }
 
+
     /**
      * C绔惎鍔ˋpp鑷姩鎵撳紑灏忕▼搴忕數绔欒鎯呯晫闈�
      */
-    private void startAppAutomaticallyOpenUni() {
+    private void startAppAutomaticallyOpenUni(boolean delay) {
 
+        if(delay) {
+            SystemClock.sleep(2000);
+        }
         List<HouseIdBean> HouseIdList = HdlResidenceLogic.getInstance().getHouseIdList();
         if (HouseIdList.size() == 0) {
             String path = HDLUniMP.UNI_EVENT_OPEN_HOME_Null_C;
@@ -198,8 +219,6 @@
             String path = HDLUniMP.UNI_EVENT_OPEN_HOME_DETAILS_C + "?homeId=" + houseIdBean.getHomeId() + "&homeName=" + houseIdBean.getHomeName() + "&powerStationStatus=" + houseIdBean.getPowerStationStatus();
             HdlUniLogic.getInstance().openUniMP(path, null);
         }
-
-
     }
 
 //    /**
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/StartActivity.java b/app/src/main/java/com/hdl/photovoltaic/ui/StartActivity.java
index a11ab05..976caa2 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/StartActivity.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/StartActivity.java
@@ -3,6 +3,10 @@
 
 import android.content.Intent;
 import android.os.Bundle;
+import android.os.SystemClock;
+import android.util.Log;
+
+import androidx.annotation.Nullable;
 
 import com.hdl.linkpm.sdk.core.exception.HDLException;
 import com.hdl.linkpm.sdk.user.HDLLinkPMUser;
@@ -11,10 +15,12 @@
 import com.hdl.photovoltaic.config.AppConfigManage;
 import com.hdl.photovoltaic.config.UserConfigManage;
 import com.hdl.photovoltaic.listener.CloudCallBeak;
+import com.hdl.photovoltaic.other.HdlLogLogic;
 import com.hdl.photovoltaic.other.HdlResidenceLogic;
 import com.hdl.photovoltaic.other.HdlUniLogic;
 import com.hdl.photovoltaic.ui.bean.HouseIdBean;
 import com.hdl.photovoltaic.uni.HDLUniMP;
+import com.hdl.photovoltaic.uni.HDLUniMPSDKManager;
 
 import java.util.List;
 
@@ -52,8 +58,7 @@
                         intent.setClass(StartActivity.this, CPowerStationActivity.class);
 
                     }
-                    startActivity(intent);
-//                    finish();
+                    openActivity(intent);
                 }
 
                 @Override
@@ -67,20 +72,32 @@
                         //C绔敤鎴疯烦杞晫闈�
                         intent.setClass(StartActivity.this, CPowerStationActivity.class);
                     }
-                    startActivity(intent);
-//                    finish();
+                    openActivity(intent);
                 }
             });
 
         } else {
             Intent intent = new Intent();
             intent.setClass(this, HomeLoginActivity.class);
-            startActivity(intent);
-            finish();
+            openActivity(intent);
         }
-
-
     }
 
+    void openActivity(Intent intent) {
+        intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
+        startActivity(intent);
+        finish();
+    }
 
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setTheme(R.style.NoAnimationTheme);
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        overridePendingTransition(0, 0);
+    }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMPSDKManager.java b/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMPSDKManager.java
index 6f5b2e7..b6119cf 100644
--- a/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMPSDKManager.java
+++ b/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMPSDKManager.java
@@ -3,6 +3,7 @@
 import android.app.Application;
 import android.content.Context;
 import android.os.Environment;
+import android.os.SystemClock;
 import android.text.TextUtils;
 
 
@@ -279,14 +280,19 @@
                 UniMPOpenConfiguration uniMPOpenConfiguration = new UniMPOpenConfiguration();
                 uniMPOpenConfiguration.path = path;
                 uniMPOpenConfiguration.extraData = jsonObject;
+                uniMPOpenConfiguration.splashClass=MySplashView.class;
                 uniMP = DCUniMPSDK.getInstance().openUniMP(mContext, uniAppId, uniMPOpenConfiguration);
+            }
+            if(TextUtils.isEmpty(mCurrentAppId)){
+                //绗竴娆$敤瑕佷紤鐪�
+                SystemClock.sleep(1000);
             }
             mCurrentAppId = uniAppId;//璁板綍褰撳墠灏忕▼搴�
             mUniMPCaches.put(uniMP.getAppid(), uniMP);
         } catch (Exception e) {
             e.printStackTrace();
             HdlThreadLogic.toast(HDLApp.getInstance(), R.string.uni_open_error);
-            initDCUniMPSDK(HDLApp.getInstance());
+//            initDCUniMPSDK(HDLApp.getInstance());
             HdlLogLogic.print("鎵撳紑澶辫触===" + e.getMessage());
         }
     }
diff --git a/app/src/main/java/com/hdl/photovoltaic/uni/MySplashView.java b/app/src/main/java/com/hdl/photovoltaic/uni/MySplashView.java
new file mode 100755
index 0000000..69c6a9d
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/uni/MySplashView.java
@@ -0,0 +1,35 @@
+package com.hdl.photovoltaic.uni;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+import android.widget.TextView;
+
+import com.hdl.photovoltaic.R;
+import com.hdl.photovoltaic.ui.CPowerStationActivity;
+
+import io.dcloud.feature.sdk.Interface.IDCUniMPAppSplashView;
+
+public class MySplashView implements IDCUniMPAppSplashView {
+    View splashView;
+
+    @Override
+    public View getSplashView(Context context, String appid, String s1, String s2) {
+        // 鍦ˋctivity涓紝鍙互鐩存帴浣跨敤this鑾峰彇LayoutInflater
+        LayoutInflater inflater = LayoutInflater.from(context);
+        // 閫氳繃inflate鏂规硶灏嗗竷灞�鏂囦欢杞崲涓篤iew瀵硅薄
+        splashView = inflater.inflate(R.layout.activity_splash, null);
+        return splashView;
+    }
+
+    @Override
+    public void onCloseSplash(ViewGroup rootView) {
+        if (rootView != null)
+            rootView.removeView(splashView);
+    }
+}
diff --git a/app/src/main/res/anim/dcloud_unimp_close_exit.xml b/app/src/main/res/anim/dcloud_unimp_close_exit.xml
index e6a3dac..d3ee64d 100644
--- a/app/src/main/res/anim/dcloud_unimp_close_exit.xml
+++ b/app/src/main/res/anim/dcloud_unimp_close_exit.xml
@@ -1,17 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-    <alpha
-
-        android:duration="300"
-        android:fromAlpha="1.0"
-        android:toAlpha="0" />
-<!--    <translate-->
-<!--        android:fromXDelta="0"-->
-<!--        android:toXDelta="100%p"-->
-<!--        android:duration="300"-->
-<!--        android:interpolator="@android:anim/accelerate_interpolator"-->
-<!--        />-->
-</set>
+<translate xmlns:android="http://schemas.android.com/apk/res/android"
+    android:duration="200"
+    android:fromXDelta="0%p"
+    android:toXDelta="0%p" />
 
 
 
diff --git a/app/src/main/res/anim/dcloud_unimp_host_close_exit.xml b/app/src/main/res/anim/dcloud_unimp_host_close_exit.xml
index a54e277..d3ee64d 100644
--- a/app/src/main/res/anim/dcloud_unimp_host_close_exit.xml
+++ b/app/src/main/res/anim/dcloud_unimp_host_close_exit.xml
@@ -1,14 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-    <alpha
+<translate xmlns:android="http://schemas.android.com/apk/res/android"
+    android:duration="200"
+    android:fromXDelta="0%p"
+    android:toXDelta="0%p" />
 
-        android:duration="300"
-        android:fromAlpha="1.0"
-        android:toAlpha="0" />
-<!--    <translate-->
-<!--        android:fromXDelta="0"-->
-<!--        android:toXDelta="100%p"-->
-<!--        android:duration="300"-->
-<!--        android:interpolator="@android:anim/accelerate_interpolator"-->
-<!--        />-->
-</set>
\ No newline at end of file
+
+
+
diff --git a/app/src/main/res/anim/dcloud_unimp_host_open_enter.xml b/app/src/main/res/anim/dcloud_unimp_host_open_enter.xml
index 97e86f0..d3ee64d 100644
--- a/app/src/main/res/anim/dcloud_unimp_host_open_enter.xml
+++ b/app/src/main/res/anim/dcloud_unimp_host_open_enter.xml
@@ -1,12 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-    <alpha
-        android:duration="300"
-        android:fromAlpha="0"
-        android:toAlpha="1.0" />
-    <translate
-        android:duration="300"
-        android:fromXDelta="100%p"
-        android:interpolator="@android:anim/accelerate_interpolator"
-        android:toXDelta="0" />
-</set>
\ No newline at end of file
+<translate xmlns:android="http://schemas.android.com/apk/res/android"
+    android:duration="200"
+    android:fromXDelta="0%p"
+    android:toXDelta="0%p" />
+
+
+
+
diff --git a/app/src/main/res/anim/dcloud_unimp_open_enter.xml b/app/src/main/res/anim/dcloud_unimp_open_enter.xml
index b218075..d3ee64d 100644
--- a/app/src/main/res/anim/dcloud_unimp_open_enter.xml
+++ b/app/src/main/res/anim/dcloud_unimp_open_enter.xml
@@ -1,15 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-    <alpha
+<translate xmlns:android="http://schemas.android.com/apk/res/android"
+    android:duration="200"
+    android:fromXDelta="0%p"
+    android:toXDelta="0%p" />
 
-        android:duration="300"
-        android:fromAlpha="0.0"
-        android:toAlpha="1.0" />
-<!--    <translate-->
-<!--        android:fromXDelta="0"-->
-<!--        android:toXDelta="100%p"-->
-<!--        android:duration="300"-->
-<!--        android:interpolator="@android:anim/accelerate_interpolator"-->
 
-<!--        />-->
-</set>
\ No newline at end of file
+
+
diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml
new file mode 100644
index 0000000..6ff3692
--- /dev/null
+++ b/app/src/main/res/layout/activity_splash.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:alpha="0.6"
+    android:background="@color/text_FFFFFFFF">
+
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 4253f75..4fac929 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -4,6 +4,8 @@
         <item name="android:background">@color/black_overlay</item>
         <item name="android:buttonBarStyle">?android:attr/buttonBarStyle</item>
     </style>
-
+    <style name="NoAnimationTheme" parent="Theme.AppCompat.Light.NoActionBar">
+        <item name="android:windowAnimationStyle">@null</item>
+    </style>
 
 </resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index f887031..e7da647 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -58,7 +58,7 @@
 
     </style>
 
-    <style name="DCloudMPHostActivityTheme" parent="@style/Theme.AppCompat">
+    <style name="DCloudMPHostActivityTheme" parent="Theme.AppCompat.Light.NoActionBar">
         <item name="android:windowAnimationStyle">@style/uniMPHostWindowAnimation</item>
     </style>
 
diff --git a/build.gradle b/build.gradle
index 05c8bec..15d7362 100644
--- a/build.gradle
+++ b/build.gradle
@@ -52,4 +52,17 @@
 
 task clean(type: Delete) {
     delete rootProject.buildDir
+}
+
+// 淇濊瘉dex_files鏂囦欢涓寚瀹氱殑鏂囦欢閮藉姞杞藉埌Main Dex涓�
+afterEvaluate {
+    tasks.matching {
+        it.name.startsWith('dex')
+    }.each { dx ->
+        if (dx.additionalParameters == null) {
+            dx.additionalParameters = []
+        }
+        dx.additionalParameters += '--multi-dex'
+        dx.additionalParameters += "--main-dex-list=$projectDir/dex_files".toString()
+    }
 }
\ No newline at end of file

--
Gitblit v1.8.0