#Android.mk配置的问题
error: mismatch in the <uses-library> tags between the build system and the manifest: - required libraries in build system: [] vs. in the manifest: [] - optional libraries in build system: [] vs. in the manifest: [androidx.window.extensions, androidx.window.sidecar]
你可能会遇到类似问题:其实Android 12 对 应用预装 会强制进行<uses-library>检查,所以当应用有这个引用,但是mk配置里没做相关配置,就会出现上面的问题。
解决办法:
第一种:忽略检查
LOCAL_ENFORCE_USES_LIBRARIES := false
第二种:指明使用的库,应用申明的都要写,中间用空格隔开
LOCAL_OPTIONAL_USES_LIBRARIES := org.apache.http.legacy androidx.window.extensions
FAQ:
关于APP <uses-library>的使用情况查看:使用aapt 工具,可以查看到使用情况
aapt dump badging xxx.apk
#安装包的问题
对于Google的以及一些上架GooglePlay的应用,如果使用了 Android APP bundle 方式打包的,那么获取到的安装包基本都是那种分离包,即原来一个完整的apk,将里面的适配UI资源,语言适配,so包适配等都单独打成一个apk包,从而GooglePlay在安装时,会根据设备的情况进行选装这样子,下面一张Google Docs 的分离包压缩包,感受下:
所以,对于单APK的传统配置,这种分离包,且有依赖关系的,无法配置,所以一个比较可行的解决办法就是,寻找老一点的版本,没有做分离包支持的版本,像这个网站就是个不错的选择:
https://www.apkmirror.com/
类似这样GooglePlay的镜像下载网站,下载下来的单独APK文件,也不是绝对完全的,因为有的较新的版本,虽然是一个整合的完整的版本,但是却有签名缺失的情况
这种情况 adb install 可以安装,但是系统代码内预置却无法安装
补充:
查看apk 签名证书的信息:利用keytool 工具
keytool -printcert -jarfile ../../xxxxx.apk