6.7.0 - Alpha13 - 修复 Android 7.x 可能无法正常使用打包功能的问题
This commit is contained in:
@@ -64,6 +64,7 @@
|
|||||||
"Android 10 UiObject#child 方法可能出现 ArrayIndexOutOfBoundsException 异常的问题 _[`issue #416`](http://issues.autojs6.com/416)_",
|
"Android 10 UiObject#child 方法可能出现 ArrayIndexOutOfBoundsException 异常的问题 _[`issue #416`](http://issues.autojs6.com/416)_",
|
||||||
"运行项目时 project.json 配置参数可能无法正常解析的问题",
|
"运行项目时 project.json 配置参数可能无法正常解析的问题",
|
||||||
"项目打包时 project.json 的 excludedDirs 配置参数将导致配置文件解析失败的问题 _[`issue #428`](http://issues.autojs6.com/428)_",
|
"项目打包时 project.json 的 excludedDirs 配置参数将导致配置文件解析失败的问题 _[`issue #428`](http://issues.autojs6.com/428)_",
|
||||||
|
"Android 7.x 可能无法正常使用打包功能的问题",
|
||||||
"项目配置文件中构建版本号或构建时间出现较大数字时可能导致应用崩溃的问题",
|
"项目配置文件中构建版本号或构建时间出现较大数字时可能导致应用崩溃的问题",
|
||||||
"频繁获取或重建 ImageReader 时可能因缓冲区暂无可用帧导致应用崩溃的问题",
|
"频繁获取或重建 ImageReader 时可能因缓冲区暂无可用帧导致应用崩溃的问题",
|
||||||
"输入事件观察器 InputEventObserver 可能导致应用启动时明显卡顿的问题",
|
"输入事件观察器 InputEventObserver 可能导致应用启动时明显卡顿的问题",
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import android.os.Build
|
|||||||
import android.util.Log
|
import android.util.Log
|
||||||
import com.mcal.apksigner.ApkSigner
|
import com.mcal.apksigner.ApkSigner
|
||||||
import com.reandroid.arsc.chunk.TableBlock
|
import com.reandroid.arsc.chunk.TableBlock
|
||||||
import org.apache.commons.io.FileUtils
|
|
||||||
import org.autojs.autojs.AbstractAutoJs.Companion.isInrt
|
import org.autojs.autojs.AbstractAutoJs.Companion.isInrt
|
||||||
import org.autojs.autojs.apkbuilder.keystore.AESUtils
|
import org.autojs.autojs.apkbuilder.keystore.AESUtils
|
||||||
import org.autojs.autojs.app.GlobalAppContext
|
import org.autojs.autojs.app.GlobalAppContext
|
||||||
@@ -307,7 +306,16 @@ open class ApkBuilder(apkInputStream: InputStream?, private val outApkFile: File
|
|||||||
|
|
||||||
val defaultKeyStoreFile = File(buildPath, "default_key_store.bks")
|
val defaultKeyStoreFile = File(buildPath, "default_key_store.bks")
|
||||||
val tmpOutputApk = File(buildPath, "temp.apk")
|
val tmpOutputApk = File(buildPath, "temp.apk")
|
||||||
FileUtils.copyInputStreamToFile(GlobalAppContext.get().assets.open("default_key_store.bks"), defaultKeyStoreFile)
|
|
||||||
|
// Replace FileUtils.copyInputStreamToFile(...).
|
||||||
|
// zh-CN: 替换 FileUtils.copyInputStreamToFile(...).
|
||||||
|
defaultKeyStoreFile.parentFile?.let { if (!it.exists()) it.mkdirs() }
|
||||||
|
GlobalAppContext.get().assets.open("default_key_store.bks").use { input ->
|
||||||
|
FileOutputStream(defaultKeyStoreFile, false).use { output ->
|
||||||
|
input.copyTo(output, bufferSize = 16 * 1024)
|
||||||
|
output.fd.sync()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val signer = ApkSigner(outApkFile, tmpOutputApk).apply {
|
val signer = ApkSigner(outApkFile, tmpOutputApk).apply {
|
||||||
useDefaultSignatureVersion = false
|
useDefaultSignatureVersion = false
|
||||||
@@ -329,13 +337,15 @@ open class ApkBuilder(apkInputStream: InputStream?, private val outApkFile: File
|
|||||||
aliasPassword = AESUtils.decrypt(it.aliasPassword)
|
aliasPassword = AESUtils.decrypt(it.aliasPassword)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 使用 ApkSigner 重新签名
|
// Re-sign using ApkSigner.
|
||||||
|
// zh-CN: 使用 ApkSigner 重新签名.
|
||||||
if (!signer.signRelease(keyStoreFile, password, alias, aliasPassword)) {
|
if (!signer.signRelease(keyStoreFile, password, alias, aliasPassword)) {
|
||||||
throw java.lang.RuntimeException("Failed to re-sign using ApkSigner")
|
throw java.lang.RuntimeException("Failed to re-sign using ApkSigner")
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
FileUtils.copyFile(tmpOutputApk, outApkFile)
|
outApkFile.parentFile?.let { if (!it.exists()) it.mkdirs() }
|
||||||
|
tmpOutputApk.copyTo(outApkFile, overwrite = true)
|
||||||
} catch (e: java.lang.Exception) {
|
} catch (e: java.lang.Exception) {
|
||||||
throw java.lang.RuntimeException(e)
|
throw java.lang.RuntimeException(e)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Stardust on Jan 24, 2018.
|
* Created by Stardust on Jan 24, 2018.
|
||||||
|
* Modified by SuperMonster003 as of Nov 19, 2025.
|
||||||
*/
|
*/
|
||||||
public class ProjectConfig {
|
public class ProjectConfig {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user