6.6.2 - Alpha - 增强 APK 文件 V1 签名方案的检测准确性
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$data": {
|
"$data": {
|
||||||
"v6.6.2": {
|
"v6.6.2": {
|
||||||
"released_date": "2025/01/02",
|
"released_date": "2025/01/03",
|
||||||
"improvement": [
|
"improvement": [
|
||||||
"精简打包应用模板 APK 文件大小",
|
"精简打包应用模板 APK 文件大小",
|
||||||
"打包页面支持 Pinyin 库选项",
|
"打包页面支持 Pinyin 库选项",
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ import org.autojs.autojs.util.IntentUtils
|
|||||||
import org.autojs.autojs6.R
|
import org.autojs.autojs6.R
|
||||||
import org.autojs.autojs6.databinding.ApkFileInfoDialogListItemBinding
|
import org.autojs.autojs6.databinding.ApkFileInfoDialogListItemBinding
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import java.util.jar.JarEntry
|
||||||
|
import java.util.jar.JarFile
|
||||||
|
|
||||||
object ApkInfoDialogManager {
|
object ApkInfoDialogManager {
|
||||||
|
|
||||||
@@ -207,7 +209,7 @@ object ApkInfoDialogManager {
|
|||||||
private fun getApkSignatureInfo(apkFile: File): String? = runCatching {
|
private fun getApkSignatureInfo(apkFile: File): String? = runCatching {
|
||||||
ApkVerifier.Builder(apkFile).build().verify().run {
|
ApkVerifier.Builder(apkFile).build().verify().run {
|
||||||
listOfNotNull(
|
listOfNotNull(
|
||||||
"V1".takeIf { isVerifiedUsingV1Scheme },
|
"V1".takeIf { isVerifiedUsingV1Scheme || hasV1Signature(apkFile) },
|
||||||
"V2".takeIf { isVerifiedUsingV2Scheme },
|
"V2".takeIf { isVerifiedUsingV2Scheme },
|
||||||
"V3".takeIf { isVerifiedUsingV3Scheme },
|
"V3".takeIf { isVerifiedUsingV3Scheme },
|
||||||
"V4".takeIf { isVerifiedUsingV4Scheme },
|
"V4".takeIf { isVerifiedUsingV4Scheme },
|
||||||
@@ -215,6 +217,27 @@ object ApkInfoDialogManager {
|
|||||||
}
|
}
|
||||||
}.getOrNull()
|
}.getOrNull()
|
||||||
|
|
||||||
|
private fun hasV1Signature(apkFile: File): Boolean {
|
||||||
|
if (!apkFile.isFile) return false
|
||||||
|
JarFile(apkFile).use { jar ->
|
||||||
|
var hasManifest = false
|
||||||
|
var hasSF = false
|
||||||
|
var hasRSA = false
|
||||||
|
for (entry: JarEntry in jar.entries()) {
|
||||||
|
val name = entry.name.uppercase()
|
||||||
|
when {
|
||||||
|
name == "META-INF/MANIFEST.MF" -> hasManifest = true
|
||||||
|
name.endsWith(".SF") && name.startsWith("META-INF/") -> hasSF = true
|
||||||
|
name.endsWith(".RSA") && name.startsWith("META-INF/") -> hasRSA = true
|
||||||
|
}
|
||||||
|
if (hasManifest && hasSF && hasRSA) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private data class ApkInfo(
|
private data class ApkInfo(
|
||||||
val label: String?,
|
val label: String?,
|
||||||
val packageName: String?,
|
val packageName: String?,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#Fri Jan 03 16:34:34 CST 2025
|
#Fri Jan 03 18:02:21 CST 2025
|
||||||
BUILD_TIME=1735893274360
|
BUILD_TIME=1735898541894
|
||||||
COMPILE_SDK_VERSION=34
|
COMPILE_SDK_VERSION=34
|
||||||
JAVA_VERSION=23
|
JAVA_VERSION=23
|
||||||
JAVA_VERSION_MIN_RADICAL=0
|
JAVA_VERSION_MIN_RADICAL=0
|
||||||
@@ -17,6 +17,6 @@ RAPID_OCR_OPENCV_MOBILE_LABEL_VERSION=13
|
|||||||
RAPID_OCR_OPENCV_MOBILE_VERSION=4.5.3
|
RAPID_OCR_OPENCV_MOBILE_VERSION=4.5.3
|
||||||
TARGET_SDK_VERSION=34
|
TARGET_SDK_VERSION=34
|
||||||
TARGET_SDK_VERSION_INRT=29
|
TARGET_SDK_VERSION_INRT=29
|
||||||
VERSION_BUILD=2955
|
VERSION_BUILD=2956
|
||||||
VERSION_NAME=6.6.2 Alpha
|
VERSION_NAME=6.6.2 Alpha
|
||||||
VSCODE_EXT_REQUIRED_VERSION=1.0.8
|
VSCODE_EXT_REQUIRED_VERSION=1.0.8
|
||||||
|
|||||||
Reference in New Issue
Block a user