So after playing with the gingerbread leak, and seeing that samsung decided (so far, at least) to show the full kernel version in the "About Phone" menu in settings, I decided to fix it on normal vibrant froyo roms.
At the same time, I also added the CM style "mod version" string. Someone else (I forget who and when, and I sincerely apologize for that) attempted this before, but I don't know if they didn't finish, or if it just never took off, but regardless, I decided to add it too, lol. For developers, all you need to add to your build.prop is:
Code:
ro.modversion=Bionix-1.2.1Obviously replace everything after the = with your personal mod version.
Anyway, to show the full kernel version string:
Decompile Settings.apk, open /smali/com/android/settings/DeviceInfoSettings.smali and replace the entire method "getFormattedKernelVersion" with the following code:
Code:
.method private getFormattedKernelVersion()Ljava/lang/String; .locals 11 .prologue const/4 v8, 0x4 const-string v6, "\n" const-string v10, "Unavailable" const-string v9, "DeviceInfoSettings" :try_start_0 new-instance v5, Ljava/io/BufferedReader; new-instance v6, Ljava/io/FileReader; const-string v7, "/proc/version" invoke-direct {v6, v7}, Ljava/io/FileReader;->Then to add "Mod version" further down in the file, search for the following lines:(Ljava/lang/String;)V const/16 v7, 0x100 invoke-direct {v5, v6, v7}, Ljava/io/BufferedReader;-> (Ljava/io/Reader;I)V :try_end_0 .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 .local v5, reader:Ljava/io/BufferedReader; :try_start_1 invoke-virtual {v5}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String; :try_end_1 .catchall {:try_start_1 .. :try_end_1} :catchall_0 move-result-object v4 .local v4, procVersionStr:Ljava/lang/String; :try_start_2 invoke-virtual {v5}, Ljava/io/BufferedReader;->close()V const-string v0, "\\w+\\s+\\w+\\s+([^\\s]+)\\s+\\(([^\\s@]+(?:@[^\\s.]+)?)[^)]*\\)\\s+\\((?:[^(]*\\([^)]*\\))?[^)]*\\)\\s+([^\\s]+)\\s+(?:PREEMPT\\s+)?(.+)" .local v0, PROC_VERSION_REGEX:Ljava/lang/String; const-string v6, "\\w+\\s+\\w+\\s+([^\\s]+)\\s+\\(([^\\s@]+(?:@[^\\s.]+)?)[^)]*\\)\\s+\\((?:[^(]*\\([^)]*\\))?[^)]*\\)\\s+([^\\s]+)\\s+(?:PREEMPT\\s+)?(.+)" invoke-static {v6}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern; move-result-object v3 .local v3, p:Ljava/util/regex/Pattern; invoke-virtual {v3, v4}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher; move-result-object v2 .local v2, m:Ljava/util/regex/Matcher; invoke-virtual {v2}, Ljava/util/regex/Matcher;->matches()Z move-result v6 if-nez v6, :cond_0 const-string v6, "DeviceInfoSettings" new-instance v7, Ljava/lang/StringBuilder; invoke-direct {v7}, Ljava/lang/StringBuilder;-> ()V const-string v8, "Regex did not match on /proc/version: " invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v7 invoke-virtual {v7, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v7 invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v7 invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I const-string v6, "Unavailable" move-object v6, v10 .end local v0 #PROC_VERSION_REGEX:Ljava/lang/String; .end local v2 #m:Ljava/util/regex/Matcher; .end local v3 #p:Ljava/util/regex/Pattern; .end local v4 #procVersionStr:Ljava/lang/String; .end local v5 #reader:Ljava/io/BufferedReader; :goto_0 return-object v6 .restart local v5 #reader:Ljava/io/BufferedReader; :catchall_0 move-exception v6 invoke-virtual {v5}, Ljava/io/BufferedReader;->close()V throw v6 :try_end_2 .catch Ljava/io/IOException; {:try_start_2 .. :try_end_2} :catch_0 .end local v5 #reader:Ljava/io/BufferedReader; :catch_0 move-exception v6 move-object v1, v6 .local v1, e:Ljava/io/IOException; const-string v6, "DeviceInfoSettings" const-string v6, "IO Exception when getting kernel version for Device Info screen" invoke-static {v9, v6, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I const-string v6, "Unavailable" move-object v6, v10 goto :goto_0 .end local v1 #e:Ljava/io/IOException; .restart local v0 #PROC_VERSION_REGEX:Ljava/lang/String; .restart local v2 #m:Ljava/util/regex/Matcher; .restart local v3 #p:Ljava/util/regex/Pattern; .restart local v4 #procVersionStr:Ljava/lang/String; .restart local v5 #reader:Ljava/io/BufferedReader; :cond_0 :try_start_3 invoke-virtual {v2}, Ljava/util/regex/Matcher;->groupCount()I move-result v6 if-ge v6, v8, :cond_1 const-string v6, "DeviceInfoSettings" new-instance v7, Ljava/lang/StringBuilder; invoke-direct {v7}, Ljava/lang/StringBuilder;-> ()V const-string v8, "Regex match on /proc/version only returned " invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v7 invoke-virtual {v2}, Ljava/util/regex/Matcher;->groupCount()I move-result v8 invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v7 const-string v8, " groups" invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v7 invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v7 invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I const-string v6, "Unavailable" move-object v6, v10 goto :goto_0 :cond_1 new-instance v6, Ljava/lang/StringBuilder; const/4 v7, 0x1 invoke-virtual {v2, v7}, Ljava/util/regex/Matcher;->group(I)Ljava/lang/String; move-result-object v7 invoke-direct {v6, v7}, Ljava/lang/StringBuilder;-> (Ljava/lang/String;)V const-string v7, "\n" invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 const/4 v7, 0x2 invoke-virtual {v2, v7}, Ljava/util/regex/Matcher;->group(I)Ljava/lang/String; move-result-object v7 invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 const-string v7, " " invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 const/4 v7, 0x3 invoke-virtual {v2, v7}, Ljava/util/regex/Matcher;->group(I)Ljava/lang/String; move-result-object v7 invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 const-string v7, "\n" invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 const/4 v7, 0x4 invoke-virtual {v2, v7}, Ljava/util/regex/Matcher;->group(I)Ljava/lang/String; move-result-object v7 invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; :try_end_3 .catch Ljava/io/IOException; {:try_start_3 .. :try_end_3} :catch_0 move-result-object v6 goto :goto_0 .end method
Code:
.line 74 const-string v2, "kernel_version" invoke-virtual {p0, v2}, Lcom/android/settings/DeviceInfoSettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference; move-result-object v2 invoke-direct {p0}, Lcom/android/settings/DeviceInfoSettings;->getFormattedKernelVersion()Ljava/lang/String; move-result-object v3 invoke-virtual {v2, v3}, Landroid/preference/Preference;->setSummary(Ljava/lang/CharSequence;)V .line 77and before the .line 77 add the following:
Code:
const-string v2, "mod_version" const-string v3, "ro.modversion" invoke-direct {p0, v2, v3}, Lcom/android/settings/DeviceInfoSettings;->setValueSummary(Ljava/lang/String;Ljava/lang/String;)VThen add or change the following to /res/xml/device_info_settings.xml (I removed the "style="?android:preferenceInformationStyle" />" after Kernel version to ensure that it shows all three lines, since preferenceInformationStyle truncates at 2 lines by default)
Code:
and for the mod version, add the following to /res/values/strings.xml
and finally, declare the strings in /res/values/public.xmlMod version Unknown
Code:
<public type="string" name="mod_version" id="0x7f090639" /> <public type="string" name="mod_version_default" id="0x7f09063a" />Please note, you might need to increment/decrement the last digit or two to fit with any other mods already present in your Settings.apk.
Thank's to: s0niqu3
Tidak ada komentar :
Posting Komentar