浏览代码

v1.0.0开发:修改core模块中单例写法更符合kotlin规范

#Suyghur 3 年之前
父节点
当前提交
2abc1758f1

+ 3 - 3
gradle/wrapper/gradle-wrapper.properties

@@ -1,6 +1,6 @@
-#Wed Jun 09 15:49:46 CST 2021
+#Sun Jun 27 19:44:37 CST 2021
 distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
 distributionPath=wrapper/dists
-zipStorePath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip

+ 53 - 10
library_base/src/main/java/cn/yyxx/eyuangame/base/EYuanGame.kt

@@ -51,7 +51,11 @@ class EYuanGame private constructor() {
         if (mSdkBridge == null) {
             mSdkBridge = getSdkBridgeManager(application)
         }
-        SdkBridgeManager.call(Function.ATTACH_BASE_CONTEXT, arrayOf(Application::class.java, Context::class.java), arrayOf(application, context))
+        SdkBridgeManager.call(
+            Function.ATTACH_BASE_CONTEXT,
+            arrayOf(Application::class.java, Context::class.java),
+            arrayOf(application, context)
+        )
     }
 
 
@@ -78,7 +82,11 @@ class EYuanGame private constructor() {
         if (mSdkBridge == null) {
             mSdkBridge = getSdkBridgeManager(application)
         }
-        SdkBridgeManager.call(Function.INIT_APPLICATION, arrayOf(Application::class.java), arrayOf(application))
+        SdkBridgeManager.call(
+            Function.INIT_APPLICATION,
+            arrayOf(Application::class.java),
+            arrayOf(application)
+        )
     }
 
     /**
@@ -107,7 +115,12 @@ class EYuanGame private constructor() {
 
         SdkBridgeManager.call(
             Function.INITIALIZE,
-            arrayOf(Activity::class.java, Boolean::class.java, ICallback::class.java, IInitialize::class.java),
+            arrayOf(
+                Activity::class.java,
+                Boolean::class.java,
+                ICallback::class.java,
+                IInitialize::class.java
+            ),
             arrayOf(activity, isLandscape, callback, initCallback)
         )
     }
@@ -167,7 +180,11 @@ class EYuanGame private constructor() {
         }
 
         clickLogoutTime = System.currentTimeMillis()
-        SdkBridgeManager.call(Function.LOGOUT, arrayOf(Activity::class.java, ICallback::class.java), arrayOf(activity, callback))
+        SdkBridgeManager.call(
+            Function.LOGOUT,
+            arrayOf(Activity::class.java, ICallback::class.java),
+            arrayOf(activity, callback)
+        )
     }
 
     /**
@@ -214,7 +231,11 @@ class EYuanGame private constructor() {
             return
         }
 
-        SdkBridgeManager.call(Function.ROLE_CREATE, arrayOf(Activity::class.java, SdkRoleInfo::class.java), arrayOf(activity, roleInfo))
+        SdkBridgeManager.call(
+            Function.ROLE_CREATE,
+            arrayOf(Activity::class.java, SdkRoleInfo::class.java),
+            arrayOf(activity, roleInfo)
+        )
     }
 
     /**
@@ -232,7 +253,11 @@ class EYuanGame private constructor() {
             return
         }
 
-        SdkBridgeManager.call(Function.ROLE_LAUNCHER, arrayOf(Activity::class.java, SdkRoleInfo::class.java), arrayOf(activity, roleInfo))
+        SdkBridgeManager.call(
+            Function.ROLE_LAUNCHER,
+            arrayOf(Activity::class.java, SdkRoleInfo::class.java),
+            arrayOf(activity, roleInfo)
+        )
     }
 
     /**
@@ -250,7 +275,11 @@ class EYuanGame private constructor() {
             return
         }
 
-        SdkBridgeManager.call(Function.ROLE_LEVEL_UP, arrayOf(Activity::class.java, SdkRoleInfo::class.java), arrayOf(activity, roleInfo))
+        SdkBridgeManager.call(
+            Function.ROLE_LEVEL_UP,
+            arrayOf(Activity::class.java, SdkRoleInfo::class.java),
+            arrayOf(activity, roleInfo)
+        )
     }
 
     /**
@@ -268,7 +297,11 @@ class EYuanGame private constructor() {
             return
         }
 
-        SdkBridgeManager.call(Function.OPEN_EXIT_VIEW, arrayOf(Activity::class.java, ICallback::class.java), arrayOf(activity, callback))
+        SdkBridgeManager.call(
+            Function.OPEN_EXIT_VIEW,
+            arrayOf(Activity::class.java, ICallback::class.java),
+            arrayOf(activity, callback)
+        )
     }
 
     fun onStart(activity: Activity) {
@@ -336,7 +369,11 @@ class EYuanGame private constructor() {
             return
         }
 
-        SdkBridgeManager.call(Function.ON_START, arrayOf(Activity::class.java, Intent::class.java), arrayOf(activity, intent))
+        SdkBridgeManager.call(
+            Function.ON_START,
+            arrayOf(Activity::class.java, Intent::class.java),
+            arrayOf(activity, intent)
+        )
     }
 
     fun getCurrentUserId(): String {
@@ -348,7 +385,11 @@ class EYuanGame private constructor() {
             return ""
         }
 
-        return SdkBridgeManager.callback(Function.GET_CURRENT_USER_ID, emptyArray(), emptyArray()) as String
+        return SdkBridgeManager.callback(
+            Function.GET_CURRENT_USER_ID,
+            emptyArray(),
+            emptyArray()
+        ) as String
     }
 
     fun getSdkVersion(): String {
@@ -385,6 +426,7 @@ class EYuanGame private constructor() {
 
         private const val CLICK_INTERVAL: Int = 1500
 
+        @Keep
         private object ColumbusHolder {
             val INSTANCE: EYuanGame = EYuanGame()
         }
@@ -392,6 +434,7 @@ class EYuanGame private constructor() {
         /**
          * 防止单例对象在反序列化时重新生成对象
          */
+        @Keep
         private fun readResolve(): Any {
             return ColumbusHolder.INSTANCE
         }

+ 0 - 66
library_core/src/main/cpp/sdk_drive.cpp

@@ -13,66 +13,6 @@
 #include "include/logger.h"
 #include "aes/aes_utils.h"
 
-static void GetAesKey(JNIEnv *env, jobject thiz) {
-    uint8_t *aes_key = AesUtils::GetKey();
-    uint8_t *iv = AesUtils::GetIv(aes_key);
-    LOGD("%s", aes_key);
-    LOGD("%s", iv);
-    LOGD("------ invoke free() ------ ");
-    free(aes_key);
-    free(iv);
-//    free((void *) aes_key);
-//    free((void *) iv);
-    aes_key = nullptr;
-    iv = nullptr;
-    LOGD("%s", aes_key);
-    LOGD("%s", iv);
-}
-
-//static jstring AesEncrypt(JNIEnv *env, jobject thiz, jstring src) {
-//    const char *src_ = env->GetStringUTFChars(src, JNI_FALSE);
-//    char *raw = AesUtils::Encrypt(src_);
-//    LOGD("%s", raw);
-//
-//    env->ReleaseStringUTFChars(src, src_);
-//
-//    jstring result = ToolKit::GetJString(env, raw);
-//    free(raw);
-//
-//    return result;
-//}
-
-static jstring AesDecrypt(JNIEnv *env, jobject thiz, jstring raw, jstring key) {
-    const char *raw_ = env->GetStringUTFChars(raw, JNI_FALSE);
-    const auto *key_ = reinterpret_cast<const uint8_t *>(env->GetStringUTFChars(key, JNI_FALSE));
-    char *src = AesUtils::Decrypt(raw_, key_);
-    env->ReleaseStringUTFChars(raw, raw_);
-    jstring result = ToolKit::GetJString(env, src);
-    free(src);
-    return result;
-}
-
-
-//static jstring RsaEncrypt(JNIEnv *env, jobject thiz, jstring src) {
-//    const char *src_ = env->GetStringUTFChars(src, JNI_FALSE);
-//    std::string key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCAVatPhPaZtxBkLBZDnOLf7no6VfnjBRMXhpOnWmkkDX4zurB/OKisYDFnR0UUVnKn717+absfLlDk9HZWBcTMznsUju9fuXlu3Elr8HeI3en7E0KIQzxkY1GT1+qtZ+tCjWuyMmUw4vWpO8/MRU3f6nc4io3w+7N+dP24BIo0ZwIDAQAB";
-//    std::string raw = RsaUtils::EncryptByPublicKey(key, src_);
-////    LOGD("base64 raw : %s", raw.c_str());
-//    env->ReleaseStringUTFChars(src, src_);
-//    jstring result = ToolKit::GetJString(env, raw.c_str());
-//    return result;
-//}
-//
-//static jstring RsaDecrypt(JNIEnv *env, jobject thiz, jstring raw) {
-//    const char *raw_ = env->GetStringUTFChars(raw, JNI_FALSE);
-////    std::string key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCAVatPhPaZtxBkLBZDnOLf7no6VfnjBRMXhpOnWmkkDX4zurB/OKisYDFnR0UUVnKn717+absfLlDk9HZWBcTMznsUju9fuXlu3Elr8HeI3en7E0KIQzxkY1GT1+qtZ+tCjWuyMmUw4vWpO8/MRU3f6nc4io3w+7N+dP24BIo0ZwIDAQAB";
-//    std::string key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCbROlODv7iVaFhRAomQ9kSoV+whoebwVUDWUd968V8jbLQg0bAh6ad22O1bo33f4zNmIuDzdQMGOVgRyuvKsS9GyE+gh4XPDpSUmi/bZTl0wr8Y/yTi8eW+sXxn6Ao4oo4bg+qPewUxjTS2u4Pe1Zl3IC48HFALTAo0PSSXS5b7wIDAQAB";
-//    std::string src = RsaUtils::DecryptByPublicKey2(env, key, raw_);
-//    env->ReleaseStringUTFChars(raw, raw_);
-//    jstring result = ToolKit::GetJString(env, src.c_str());
-//    return result;
-//}
-
 static void InitSdkDrive(JNIEnv *env, jobject thiz, jobject context) {
     CommMap::GetInstance()->Init(env, context);
     Logger::is_debug = ParamsKit::GetDebugModel(env, context);
@@ -169,12 +109,6 @@ static JNINativeMethod gMethod[] = {
         {"getParam",     "(Ljava/lang/String;)Ljava/lang/String;",                                            (void *) GetParam},
         {"invokeJob",    "(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;", (void *) InvokeJob},
         {"parseJob",     "(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;", (void *) ParseJob},
-
-//        {"getAesKey",  "()V",                                                      (void *) GetAesKey},
-//        {"aesEncrypt",   "(Ljava/lang/String;)Ljava/lang/String;",                                            (void *) AesEncrypt},
-//        {"aesDecrypt",   "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;",        (void *) AesDecrypt},
-//        {"rsaEncrypt", "(Ljava/lang/String;)Ljava/lang/String;",                   (void *) RsaEncrypt},
-//        {"rsaDecrypt",   "(Ljava/lang/String;)Ljava/lang/String;",                          (void *) RsaDecrypt}
 };
 
 extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {

+ 1 - 1
library_core/src/main/java/cn/yyxx/eyuangame/core/impl/SdkBridgeImpl.kt

@@ -83,7 +83,7 @@ class SdkBridgeImpl(context: Context) {
 
     fun initApplication(application: Application) {
         Logger.i("Columbus initApplication ...")
-        MMKVUtils.getInstance().init(application)
+        MMKVUtils.instance.init(application)
     }
 
     fun initialize(activity: Activity, isLandscape: Boolean, callback: ICallback, initCallback: IInitialize) {

+ 1 - 1
library_core/src/main/java/cn/yyxx/eyuangame/core/impl/login/LoginActivity.kt

@@ -110,7 +110,7 @@ class LoginActivity : FragmentActivity(), View.OnClickListener {
             autoLoginDialog = null
         }
 
-        session = SessionUtils.getInstance().getLocalLastSession(this)
+        session = SessionUtils.instance.getLocalLastSession(this)
 
         if (session == null || !isAutoLogin) {
             showChooseDialog = true

+ 2 - 2
library_core/src/main/java/cn/yyxx/eyuangame/core/impl/login/UserSignInImpl.kt

@@ -169,7 +169,7 @@ class UserSignInImpl constructor(val activity: LoginActivity, private val callba
                                 loginType = SdkBackLoginInfo.instance.loginType
                                 this.userName = userName
                                 this.pwd = pwd
-                                SessionUtils.getInstance().saveSession(context, this)
+                                SessionUtils.instance.saveSession(context, this)
                             }
                             callback.onSuccess(SdkBackLoginInfo.instance.toJsonString())
                         } catch (e: JSONException) {
@@ -208,7 +208,7 @@ class UserSignInImpl constructor(val activity: LoginActivity, private val callba
                                 userName = loginParams.getString("uname")
                                 pwd = loginParams.getString("pwd")
                             }
-                            SessionUtils.getInstance().saveSession(context, this)
+                            SessionUtils.instance.saveSession(context, this)
                         }
                         callback.onSuccess(SdkBackLoginInfo.instance.toJsonString())
                     } catch (e: JSONException) {

+ 2 - 2
library_core/src/main/java/cn/yyxx/eyuangame/core/impl/login/fragment/LauncherFragment.kt

@@ -166,7 +166,7 @@ class LauncherFragment : Fragment(), View.OnClickListener {
     }
 
     private fun autoFillUserInfo() {
-        val temp = SessionUtils.getInstance().getLocalSessionLimit3(requireActivity())
+        val temp = SessionUtils.instance.getLocalSessionLimit3(requireActivity())
         if (temp.size == 0) {
             //本地没有缓存账号,直接返回
             eetAccount.rightImageView.visibility = View.GONE
@@ -405,7 +405,7 @@ class LauncherFragment : Fragment(), View.OnClickListener {
 
     private inner class AccountDeleteClick(val session: Session) : View.OnClickListener {
         override fun onClick(v: View?) {
-            SessionUtils.getInstance().deleteUserInfo(requireActivity(), session.userId)
+            SessionUtils.instance.deleteUserInfo(requireActivity(), session.userId)
             userLists.clear()
             autoFillUserInfo()
         }

+ 2 - 14
library_core/src/main/java/cn/yyxx/eyuangame/core/linking/Linking.kt

@@ -26,20 +26,8 @@ class Linking {
 
 
     companion object {
-        fun getInstance(): Linking {
-            return LinkingHolder.INSTANCE
-        }
-
-
-        private object LinkingHolder {
-            val INSTANCE: Linking = Linking()
-        }
-
-        /**
-         * 防止单例对象在反序列化时重新生成对象
-         */
-        private fun readResolve(): Any {
-            return LinkingHolder.INSTANCE
+        val instance: Linking by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
+            Linking()
         }
     }
 }

+ 3 - 6
library_core/src/main/java/cn/yyxx/eyuangame/core/utils/MMKVUtils.kt

@@ -1,6 +1,7 @@
 package cn.yyxx.eyuangame.core.utils
 
 import android.content.Context
+import androidx.annotation.Keep
 import cn.yyxx.eyuangame.base.utils.Logger
 import com.tencent.mmkv.MMKV
 import com.tencent.mmkv.MMKVHandler
@@ -43,12 +44,8 @@ class MMKVUtils private constructor() : MMKVHandler {
     }
 
     companion object {
-        fun getInstance(): MMKVUtils {
-            return MMKVUtilsHolder.INSTANCE
+        val instance:MMKVUtils by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED){
+            MMKVUtils()
         }
     }
-
-    private object MMKVUtilsHolder {
-        val INSTANCE: MMKVUtils = MMKVUtils()
-    }
 }

+ 8 - 9
library_core/src/main/java/cn/yyxx/eyuangame/core/utils/SessionUtils.kt

@@ -2,6 +2,8 @@ package cn.yyxx.eyuangame.core.utils
 
 import android.content.Context
 import android.text.TextUtils
+import androidx.annotation.Keep
+import cn.yyxx.eyuangame.base.EYuanGame
 import cn.yyxx.eyuangame.base.utils.Logger
 import cn.yyxx.eyuangame.core.entity.LoginType
 import cn.yyxx.eyuangame.core.entity.Session
@@ -57,7 +59,7 @@ class SessionUtils private constructor() {
                 HostModelUtils.ENV_TEST -> "test"
                 else -> "online"
             }
-            MMKVUtils.getInstance().mmkv?.encode(keyName, jsonObject.toString())
+            MMKVUtils.instance.mmkv?.encode(keyName, jsonObject.toString())
 //            FileUtils.writeFile(jsonObject.toString(), filePath)
         }
     }
@@ -102,7 +104,7 @@ class SessionUtils private constructor() {
             HostModelUtils.ENV_TEST -> "test"
             else -> "online"
         }
-        val json = MMKVUtils.getInstance().mmkv?.decodeString(keyName)
+        val json = MMKVUtils.instance.mmkv?.decodeString(keyName)
 //        val json = FileUtils.readFile(FileUtils.getUserInfoFilePath(context))
         return if (TextUtils.isEmpty(json)) {
             mutableListOf()
@@ -151,7 +153,7 @@ class SessionUtils private constructor() {
             HostModelUtils.ENV_TEST -> "test"
             else -> "online"
         }
-        MMKVUtils.getInstance().mmkv?.encode(keyName, jsonObject.toString())
+        MMKVUtils.instance.mmkv?.encode(keyName, jsonObject.toString())
 //        FileUtils.writeFile(jsonObject.toString(), filePath)
     }
 
@@ -192,12 +194,9 @@ class SessionUtils private constructor() {
     }
 
     companion object {
-        fun getInstance(): SessionUtils {
-            return SessionUtilsHolder.INSTANCE
-        }
-    }
 
-    private object SessionUtilsHolder {
-        val INSTANCE: SessionUtils = SessionUtils()
+        val instance: SessionUtils by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
+            SessionUtils()
+        }
     }
 }