6.6.3 - Alpha - 修复 APK 文件类型信息对话框可能无法获取应用名称及 SDK 信息的问题

This commit is contained in:
SuperMonster003
2025-04-19 01:51:12 +08:00
parent b5b8221384
commit 9bbf4bb32b
145 changed files with 12589 additions and 27 deletions

View File

@@ -10,6 +10,7 @@
* `修复` 主页文档标签显示在线文档时部分内容被系统导航栏遮挡的问题
* `修复` 部分设备代码编辑器空行显示方框字符的问题
* `修复` APK 文件类型信息对话框可能无法获取应用名称及 SDK 信息的问题
* `修复` console.setContentTextColor 方法导致日志字体颜色丢失默认值的问题 _[`issue #346`](http://issues.autojs6.com/346)_
* `优化` 打包单文件时自动读取并勾选已安装应用的声明权限 _[`issue #362`](http://issues.autojs6.com/362)_
* `优化` 使用异步加载方式一定程度提升文件管理器列表滑动流畅性

View File

@@ -10,6 +10,7 @@
* `修复` 主页文档标签显示在线文档时部分内容被系统导航栏遮挡的问题
* `修复` 部分设备代码编辑器空行显示方框字符的问题
* `修复` APK 文件类型信息对话框可能无法获取应用名称及 SDK 信息的问题
* `修复` console.setContentTextColor 方法导致日志字体颜色丢失默认值的问题 _[`issue #346`](http://issues.autojs6.com/346)_
* `优化` 打包单文件时自动读取并勾选已安装应用的声明权限 _[`issue #362`](http://issues.autojs6.com/362)_
* `优化` 使用异步加载方式一定程度提升文件管理器列表滑动流畅性

View File

@@ -6,16 +6,17 @@ import android.content.pm.PackageManager.GET_META_DATA
import android.os.Build
import android.view.LayoutInflater
import android.view.View.MeasureSpec.UNSPECIFIED
import androidx.appcompat.content.res.AppCompatResources
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.isVisible
import com.afollestad.materialdialogs.DialogAction
import com.afollestad.materialdialogs.MaterialDialog
import com.android.apksig.ApkVerifier
import com.jaredrummler.apkparser.ApkParser
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import net.dongliu.apk.parser.ApkFile
import org.autojs.autojs.extension.MaterialDialogExtensions.makeSettingsLaunchable
import org.autojs.autojs.extension.MaterialDialogExtensions.makeTextCopyable
import org.autojs.autojs.extension.MaterialDialogExtensions.setCopyableTextIfAbsent
@@ -115,7 +116,7 @@ object ApkInfoDialogManager {
dialog.setIcon(applicationInfo?.apply {
sourceDir = apkFilePath
publicSourceDir = apkFilePath
}?.loadIcon(packageManager) ?: context.getDrawable(R.drawable.ic_packaging))
}?.loadIcon(packageManager) ?: AppCompatResources.getDrawable(context, R.drawable.ic_packaging))
dialog.makeSettingsLaunchable({ it.iconView }, installedPackageName)
dialog.makeTextCopyable { it.titleView }
@@ -138,7 +139,7 @@ object ApkInfoDialogManager {
private suspend fun getApkInfo(apkFile: File): ApkInfo? = withContext(Dispatchers.IO) {
runCatching {
ApkParser.create(apkFile).use { parser ->
ApkFile(apkFile).use { parser ->
val meta = runCatching { parser.apkMeta }.getOrNull()
val label = meta?.label
val packageName = meta?.packageName

View File

@@ -27,11 +27,11 @@ import androidx.lifecycle.ViewModelProvider;
import com.afollestad.materialdialogs.MaterialDialog;
import com.google.android.flexbox.FlexboxLayout;
import com.google.android.material.textfield.TextInputLayout;
import com.jaredrummler.apkparser.ApkParser;
import com.jaredrummler.apkparser.model.ApkMeta;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import net.dongliu.apk.parser.ApkFile;
import net.dongliu.apk.parser.bean.ApkMeta;
import org.autojs.autojs.apkbuilder.ApkBuilder;
import org.autojs.autojs.apkbuilder.keystore.KeyStore;
import org.autojs.autojs.core.pref.Language;
@@ -63,6 +63,7 @@ import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
@@ -614,16 +615,16 @@ public class BuildActivity extends BaseActivity implements ApkBuilder.ProgressCa
}
private void updatePermissionsCheckboxes(String packageName) {
ApkParser parser;
ApkFile apkFile;
try {
parser = ApkParser.create(getPackageManager(), packageName);
} catch (PackageManager.NameNotFoundException e) {
apkFile = new ApkFile(new File(getPackageManager().getApplicationInfo(packageName, 0).sourceDir));
} catch (PackageManager.NameNotFoundException | IOException e) {
return;
}
try {
ApkMeta meta = parser.getApkMeta();
if (meta == null || meta.usesPermissions == null) {
ApkMeta meta = apkFile.getApkMeta();
if (meta == null) {
return;
}
var initialPermissions = meta.usesPermissions;
@@ -649,7 +650,11 @@ public class BuildActivity extends BaseActivity implements ApkBuilder.ProgressCa
} catch (Exception ignored) {
/* Ignored. */
} finally {
parser.close();
try {
apkFile.close();
} catch (IOException e) {
/* Ignored. */
}
}
}