forked from chinosk/gkms-local
				
			add version consistency check
This commit is contained in:
		
							parent
							
								
									0218543935
								
							
						
					
					
						commit
						ade47131f9
					
				| 
						 | 
				
			
			@ -15,8 +15,9 @@ android {
 | 
			
		|||
        applicationId "io.github.chinosk.gakumas.localify"
 | 
			
		||||
        minSdk 29
 | 
			
		||||
        targetSdk 34
 | 
			
		||||
        versionCode 10
 | 
			
		||||
        versionName "v2.0.2"
 | 
			
		||||
        versionCode 11
 | 
			
		||||
        versionName "v2.1.0"
 | 
			
		||||
        buildConfigField "String", "VERSION_NAME", "\"${versionName}\""
 | 
			
		||||
 | 
			
		||||
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
 | 
			
		||||
        vectorDrawables {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1510,10 +1510,6 @@ namespace GakumasLocal::HookMain {
 | 
			
		|||
        Local::LoadData();
 | 
			
		||||
        MasterLocal::LoadData();
 | 
			
		||||
 | 
			
		||||
        if (Config::lazyInit) {
 | 
			
		||||
            UnityResolveProgress::classProgress.current = 1;
 | 
			
		||||
            // UnityResolveProgress::startInit = false;
 | 
			
		||||
        }
 | 
			
		||||
        UnityResolveProgress::startInit = false;
 | 
			
		||||
 | 
			
		||||
        Log::Info("Plugin init finished.");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -107,6 +107,7 @@ fun <T> T.onClickStartGame() where T : Activity, T : IHasConfigItems {
 | 
			
		|||
            getProgramConfigContent(listOf("transRemoteZipUrl", "useAPIAssetsURL",
 | 
			
		||||
                "localAPIAssetsVersion", "p"), programConfig)
 | 
			
		||||
        )
 | 
			
		||||
        putExtra("lVerName", version)
 | 
			
		||||
        flags = Intent.FLAG_ACTIVITY_NEW_TASK
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -248,6 +248,9 @@ class GakumasHookMain : IXposedHookLoadPackage, IXposedHookZygoteInit {
 | 
			
		|||
        val gkmsData = intent.getStringExtra("gkmsData")
 | 
			
		||||
        val programData = intent.getStringExtra("localData")
 | 
			
		||||
        if (gkmsData != null) {
 | 
			
		||||
            val readVersion = intent.getStringExtra("lVerName")
 | 
			
		||||
            checkPluginVersion(activity, readVersion)
 | 
			
		||||
 | 
			
		||||
            gkmsDataInited = true
 | 
			
		||||
            val initConfig = try {
 | 
			
		||||
                json.decodeFromString<GakumasConfig>(gkmsData)
 | 
			
		||||
| 
						 | 
				
			
			@ -313,6 +316,40 @@ class GakumasHookMain : IXposedHookLoadPackage, IXposedHookZygoteInit {
 | 
			
		|||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun checkPluginVersion(activity: Activity, readVersion: String?) {
 | 
			
		||||
        val buildVersionName = BuildConfig.VERSION_NAME
 | 
			
		||||
        Log.i(TAG, "Checking Plugin Version: Build: $buildVersionName, Request: $readVersion")
 | 
			
		||||
        if (readVersion?.trim() == buildVersionName.trim()) {
 | 
			
		||||
            return
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        val builder = AlertDialog.Builder(activity)
 | 
			
		||||
        val infoBuilder = AlertDialog.Builder(activity)
 | 
			
		||||
        builder.setTitle("Warning")
 | 
			
		||||
        builder.setCancelable(false)
 | 
			
		||||
        builder.setMessage(when (getCurrentLanguage(activity)) {
 | 
			
		||||
            "zh" -> "检测到插件版本不一致\n内置版本: $buildVersionName\n请求版本: $readVersion\n\n这可能是使用了 LSPatch 的集成模式,仅更新了插件本体,未重新修补游戏导致的。请使用 $readVersion 版本的插件重新修补或使用本地模式。"
 | 
			
		||||
            else -> "Detected plugin version mismatch\nBuilt-in version: $buildVersionName\nRequested version: $readVersion\n\nThis may be caused by using the LSPatch integration mode, where only the plugin itself was updated without re-patching the game. Please re-patch the game using the $readVersion version of the plugin or use the local mode."
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        builder.setPositiveButton("OK") { dialog, _ ->
 | 
			
		||||
            dialog.dismiss()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        builder.setNegativeButton("Exit") { dialog, _ ->
 | 
			
		||||
            dialog.dismiss()
 | 
			
		||||
            activity.finishAffinity()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        val dialog = builder.create()
 | 
			
		||||
 | 
			
		||||
        infoBuilder.setOnCancelListener {
 | 
			
		||||
            dialog.show()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        dialog.show()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun showGetConfigFailedImpl(activity: Context, title: String, msg: String, infoButton: String, dlButton: String, okButton: String) {
 | 
			
		||||
        if (getConfigError == null) return
 | 
			
		||||
        val builder = AlertDialog.Builder(activity)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue