[app] Check version code mismatch (#1386)

This commit is contained in:
南宫雪珊 2021-11-11 14:24:25 +08:00 committed by GitHub
parent b5ba03318b
commit 872dcf4ba8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 20 additions and 18 deletions

View File

@ -34,8 +34,10 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import org.lsposed.manager.BuildConfig;
import org.lsposed.manager.ConfigManager;
import org.lsposed.manager.R;
import org.lsposed.manager.ui.dialog.FlashDialogBuilder;
import org.lsposed.manager.util.NavUtil;
import org.lsposed.manager.util.ThemeUtil;
import org.lsposed.manager.util.UpdateUtil;
import rikka.core.util.ResourceUtils;
import rikka.material.app.MaterialActivity;
@ -51,14 +53,17 @@ public class BaseActivity extends MaterialActivity {
// make sure the versions are consistent
if (BuildConfig.DEBUG) return;
if (!ConfigManager.isBinderAlive()) return;
var version = ConfigManager.getXposedVersionName();
if (BuildConfig.VERSION_NAME.equals(version)) return;
var version = ConfigManager.getXposedVersionCode();
if (BuildConfig.VERSION_CODE == version) return;
new MaterialAlertDialogBuilder(this)
.setMessage(BuildConfig.VERSION_NAME.compareTo(version) > 0 ?
R.string.outdated_core : R.string.outdated_manager)
.setMessage(getString(R.string.version_mismatch, version, BuildConfig.VERSION_CODE))
.setPositiveButton(android.R.string.ok, (dialog, id) -> {
NavUtil.startURL(this, getString(R.string.about_source));
finish();
if (UpdateUtil.canInstall()) {
new FlashDialogBuilder(this, (d, i) -> finish()).show();
} else {
NavUtil.startURL(this, getString(R.string.about_source));
finish();
}
})
.setCancelable(false)
.show();

View File

@ -3,6 +3,7 @@ package org.lsposed.manager.ui.dialog;
import static org.lsposed.manager.App.TAG;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Typeface;
import android.os.ParcelFileDescriptor;
import android.text.method.LinkMovementMethod;
@ -33,7 +34,7 @@ public class FlashDialogBuilder extends BlurBehindDialogBuilder {
private final TextView textView;
private final BorderNestedScrollView rootView;
public FlashDialogBuilder(@NonNull Context context) {
public FlashDialogBuilder(@NonNull Context context, DialogInterface.OnClickListener cancel) {
super(context);
var pref = App.getPreferences();
var notes = pref.getString("release_notes", "");
@ -51,7 +52,7 @@ public class FlashDialogBuilder extends BlurBehindDialogBuilder {
rootView = binding.getRoot();
setView(rootView);
setNegativeButton(android.R.string.cancel, null);
setNegativeButton(android.R.string.cancel, cancel);
setPositiveButton(R.string.install, null);
setCancelable(false);
}

View File

@ -87,7 +87,7 @@ public class HomeFragment extends BaseFragment implements RepoLoader.Listener {
}
} else {
if (UpdateUtil.canInstall()) {
new FlashDialogBuilder(activity).show();
new FlashDialogBuilder(activity, null).show();
return;
}
NavUtil.startURL(activity, getString(R.string.about_source));
@ -95,7 +95,7 @@ public class HomeFragment extends BaseFragment implements RepoLoader.Listener {
});
binding.status.setOnLongClickListener(v -> {
if (UpdateUtil.canInstall()) {
new FlashDialogBuilder(activity).show();
new FlashDialogBuilder(activity, null).show();
return true;
}
return false;

View File

@ -73,7 +73,7 @@ public class UpdateUtil {
.apply();
var updatedAt = Instant.parse(assets.get("updated_at").getAsString());
var downloadUrl = assets.get("browser_download_url").getAsString();
var nowZipTime = pref.getLong("zip_time", BuildConfig.BUILD_TIME);
var nowZipTime = pref.getLong("zip_time", 0);
if (updatedAt.isAfter(Instant.ofEpochSecond(nowZipTime))) {
var zip = downloadNewZipSync(downloadUrl, name);
var size = assets.get("size").getAsLong();
@ -124,8 +124,6 @@ public class UpdateUtil {
if (!ConfigManager.isBinderAlive()) return false;
var pref = App.getPreferences();
var zip = pref.getString("zip_file", null);
if (zip == null || !new File(zip).isFile()) return false;
var zipTime = pref.getLong("zip_time", BuildConfig.BUILD_TIME);
return zipTime > BuildConfig.BUILD_TIME;
return zip != null && new File(zip).isFile();
}
}

View File

@ -195,8 +195,7 @@
<string name="module_release_no_more">没有更旧的版本</string>
<string name="repo_load_failed">模块仓库加载失败:%s</string>
<!-- CrashReportActivity -->
<string name="outdated_core">LSPosed 应用的版本高于框架。请更新 LSPosed 框架。</string>
<string name="outdated_manager">LSPosed 框架的版本高于应用。请从 /data/adb/lspd/manager.apk 更新 LSPosed 应用。</string>
<string name="version_mismatch">LSPosed 框架的版本(%1$d)与管理器(%2$d)不同。请重装 LSPosed。</string>
<string name="manager_crashed">应用出现未知错误</string>
<string name="manager_crashed_info">反馈该问题到 </string>
<string name="send_crash_info">发送崩溃信息</string>

View File

@ -206,8 +206,7 @@
<string name="repo_load_failed">Failed to load module repo: %s</string>
<!-- CrashReportActivity -->
<string name="outdated_core">LSPosed app is newer than framework. Please update LSPosed framework.</string>
<string name="outdated_manager">LSPosed framework is newer than app. Please update the app from /data/adb/lspd/manager.apk manually.</string>
<string name="version_mismatch">The version of the LSPosed framework (%1$d) does not match manager (%2$d). Please reinstall LSPosed.</string>
<string name="manager_crashed">Manager crashed</string>
<string name="manager_crashed_info">report this to </string>
<string name="send_crash_info">Send crash info</string>