Skip to content

Commit 5eff31a

Browse files
committed
fix: 使PluginPackageManagerImpl.kt改动尽量为新增行
1 parent eb42183 commit 5eff31a

File tree

1 file changed

+48
-2
lines changed

1 file changed

+48
-2
lines changed

projects/sdk/core/loader/src/main/kotlin/com/tencent/shadow/core/loader/managers/PluginPackageManagerImpl.kt

+48-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,18 @@ internal class PluginPackageManagerImpl(
3838
hostPackageManager.getApplicationInfo(packageName, flags)
3939
}
4040

41-
override fun getPackageInfo(packageName: String, flags: Int): PackageInfo? {
42-
val hostPackageInfo = hostPackageManager.getPackageInfo(packageName, flags)
41+
/**
42+
* 所有插件中的各种方法签名的getPackageInfo方法汇总到这里。
43+
* 如果包名是插件的,优先返回插件的PackageInfo。
44+
* 否则返回从宿主(系统)查询到的PackageInfo。
45+
* 直接由getPackageArchiveInfo构造的PackageInfo和从getPackageInfo得到的正常的PackageInfo不完全一致。
46+
* 在这里修改它使其尽可能像系统返回的。
47+
*/
48+
private fun getPluginPackageInfoIfPossible(
49+
packageName: String,
50+
flags: Int,
51+
hostPackageInfo: PackageInfo,
52+
): PackageInfo? {
4353
return if (packageName.isPlugin()) {
4454
val packageInfo = hostPackageManager.getPackageArchiveInfo(pluginArchiveFilePath, flags)
4555
if (packageInfo != null) {
@@ -53,6 +63,42 @@ internal class PluginPackageManagerImpl(
5363
}
5464
}
5565

66+
@Suppress("DEPRECATION")
67+
override fun getPackageInfo(packageName: String, flags: Int) =
68+
getPluginPackageInfoIfPossible(
69+
packageName,
70+
flags,
71+
hostPackageManager.getPackageInfo(packageName, flags)
72+
)
73+
74+
@Suppress("DEPRECATION")
75+
@SuppressLint("NewApi")
76+
override fun getPackageInfo(versionedPackage: VersionedPackage, flags: Int) =
77+
getPluginPackageInfoIfPossible(
78+
versionedPackage.packageName,
79+
flags,
80+
hostPackageManager.getPackageInfo(versionedPackage, flags)
81+
)
82+
83+
@SuppressLint("NewApi")
84+
override fun getPackageInfo(packageName: String, flags: PackageManager.PackageInfoFlags) =
85+
getPluginPackageInfoIfPossible(
86+
packageName,
87+
flags.value.toInt(),//FIXME 这里会丢失flags升级到Long新增的标志位
88+
hostPackageManager.getPackageInfo(packageName, flags)
89+
)
90+
91+
@SuppressLint("NewApi")
92+
override fun getPackageInfo(
93+
versionedPackage: VersionedPackage,
94+
flags: PackageManager.PackageInfoFlags
95+
) =
96+
getPluginPackageInfoIfPossible(
97+
versionedPackage.packageName,
98+
flags.value.toInt(),//FIXME 这里会丢失flags升级到Long新增的标志位
99+
hostPackageManager.getPackageInfo(versionedPackage, flags)
100+
)
101+
56102
override fun getActivityInfo(component: ComponentName, flags: Int): ActivityInfo? =
57103
getComponentInfo(
58104
component,

0 commit comments

Comments
 (0)