华为手机升级Android10,APP竟然闪退了

简介: 华为手机升级Android10,APP竟然闪退了

工作中的惊喜不断,今天遇到一个问题,一个客户的手机升级为最新的Android 10系统后,原来的我们项目的APP一点击Icon启动APP就闪退,根本不能用。

一开始怀疑是App版本兼容问题,查看项目app/build.gradle文件中配置如下:

android {
    compileSdkVersion 27
    buildToolsVersion "27.0.3"
    defaultConfig {
        multiDexEnabled true
        applicationId "com.huaxing.alpha.apps.apollo" // "com.huaxing.alpha.apps.apollo" 正式的极光推送包名,// "com.astarup.app" 测试报名
        minSdkVersion 23
        targetSdkVersion 27
        versionCode 49
        versionName "5.5.3"
        manifestPlaceholders = [
                JPUSH_APPKEY: "d21c04aa23b0050dea5bf85c", //"d21c04aa23b0050dea5bf85c", // efd166b53c414825b0d3afe7 是测试的key
                APP_CHANNEL : "developer-default"
        ]
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }

查阅一堆资料后,发现并不是APP当前Android版本低造成的无法兼容Android10系统手机。

于是尝试进行重新打包,在Android10手机进行实际测试。打包过程中遇到以下报错:

Android AAPT: No resource identifier found for attribute 'appComponentFactory' in package 'android'

在解决这个报错的过程中查到了这个资料issues

):

这个报错应该是google在androidx, google play service的问题,当前APP没有支持AndroidX,解决方案,在项目android/build.gradle文件中添加如下代码:

ext {
    buildToolsVersion = "26.0.3"
    minSdkVersion = 16
    compileSdkVersion = 26
    targetSdkVersion = 26
    supportLibVersion = "26.1.0"
    // 添加googlePlayServicesVersion
    googlePlayServicesVersion = '16.+'
}

重新打包后,安装真机测试,完美运行。

进一步查看发现是因为项目中有react-native-device-info依赖,查看项目说明中关于对AndroidX的支持,已有文档说明了😀

This module defaults to AndroidX you should configure your library versions similar to this in your android/build.gradle file's "ext" block

...
  ext {
    // dependency versions
    We have 3 options for deviceId:
    //Option 1 (latest):
    firebaseIidVersion = "19.0.1" // default: "19.0.1"
    //Option 2 (legacy GooglePlay dependency but using AndroidX):
    googlePlayServicesIidVersion = "17.0.0" // default: "17.0.0" - AndroidX
    //Option 3 (legacy GooglePlay dependency before AndroidX):
    googlePlayServicesIidVersion = "16.0.1"
    //include as needed:
    compileSdkVersion = "28" // default: 28 (28 is required for AndroidX)
    targetSdkVersion = "28" // default: 28 (28 is required for AndroidX)
    supportLibVersion = '1.0.2' // Use '28.0.0' or don't specify for old libraries, '1.0.2' or similar for AndroidX
    mediaCompatVersion = '1.0.1' // Do not specify if using old libraries, specify '1.0.1' or similar for androidx.media:media dependency
    supportV4Version = '1.0.0' // Do not specify if using old libraries, specify '1.0.0' or similar for androidx.legacy:legacy-support-v4 dependency
  }
...

总结一下吧,科技不断发展,技术也在不断提升,作为开发者,在开发的道路上总会遇到各种各样的问题,也许你会不知所措,但是当你迎着头皮上,解决这个问题的时候,你也学习成长了。

加油,开发者们。

目录
相关文章
|
2月前
|
XML 自然语言处理 Android开发
🌐Android国际化与本地化全攻略!让你的App走遍全球无障碍!🌍
【7月更文挑战第28天】在全球化背景下,实现Android应用的国际化与本地化至关重要 for 用户基础扩展。本文通过旅游指南App案例,介绍全攻略。步骤包括资源文件拆分与命名、适配布局与方向、处理日期时间及货币格式、考虑文化习俗及进行详尽测试。采用Android Studio支持,创建如`res/values-en/strings.xml`等多语言资源文件夹,使用灵活布局解决文本长度差异问题,并通过用户反馈迭代优化。最终,打造一款能无缝融入全球各地文化的App。
144 3
|
7天前
|
Java 数据库 Android开发
一个Android App最少有几个线程?实现多线程的方式有哪些?
本文介绍了Android多线程编程的重要性及其实现方法,涵盖了基本概念、常见线程类型(如主线程、工作线程)以及多种多线程实现方式(如`Thread`、`HandlerThread`、`Executors`、Kotlin协程等)。通过合理的多线程管理,可大幅提升应用性能和用户体验。
25 15
一个Android App最少有几个线程?实现多线程的方式有哪些?
|
9天前
|
Java 数据库 Android开发
一个Android App最少有几个线程?实现多线程的方式有哪些?
本文介绍了Android应用开发中的多线程编程,涵盖基本概念、常见实现方式及最佳实践。主要内容包括主线程与工作线程的作用、多线程的多种实现方法(如 `Thread`、`HandlerThread`、`Executors` 和 Kotlin 协程),以及如何避免内存泄漏和合理使用线程池。通过有效的多线程管理,可以显著提升应用性能和用户体验。
29 10
|
23天前
|
API Android开发
Android P 性能优化:创建APP进程白名单,杀死白名单之外的进程
本文介绍了在Android P系统中通过创建应用进程白名单并杀死白名单之外的进程来优化性能的方法,包括设置权限、获取运行中的APP列表、配置白名单以及在应用启动时杀死非白名单进程的代码实现。
42 1
|
27天前
|
IDE Java 开发工具
探索安卓开发之旅:打造你的第一款App
【8月更文挑战第24天】在这篇文章中,我们将一起踏上激动人心的安卓开发之旅。不论你是编程新手还是希望扩展技能的老手,本文将为你提供一份详尽指南,帮助你理解安卓开发的基础知识并实现你的第一个应用程序。从搭建开发环境到编写“Hello World”,每一步都将用浅显易懂的语言进行解释。那么,让我们开始吧!
|
1月前
|
开发工具 Android开发
|
1月前
|
Android开发
将AAB(Android App Bundle)转换为APK
将AAB(Android App Bundle)转换为APK
40 1
|
1月前
|
开发工具 Android开发
上架Google Play报错:For new apps, Android App Bundles must be signed with an RSA key.
上架Google Play报错:For new apps, Android App Bundles must be signed with an RSA key.
80 1
|
1月前
|
Android开发
Cannot create android app from an archive...containing both DEX and Java-bytecode content
Cannot create android app from an archive...containing both DEX and Java-bytecode content
19 2
|
1月前
|
XML Android开发 UED
"掌握安卓开发新境界:深度解析AndroidManifest.xml中的Intent-filter配置,让你的App轻松响应scheme_url,开启无限交互可能!"
【8月更文挑战第2天】在安卓开发中,scheme_url 通过在`AndroidManifest.xml`中配置`Intent-filter`,使应用能响应特定URL启动或执行操作。基本配置下,应用可通过定义特定URL模式的`Intent-filter`响应相应链接。
81 12