Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

支持API 33新增的getPackageInfo方法 #1351

Merged
merged 1 commit into from
Nov 23, 2024
Merged

Conversation

aprz512
Copy link
Contributor

@aprz512 aprz512 commented Nov 20, 2024

@tencent-adm
Copy link
Member

tencent-adm commented Nov 20, 2024

CLA assistant check
Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@shifujun
Copy link
Collaborator

感谢贡献代码。我尽量明天尽快处理。

@shifujun
Copy link
Collaborator

我需要先把CI修好。测试CI每次都得等20几分钟,很麻烦。不过已经差不多了。这个PR得明天再处理了。

@aprz512
Copy link
Contributor Author

aprz512 commented Nov 22, 2024

Ok,慢慢来

@shifujun
Copy link
Collaborator

我对你的提交做了些修改,先推上来看看。

  1. 把提交分成两部分,因为是两件不相关的事。然后把你的commit author改成你的Github账号了,这样才能关联上你的贡献。
  2. 然后先把decodeXml的改动的提交先revert了。这样我们先让CI测一下getPackageInfo相关的改动。
  3. getPackageInfo这块我做了一些改动,补充了自动化测试,我测了一下还测出来少了一个方法。所以我又补上了。
    现在应该一共有4个getPackageInfo的签名。
  4. 然后你对PluginPackageManagerImpl.kt的修改在Git diff上体现的改动行太多了。咱一般尽量新增和删除行,让改动行尽量少,看出来到底改了什么。正好前面又补充了一个方法签名,我就重写了一下这块的改动。
  5. 看出来API33开始depreciate之前int类型的flag,不光是封装成PackageInfoFlags类型了,还升级成Long长度的flag了。
    那这样我们现在的改动就不够用了。这里存在强转long到int的情况。还有getPackageArchiveInfo等类似的方法还没改。
    这个留到后面另外适配吧,也需要补充测试用例。

然后关于decodeXml的改动,我看也很清楚。官方的代码改动看起来就是去掉了本来只用于log的string文件名。但是这里我们肯定不能简单的调用时候去掉这个参数,我们不能确定用户在用哪个版本的BinaryXmlParser。所以这里要写成兼容新旧版本的代码才行。

我这里没搞搞清楚这个apkanalyzer是随哪个工具更新的。因为我本机使用的是$ANDROID_HOME/tools/lib/apkanalyzer.jar,而$ANDROID_HOME/tools/source.properties显示这个tools目录属于Android SDK Tools,26.1.1。我查了一下这个东西2017年之后就没更新过。所以我现在也不知道怎么复现这个问题。上哪找去掉了string参数之后的apkanalyzer.jar测试。虽然看起来也可以凭空写段兼容的代码。但是我还是希望能在真实环境测试一下,免得因为一些小问题返工。

这个PR如果CI通过了,我就再rebase成1个提交。去掉decodeXml的改动,然后再开一个PR。

@shifujun shifujun linked an issue Nov 22, 2024 that may be closed by this pull request
@shifujun shifujun changed the title 适配 compileSdk 33 支持API 33新增的getPackageInfo方法 Nov 23, 2024
androidx.profileinstaller.ProfileVerifier中有使用。

Tencent#1277
@shifujun shifujun merged commit c6c87b6 into Tencent:master Nov 23, 2024
10 of 11 checks passed
@aprz512
Copy link
Contributor Author

aprz512 commented Nov 23, 2024

OK的,关于decodeXml的改动,我这边是修改compilesdk到33就会出现的,应该没有特殊的环境设置,改成你说的兼容的方式也是可以的。
因为我这边是做一个新项目,所以 compileSdk与targetsdk都设置的比较高,暂时是只遇到了这两个问题,后续如果有其他问题,就再看。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

androidx.profileinstaller.ProfileVerifier安全校验失败?
3 participants