zoukankan      html  css  js  c++  java
  • Android 10升级至Android 11后关于startActivity启动应用抛异常处理方法

    最近项目升级到android11后,原先在android10上正常运行的DOU  apk在android11上全体趴窝,通过debug定位到在拉起app的地方抛出异常,导致DOU运行失败。

    通过咨询其它人发现在Android11及以后所使用的uiautomator必须是2.2.0及以后的依赖库才行,sync now同步完成后发现所有代码中一片红,没事一个一个改吧。

    首先在app目录下将build.gradle中的依赖改过来,如下是android11上且与高通可用的依赖库:

    dependencies {
        implementation fileTree(include: ['*.jar'], dir: 'libs')
        implementation 'androidx.appcompat:appcompat:1.1.0'
        implementation 'com.google.android.material:material:1.0.0'
        implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
        implementation 'androidx.navigation:navigation-fragment:2.1.0'
        implementation 'androidx.navigation:navigation-ui:2.1.0'
        implementation 'com.android.support.constraint:constraint-layout:1.1.3'
        androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'androidx.test.ext:junit:1.1.1'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
        testImplementation 'org.testng:testng:6.9.6'
    }

    以下是之前android10上面的依赖库:

    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
    //    implementation 'com.android.support:appcompat-v7:26.1.0'
        implementation 'com.android.support:appcompat-v7:28.0.0'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.2'
        androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.3'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    }

    通过上面两个对比发现,依赖的库变化很大,也就意味着在代码中改动的地方会比较多。

    以下是完整的app里面build.gradle中的配置,相比以前android10中改动地方(红色标记)

    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 30
        defaultConfig {
            applicationId "com.dou.jjyy"
            minSdkVersion 26
            targetSdkVersion 26
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        buildToolsVersion '29.0.1'
    }
    
    dependencies {
        implementation fileTree(include: ['*.jar'], dir: 'libs')
        implementation 'androidx.appcompat:appcompat:1.1.0'
        implementation 'com.google.android.material:material:1.0.0'
        implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
        implementation 'androidx.navigation:navigation-fragment:2.1.0'
        implementation 'androidx.navigation:navigation-ui:2.1.0'
        implementation 'com.android.support.constraint:constraint-layout:1.1.3'
        androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'androidx.test.ext:junit:1.1.1'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
        testImplementation 'org.testng:testng:6.9.6'
    }
    最后将所有代码中报错的地方依次修改完成,最后再重新编译打包安装运行,可以正常拉起app,完美解决问题。
  • 相关阅读:
    JSP
    结束程序-wpscloudsvr 程序没有响应,要返回Windows并检查程序状态,请单击“取消”,如果选择立即结束程序,你会失去
    解决Serlet API没导进导致的错误
    JDBC工具类
    数据库小项目
    数据库外键主键
    Mysql操作表时报错Table doesn't exist解决办法
    这大概是最细的YOLOX中的Mosaic And Mixup 实现源码分析了吧
    Sigcomm20 Hoyan 阅读笔记
    定时获取最新ssr服务器的方法
  • 原文地址:https://www.cnblogs.com/aziji/p/15627654.html
Copyright © 2011-2022 走看看