解决由于targetSdkVersion升至30导致的问题

最近华为市场要求app的targetSdkVersion在2024年1月前升至30+,于是修改后检查各项功能,目前发现的主要问题是连网功能有问题。

1、访问http链接提示ERR_CLEARTEXT_NOT_PERMITTED

临时解决办法:

<application
        ...
        android:usesCleartextTraffic="true"
        ...
>

终极解决办法:

自己的服务器http -> https

第三方接口服务器:要求对方提供https接口

2、QQ SDK 无法转入QQ登录界面

提示QQ不是最新版(实际上已经是最新版);本以为是自己的QQ SDK版本过低(2018年的),想着替换到最新版,但在网上发现了更简单的解决办法:

“添加Android API 31  系统版本 12 的权限查询,否则Android 12 系统跳转不到授权页,导致点击登录按钮,查询不到手机上已安装的腾讯QQ的APP。”

实际上,我的小米青春10是Android11版本,也是无法转入QQ登录界面,并非上述“31/12”;用下边办法同样可以解决(即在manifest内加mobileqq的queries)

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:installLocation="auto"
    package="your.package.name"
    android:versionCode="66"
    android:versionName="6.6.6" >

    <queries>
        <package android:name="com.tencent.mobileqq" />
    </queries>

    <!-- ... -->

</manifest>

不过,对于本人的app来说,上述targetSdkVersion修改、增加<queries>后编译导致出错:

at com.android.build.gradle.internal.tasks.manifest.ManifestHelperKt.mergeManifestsForApplication

我的工程是多个子工程组成的,所以查看了下各子工程.gradle,确实只将入口工程的.gradle里的targetSdkVersion改为30了,把各子工程的也修改后,仍提示上述错误,于是在Android Studio的Terminal内执行:

gradlew processDebugManifest --stacktrace

得到更详细的提示,其中有:

Missing 'package' key attribute on element package at AndroidManifest.xml:10

网上搜了下这个的解决办法,需要升级主工程的gradle插件版本(原来是3.5.2)

dependencies {
        classpath 'com.android.tools.build:gradle:3.5.4'
    }

目前暂时就发现这些问题,还需要测试微博SDK等所有第三方接口、以及打包后的安装。

安装测试(用360加固后本地jarsigner命令重新签名)

1、✔到荣耀青春10:EMUI 10.0.0/Android 10

2、✔ 到MIX2: MIUI 12.0.1/Android 9 

3、× 到小米青春10: MIUI12.1.7/Android 11,提示 解析软件包时出现问题。(33) 详细信息:  packageinfo is null

测试了腾讯加固、梆梆加固也是如此。

最初以为是Android Studio版本/Gradle版本的问题,升级到最新的Giraffe,gradle升至7.5,

classpath 'com.android.tools.build:gradle:3.5.4' 升至 7.4.2,仍然如此。

(从Android Studio V3.5.2升至Giraffe,以及gradle从5.4.1升至7.5, tools.build:gradle从3.5.4升至7.4.2又是一堆错,以后有时间总结一下)

如果使用未加固的签名包,或加固后的包直接安装,即不用本地jarsigner命令签名则没有3这种问题。

所以确定是本地jarsigner的版本在targetVersion改为30后有问题(即在某些设备可以安装,某些设备不能)。

于是下载了360加固客户端,用里边的工具包里的签名V3(=V1+V2)签名加固后的包,发现3这个问题解决。

猜你喜欢

转载自blog.csdn.net/piggy514/article/details/133547407