From ed400b7ee0a32565639aa7123d96031e7a95f3b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=BE=E7=A5=A5=E4=BF=8A?= Date: Wed, 26 Jan 2022 09:19:11 +0800 Subject: [PATCH 1/8] feature flutter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.修复原生Fresco动图失效问题 2.优化init.flutter.gradle 3.修复flutter_fresco空赋值报错问题 4.移除flutter根路由测试代码 --- assistant_flutter | 2 +- init.flutter.gradle | 36 +++++++++++++++++++++--------------- libraries/LGLibrary | 2 +- 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/assistant_flutter b/assistant_flutter index d668cd2efb..0dbdbd6de3 160000 --- a/assistant_flutter +++ b/assistant_flutter @@ -1 +1 @@ -Subproject commit d668cd2efb8df30de5c2bc4770e895b4df5facad +Subproject commit 0dbdbd6de3e5690ea49c8cd60b3ad695f1b1670b diff --git a/init.flutter.gradle b/init.flutter.gradle index dc9edf6103..3a455cae90 100644 --- a/init.flutter.gradle +++ b/init.flutter.gradle @@ -2,7 +2,8 @@ apply from: "init.gradle" apply from: "dependencies.gradle" -allprojects { project -> +rootProject { + buildscript { ext.flutter_io = System.env.FLUTTER_STORAGE_BASE_URL ?: "https://storage.googleapis.com" @@ -13,24 +14,29 @@ allprojects { project -> classpath "com.github.axen1314.lancet:lancet-plugin:$lancet_version" } } + repositories { maven { url "$flutter_io/download.flutter.io" }// Flutter } - project.afterEvaluate { - if (project.name == "app") { - Project flutterProject = project.rootProject.findProject(":flutter") - if (flutterProject == null) { - project.logger.error("Flutter project not found!") - } else { - project.apply plugin: 'me.ele.lancet' - project.dependencies { - implementation (flutterProject, { - exclude group: 'androidx.swiperefreshlayout' - }) - compileOnly "com.github.axen1314.lancet:lancet-base:$lancet_version" + + subprojects { + if (name == "app") { + afterEvaluate { project -> + Project flutterProject = rootProject.findProject(":flutter") + if (flutterProject == null) { + logger.error("Flutter project not found!") + } else { + project.apply plugin: 'me.ele.lancet' + project.dependencies { + implementation (flutterProject, { + exclude group: 'androidx.legacy', module: "legacy-support-v4" // imei_plugin + exclude group: 'com.facebook.fresco', module: 'fresco'// flutter_fresco + }) + compileOnly "com.github.axen1314.lancet:lancet-base:$lancet_version" + } } } - } } -} \ No newline at end of file +} + diff --git a/libraries/LGLibrary b/libraries/LGLibrary index 36c7ab24ef..2681cb01e7 160000 --- a/libraries/LGLibrary +++ b/libraries/LGLibrary @@ -1 +1 @@ -Subproject commit 36c7ab24efb4b718ef3d85593a155b8268e9f37a +Subproject commit 2681cb01e798c2e62721f57436d7d2dcd8a1ed8b From ce43cb6226169030302fe4b4bf2b9580e55c312c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=90=9B=E9=99=B6?= Date: Thu, 10 Feb 2022 17:20:55 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E5=A4=84=E7=90=86=20flutter=20=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=A0=8F=E6=98=BE=E7=A4=BA=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assistant_flutter | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assistant_flutter b/assistant_flutter index 0dbdbd6de3..a092128455 160000 --- a/assistant_flutter +++ b/assistant_flutter @@ -1 +1 @@ -Subproject commit 0dbdbd6de3e5690ea49c8cd60b3ad695f1b1670b +Subproject commit a092128455b88a81feaf3aae41bb97864ead6d4f From 8c607ae05a7aac6de0929fc392ffaf516d46c2b9 Mon Sep 17 00:00:00 2001 From: juntao Date: Thu, 10 Feb 2022 18:14:08 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20sentry=20=E5=9C=B0?= =?UTF-8?q?=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sentry.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sentry.properties b/sentry.properties index d24619d981..d31a993b5d 100644 --- a/sentry.properties +++ b/sentry.properties @@ -1,4 +1,4 @@ -defaults.url=https://sentry.ghzs.com +defaults.url=https://sentry.shanqu.cc defaults.project=android-ghzs defaults.org=lightgame auth.token=a36229702fb7457ea02027b1f454db2c7bf6c4270233457fafdcdf829c80144d \ No newline at end of file From 218091e1be93d0f1f878215194d8562ff3514972 Mon Sep 17 00:00:00 2001 From: leafwai Date: Thu, 17 Feb 2022 11:34:30 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E7=AE=B1=E8=B7=B3=E8=BD=AC=E6=84=8F=E8=A7=81=E5=8F=8D=E9=A6=88?= =?UTF-8?q?=E9=97=AA=E9=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/gh/common/util/DirectUtils.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/gh/common/util/DirectUtils.kt b/app/src/main/java/com/gh/common/util/DirectUtils.kt index 4f2aff2333..c9e539cbac 100644 --- a/app/src/main/java/com/gh/common/util/DirectUtils.kt +++ b/app/src/main/java/com/gh/common/util/DirectUtils.kt @@ -1771,8 +1771,8 @@ object DirectUtils { fun directToSuggestion( context: Context, type: SuggestType, - suggestHintType: String, - content: String, + suggestHintType: String? = null, + content: String? = null, isQaFeedback: Boolean = false, qaContentId: String = "" ) { From 891958c4d9b32e547f46c37ae65d16fa7cb5ef38 Mon Sep 17 00:00:00 2001 From: juntao Date: Fri, 18 Feb 2022 16:28:11 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E7=BB=91=E5=AE=9A=E6=9C=89=E6=9C=BA=E7=8E=87=E8=A7=A6=E5=8F=91?= =?UTF-8?q?=E7=9A=84=E6=97=A0=E5=93=8D=E5=BA=94=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/gh/common/DefaultJsApi.kt | 5 ++- .../java/com/gh/common/util/LoginHelper.kt | 41 +++++++++++-------- .../gh/gamecenter/fragment/LoginFragment.java | 5 +++ 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/gh/common/DefaultJsApi.kt b/app/src/main/java/com/gh/common/DefaultJsApi.kt index 2e51324f70..da49cfd762 100644 --- a/app/src/main/java/com/gh/common/DefaultJsApi.kt +++ b/app/src/main/java/com/gh/common/DefaultJsApi.kt @@ -33,7 +33,6 @@ import java.io.BufferedOutputStream import java.io.File import java.io.FileOutputStream import java.util.* -import kotlin.collections.ArrayList class DefaultJsApi(var context: Context) { @@ -126,10 +125,14 @@ class DefaultJsApi(var context: Context) { handler.complete(false) } }) + + LoginHelper.unregisterCallback() } override fun onLoginFailure(loginType: LoginTag, error: String) { handler.complete(false) + + LoginHelper.unregisterCallback() } }) } diff --git a/app/src/main/java/com/gh/common/util/LoginHelper.kt b/app/src/main/java/com/gh/common/util/LoginHelper.kt index 07e9585186..fbeb23dc73 100644 --- a/app/src/main/java/com/gh/common/util/LoginHelper.kt +++ b/app/src/main/java/com/gh/common/util/LoginHelper.kt @@ -22,8 +22,6 @@ import com.tencent.tauth.Tencent import com.tencent.tauth.UiError import org.json.JSONException import org.json.JSONObject -import java.lang.ref.WeakReference - /** * 第三方登录辅助类 @@ -42,7 +40,7 @@ object LoginHelper { private var mQqLoginListener: IUiListener private var mAccessToken: Oauth2AccessToken? = null // weibo - private var mLoginCallback: WeakReference? = null + private var mLoginCallback: LoginCallback? = null init { val context = HaloApp.getInstance().application.applicationContext @@ -70,11 +68,11 @@ object LoginHelper { ) content.put("access_token", o.getString("access_token")) - mLoginCallback?.get()?.onLoginSuccess(LoginTag.qq, content) // 回调QQ登录成功 + mLoginCallback?.onLoginSuccess(LoginTag.qq, content) // 回调QQ登录成功 } catch (e: JSONException) { val errorString = "QQ登录数据回调异常::$e" - mLoginCallback?.get()?.onLoginFailure(LoginTag.qq, errorString) // 回调QQ登录失败 + mLoginCallback?.onLoginFailure(LoginTag.qq, errorString) // 回调QQ登录失败 Utils.log(errorString) e.printStackTrace() @@ -83,7 +81,7 @@ object LoginHelper { } override fun onCancel() { - mLoginCallback?.get()?.onLoginFailure(LoginTag.qq, "登录取消") + mLoginCallback?.onLoginFailure(LoginTag.qq, "登录取消") Utils.log("QQ 登录取消") } @@ -92,7 +90,7 @@ object LoginHelper { } override fun onError(p0: UiError?) { - mLoginCallback?.get()?.onLoginFailure(LoginTag.qq, "登录失败") + mLoginCallback?.onLoginFailure(LoginTag.qq, "登录失败") Utils.log("QQ 登录失败") } } @@ -110,22 +108,22 @@ object LoginHelper { @JvmStatic fun onWechatLoginSuccess(content: JSONObject) { - mLoginCallback?.get()?.onLoginSuccess(LoginTag.wechat, content) + mLoginCallback?.onLoginSuccess(LoginTag.wechat, content) } @JvmStatic fun onWechatLoginFailure(error: String) { - mLoginCallback?.get()?.onLoginFailure(LoginTag.wechat, error) + mLoginCallback?.onLoginFailure(LoginTag.wechat, error) } @JvmStatic fun onDouYinLoginSuccess(content: JSONObject) { - mLoginCallback?.get()?.onLoginSuccess(LoginTag.douyin, content) + mLoginCallback?.onLoginSuccess(LoginTag.douyin, content) } @JvmStatic fun onDouYinLoginFailure(error: String) { - mLoginCallback?.get()?.onLoginFailure(LoginTag.douyin, error) + mLoginCallback?.onLoginFailure(LoginTag.douyin, error) } @JvmStatic @@ -136,7 +134,7 @@ object LoginHelper { // QQ登录 @JvmStatic fun loginWithQQ(loginCallback: LoginCallback, activity: Activity) { - mLoginCallback = WeakReference(loginCallback) + mLoginCallback = loginCallback if (!mTencent.isSessionValid) { Utils.log("QQLogin") mTencent.login(activity, "all", mQqLoginListener) @@ -153,7 +151,7 @@ object LoginHelper { // 微信登录 @JvmStatic fun loginWithWechat(loginCallback: LoginCallback) { - mLoginCallback = WeakReference(loginCallback) + mLoginCallback = loginCallback val register = mIWXAPI.registerApp(Config.WECHAT_APPID) val req = SendAuth.Req() @@ -180,7 +178,7 @@ object LoginHelper { } mWBAPI = WBAPIFactory.createWBAPI(context) //初始化微博分享 - mLoginCallback = WeakReference(loginCallback) + mLoginCallback = loginCallback mWBAPI.registerApp( context, AuthInfo(context, Config.WEIBO_APPKEY, "http://www.sina.com", WEIBO_SCOPE) @@ -208,19 +206,18 @@ object LoginHelper { ) content.put("refresh_token", token.refreshToken) // content.put("refresh_token_expire", Utils.getTime(mContext) + 86400 * 30); // refresh_token 有效期30天 - mLoginCallback?.get()?.onLoginSuccess(LoginTag.weibo, content)// 微博 登录回调 + mLoginCallback?.onLoginSuccess(LoginTag.weibo, content)// 微博 登录回调 } } } override fun onError(error: com.sina.weibo.sdk.common.UiError?) { - mLoginCallback?.get()?.onLoginFailure(LoginTag.weibo, "微博登录需要客户端支持,请先安装微博") + mLoginCallback?.onLoginFailure(LoginTag.weibo, "微博登录需要客户端支持,请先安装微博") } override fun onCancel() { - mLoginCallback?.get()?.onLoginFailure(LoginTag.weibo, "取消授权") + mLoginCallback?.onLoginFailure(LoginTag.weibo, "取消授权") } - }) // 第一次启动本应用,AccessToken 不可用 @@ -240,6 +237,14 @@ object LoginHelper { // douYinOpenApi.authorize(request) } + /** + * 移除登录 callback 引用,避免内存泄漏 + */ + @JvmStatic + fun unregisterCallback() { + mLoginCallback = null + } + interface LoginCallback { fun onLoginSuccess(loginType: LoginTag, jsonContent: JSONObject) diff --git a/app/src/main/java/com/gh/gamecenter/fragment/LoginFragment.java b/app/src/main/java/com/gh/gamecenter/fragment/LoginFragment.java index 951dbf3bf3..6eb88e26df 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/LoginFragment.java +++ b/app/src/main/java/com/gh/gamecenter/fragment/LoginFragment.java @@ -459,6 +459,11 @@ LoginFragment extends NormalFragment implements LoginUtils.onCaptchaCallBackList } } + @Override + public void onDestroy() { + super.onDestroy(); + LoginHelper.unregisterCallback(); + } private void login(JSONObject content, LoginTag loginTag) { if (loginTag.equals(LoginTag.phone)) { From c7cfb7d7b7f5c7bcc815ae98bbed2574c8f09c5f Mon Sep 17 00:00:00 2001 From: juntao Date: Fri, 18 Feb 2022 17:00:14 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=9B=A0=E4=B8=BA=E5=86=85=E5=AD=98=E4=B8=8D?= =?UTF-8?q?=E8=B6=B3=E5=9B=9E=E6=94=B6=E6=97=B6=E7=9A=84=E9=97=AA=E9=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/gh/gamecenter/home/HomeFragment.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/gh/gamecenter/home/HomeFragment.kt b/app/src/main/java/com/gh/gamecenter/home/HomeFragment.kt index 84140ad07b..668fb7e695 100644 --- a/app/src/main/java/com/gh/gamecenter/home/HomeFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/home/HomeFragment.kt @@ -226,7 +226,9 @@ class HomeFragment : LazyFragment() { override fun onDestroy() { super.onDestroy() - mScrollCalculatorHelper.currentPlayer?.release() + if (::mScrollCalculatorHelper.isInitialized) { + mScrollCalculatorHelper.currentPlayer?.release() + } } private fun handleAutoScroll(resumeScroll: Boolean) { From b13aede1d3e0087efe2f78c99a5bed6daa671f75 Mon Sep 17 00:00:00 2001 From: juntao Date: Mon, 21 Feb 2022 15:40:55 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B7=B3=E8=BD=AC?= =?UTF-8?q?=E6=84=8F=E8=A7=81=E5=8F=8D=E9=A6=88=E9=97=AA=E9=80=80=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/gh/common/util/DirectUtils.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/gh/common/util/DirectUtils.kt b/app/src/main/java/com/gh/common/util/DirectUtils.kt index c9e539cbac..c3d5b57bab 100644 --- a/app/src/main/java/com/gh/common/util/DirectUtils.kt +++ b/app/src/main/java/com/gh/common/util/DirectUtils.kt @@ -1791,8 +1791,8 @@ object DirectUtils { fun directToSuggestion( context: Context, type: SuggestType, - suggestHintType: String, - content: String, + suggestHintType: String? = null, + content: String? = null, game: SimpleGameEntity, platform: String = "" ) { From 8e5168005e10321f2a09538ac92baceed15e6fad Mon Sep 17 00:00:00 2001 From: leafwai Date: Mon, 21 Feb 2022 17:06:10 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B8=B8=E6=88=8F?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=89=93=E5=BC=80=E5=A4=A7=E5=9B=BE=E5=8A=A8?= =?UTF-8?q?=E7=94=BB=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/gamecenter/ImageViewerActivity.kt | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/gh/gamecenter/ImageViewerActivity.kt b/app/src/main/java/com/gh/gamecenter/ImageViewerActivity.kt index 2d0862d2ed..9e401f3d39 100644 --- a/app/src/main/java/com/gh/gamecenter/ImageViewerActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/ImageViewerActivity.kt @@ -16,7 +16,6 @@ import android.net.Uri import android.os.Bundle import android.text.TextUtils import android.util.Base64 -import android.util.DisplayMetrics import android.util.SparseArray import android.view.View import android.view.ViewGroup @@ -58,9 +57,11 @@ import com.github.piasy.biv.view.BigImageView import com.github.piasy.biv.view.FrescoImageViewFactory import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers -import java.io.* +import java.io.BufferedOutputStream +import java.io.File +import java.io.FileOutputStream import java.util.* -import kotlin.collections.ArrayList +import kotlin.math.abs import kotlin.math.roundToInt /** @@ -172,9 +173,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener { mIndicatorTv.text = String.format("%d/%d", mInitialPosition + 1, mUrlList!!.size) // init slide - val outMetrics = DisplayMetrics() - windowManager?.defaultDisplay?.getMetrics(outMetrics) - val widthPixels = outMetrics.widthPixels + val widthPixels = DisplayUtils.getScreenWidth() mLimitWidth = if (NetworkUtils.isWifiOr4GConnected(this)) { widthPixels * 2 } else { @@ -417,8 +416,6 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener { } private fun finishWithAnimation(fadeOnly: Boolean) { - updateOriginPosition(mViewPager.currentItem) - val animatorSet = AnimatorSet() val translateXAnimator = ValueAnimator.ofFloat(0F, mTranslationX).apply { @@ -469,7 +466,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener { } } - private fun shouldResize() = !(mImageRatio == mViewRatio || scaleWithoutResize()) + private fun shouldResize() = !(abs(mImageRatio - mViewRatio) <= 0.1F || scaleWithoutResize()) private fun justChangeBoundsAndTransform() = mImageRatio < mViewRatio && mIsFromImageContainerView && adapter?.count == 1 @@ -608,8 +605,6 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener { } private fun performExitAnimation(view: DraggableBigImageView, scale: Float, fadeOnly: Boolean) { - updateOriginPosition(mViewPager.currentItem) - val finalScale = mOriginWidth / mTargetWidth val finalTranslationX = mOriginLeft - (1 - finalScale) * mTargetWidth / 2 val finalTranslationY = mOriginTop - ((1 - finalScale) * mTargetHeight + (mTargetHeight * finalScale - mOriginHeight)) / 2 @@ -726,7 +721,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener { return ObjectAnimator.ofFloat(startHeight.toFloat(), endHeight.toFloat()).apply { addUpdateListener { sceneRoot.findViewById(R.id.viewimage_iv_show)?.ssiv?.run { - if (scaleWithoutResize()) { + if (abs(mImageRatio - mViewRatio) > 0.1F && scaleWithoutResize()) { maxScale = scale setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP) } @@ -768,6 +763,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener { } imageView.setDragListener(object : DraggableBigImageView.DragListener { override fun onRelease(draggableBigImageView: DraggableBigImageView, scale: Float) { + updateOriginPosition(mViewPager.currentItem) performExitAnimation(draggableBigImageView, scale, isFadeOnly()) } @@ -812,7 +808,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener { // } // }) ssiv.setOnClickListener { - finishWithAnimation(isFadeOnly()) + onBackPressed() } } } @@ -875,6 +871,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener { private fun isFadeOnly() = mViewPager.currentItem >= mOriginLeftList?.size ?: 0 || mOriginLeft == 0 || mOriginTop == 0 override fun onBackPressed() { + updateOriginPosition(mViewPager.currentItem) finishWithAnimation(isFadeOnly()) }