简体   繁体   English

Android App在API级别19崩溃,但在19以上的API上可以正常工作

[英]Android App crashes on API level 19 but works fine on API above 19

My app crashes on API 19 but it is working fine on API level 21, 22 and 23. (I tested in the Firebase website). 我的应用程序在API 19上崩溃,但在API级别21、22和23上运行良好。(我在Firebase网站上进行了测试)。

I am posting my gradle and some screenshots. 我正在发布我的gradle和一些屏幕截图。

build.gradle file build.gradle文件

apply plugin: 'com.android.application'

//apply plugin: 'io.fabric'
//
//
//repositories {
//    maven { url 'https://maven.fabric.io/public' }
//}

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.1"
    defaultConfig {

        applicationId "com.example.koorosh.googlemapsample_v2"

//        defaultConfig {
//            manifestPlaceholders = [onesignal_app_id: "1d9b988f-ff34-496c-bf5c-733f80965c23",
//                                    // Project number pulled from dashboard, local value is ignored.
//                                    onesignal_google_project_number: "941112681249"]
//        }

        minSdkVersion 14
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    defaultConfig {
        multiDexEnabled true
    }

}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:25.0.1'
    compile 'com.google.android.gms:play-services:9.2.1'
    compile files('libs/volley.jar')
    compile 'com.google.maps.android:android-maps-utils:0.4+'
    compile project(':toolbar')
    compile 'com.android.support:design:25.0.1'
    compile 'com.android.support:recyclerview-v7:25.0.1'
    compile 'com.mohamadamin:persianmaterialdatetimepicker:1.2.1'
    compile 'com.google.firebase:firebase-core:9.0.0'
    compile 'com.google.firebase:firebase-messaging:9.0.0'
    compile 'com.melnykov:floatingactionbutton:1.3.0'
//    compile('com.crashlytics.sdk.android:crashlytics:2.6.5@aar') {
//        transitive = true;
//    }

//    compile 'com.onesignal:OneSignal:3.4.2@aar'
//
//    // Required for OneSignal, even if you have added FCM.
//    compile 'com.google.android.gms:play-services-gcm:9.2.1'
//
//    // Required for geotagging
//    compile "com.google.android.gms:play-services-location:9.2.1"
//
//    // play-services-analytics is only needed when using 8.1.0 or older.
//     compile 'com.google.android.gms:play-services-analytics:9.2.1'
}
apply plugin: 'com.google.gms.google-services'

The test issues from the Firebase robot test Firebase机器人测试中的测试问题

 FATAL EXCEPTION: main
 Process: com.example.koorosh.googlemapsample_v2, PID: 6109
 java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider" on path: DexPathList[[zip file "/data/app/com.example.koorosh.googlemapsample_v2-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.koorosh.googlemapsample_v2-1, /vendor/lib, /system/lib]]
    at android.app.ActivityThread.installProvider(ActivityThread.java:4777)
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:4369)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4309)
    at android.app.ActivityThread.access$1500(ActivityThread.java:135)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5001)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
    at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider" on path: DexPathList[[zip file "/data/app/com.example.koorosh.googlemapsample_v2-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.koorosh.googlemapsample_v2-1, /vendor/lib, /system/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
    at android.app.ActivityThread.installProvider(ActivityThread.java:4762)
    ... 12 more

The logs: 日志:

No content provider found for permission revoke: file:///data/local/tmp/app6478404563889985355.apk

07:15:41.209
dalvikvm
method Landroid/support/v7/widget/ListViewCompat;.lookForSelectablePosition incorrectly overrides package-private method with same name in Landroid/widget/ListView;

07:15:43.139
PackageManager
Unknown permission android.permission.MANAGE_ACCOUNT in package com.google.android.apps.auth.test.support

07:15:43.139
PackageManager
Not granting permission com.google.android.providers.gsf.permission.WRITE_GSERVICES to package com.google.android.apps.auth.test.support (protectionLevel=18 flags=0x8444)

07:15:43.139
PackageManager
Unknown permission com.android.smspush.WAPPUSH_MANAGER_BIND in package com.android.phone

07:15:43.139
PackageManager
Unknown permission com.android.nfc.permission.NFCEE_ADMIN in package com.google.android.apps.walletnfcrel

07:15:43.149
PackageManager
Unknown permission com.android.vending.billing.IBillingAccountService.BIND2 in package com.google.android.gsf.login

07:15:43.149
PackageManager
Unknown permission com.android.gallery3d.permission.GALLERY_PROVIDER in package com.android.bluetooth

07:15:43.149
PackageManager
Unknown permission android.permission.MMS_SEND_OUTBOX_MSG in package com.android.bluetooth

07:15:43.149
PackageManager
Not granting permission android.permission.BROADCAST_PACKAGE_REMOVED to package com.google.android.marvin.talkback (protectionLevel=2 flags=0x40c9be45)

07:15:43.149
PackageManager
Not granting permission android.permission.DEVICE_POWER to package com.google.android.deskclock (protectionLevel=2 flags=0xc8be45)

07:15:43.149
PackageManager
Unknown permission android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.MANAGE_SOUND_TRIGGER in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.RECOVERY in package com.google.android.gms

07:15:43.149
PackageManager
Not granting permission android.permission.READ_DREAM_STATE to package com.google.android.gms (protectionLevel=2 flags=0x40c83ec5)

07:15:43.149
PackageManager
Unknown permission android.permission.PROVIDE_TRUST_AGENT in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission com.google.android.apps.enterprise.dmagent.permission.AutoSyncPermission in package com.google.android.gms

07:15:43.149
PackageManager
Not granting permission android.permission.READ_PRIVILEGED_PHONE_STATE to package com.google.android.gms (protectionLevel=18 flags=0x40c83ec5)

07:15:43.149
PackageManager
Unknown permission android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.USE_FINGERPRINT in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.SEND_SMS_NO_CONFIRMATION in package com.google.android.gms

07:15:43.149
PackageManager
Not granting permission android.permission.PACKAGE_USAGE_STATS to package com.google.android.gms (protectionLevel=18 flags=0x40c83ec5)

07:15:43.149
PackageManager
Unknown permission com.google.android.googlequicksearchbox.permission.PAUSE_HOTWORD in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.MANAGE_VOICE_KEYPHRASES in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.TETHER_PRIVILEGED in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.REAL_GET_TASKS in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.READ_OEM_UNLOCK_STATE in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.SCORE_NETWORKS in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.OVERRIDE_WIFI_CONFIG in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.CONTROL_INCALL_EXPERIENCE in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.USER_ACTIVITY in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.MODIFY_AUDIO_ROUTING in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission com.google.android.wearable.READ_SETTINGS in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.INTENT_FILTER_VERIFICATION_AGENT in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.LOCAL_MAC_ADDRESS in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.READ_WIFI_CREDENTIAL in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.BODY_SENSORS in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission com.google.android.launcher.permission.RECEIVE_LAUNCH_BROADCASTS in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.NOTIFY_PENDING_SYSTEM_UPDATE in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission com.google.android.vending.verifier.ACCESS_VERIFIER in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission com.android.voicemail.permission.READ_VOICEMAIL in package com.google.android.gms

07:15:43.149
PackageManager
Unknown permission android.permission.READ_OWNER_DATA in package com.google.android.setupwizard

07:15:43.149
PackageManager
Unknown permission android.permission.WRITE_OWNER_DATA in package com.google.android.setupwizard

07:15:43.149
PackageManager
Unknown permission com.android.launcher.permission.READ_SETTINGS in package com.android.settings

07:15:43.149
PackageManager
Unknown permission com.android.launcher.permission.WRITE_SETTINGS in package com.android.settings

07:15:43.149
PackageManager
Unknown permission com.sprint.internal.permission.SYSTEMPROPERTIES in package com.redbend.vdmc

07:15:43.149
PackageManager
Unknown permission com.sprint.internal.permission.SYSTEMPROPERTIES_WRITE in package com.redbend.vdmc

07:15:43.149
PackageManager
Unknown permission com.sprint.internal.permission.CONNECTIONMANAGER in package com.redbend.vdmc

Please check this too: 请检查以下内容:

机器人测试结果

This is the last clue: 这是最后一个线索:

https://storage.cloud.google.com/test-lab-vpxbf1ki2h4t8-yy3w5d2vcbxum/web-build_2017-01-02T13:31:31.316Z_VkQZ/hammerhead-19-en_US-portrait/artifacts/aedd5606.png

I also tried searching in Google and Stack Overflow, but I couldn't find any proper answer for my issue. 我也尝试在Google和Stack Overflow中进行搜索,但是找不到适合我问题的正确答案。

Thank you in advance. 先感谢您。

Update 更新资料

Manifest file: 清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.koorosh.googlemapsample_v2">

    <!--
         The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
         Google Maps Android API v2, but you must specify either coarse or fine
         location permissions for the 'MyLocation' functionality. 
    -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme">

        <!--
             The API key for Google Maps-based APIs is defined as a string resource.
             (See the file "res/values/google_maps_api.xml").
             Note that the API key is linked to the encryption key used to sign the APK.
             You need a different API key for each encryption key, including the release key that is used to
             sign the APK for publishing.
             You can define the keys for the debug and release targets in src/debug/ and src/release/. 
        -->
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="@string/google_maps_key" />

        <activity
            android:name=".MapsActivity"
            android:label="@string/title_activity_maps">
        </activity>

        <activity android:name=".SplashActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name=".LoginActivity"/>
        <activity android:name=".SignupActivity"/>
        <activity android:name=".ComeInActivity"/>
        <activity android:name=".GetLocation" />
        <activity android:name=".SettingsActivity"/>
        <activity android:name=".UpdateUserDataActivity"/>
        <activity android:name=".OffersDiscountsMessagesActivity"/>
        <activity android:name=".FavouriteRouteActivity" />
        <activity android:name=".FavouriteRoutesManagement" />
        <activity android:name=".TripActivity"/>


        <!-- ATTENTION: This was auto-generated to add Google Play services to your project for
     App Indexing.  See https://g.co/AppIndexing/AndroidStudio for more information. -->
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />


        <receiver android:name="com.example.koorosh.googlemapsample_v2.MapsActivity$test" >
            <intent-filter>
                <action android:name="com.example.koorosh.googlemapsample_v2.CUSTOM_INTENT" />
            </intent-filter>
        </receiver>

        <service
            android:name=".MyFirebaseMessagingService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>

        <!--<meta-data-->
            <!--android:name="io.fabric.ApiKey"-->
            <!--android:value="d33a10839399d0f2c43861ce20619194ae1cc82f"-->
            <!--/>-->


    </application>

</manifest>

You need to specify the MultiDexApplication in the AndroidManifest.xml to support multi-dex before API 21. 您需要在AndroidManifest.xml中指定MultiDexApplication,以在API 21之前支持multi-dex。

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:screenOrientation="portrait"
    android:theme="@style/AppTheme">

Should be 应该

<application
    android:allowBackup="true"
    android:name="android.support.multidex.MultiDexApplication" 
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:screenOrientation="portrait"
    android:theme="@style/AppTheme">

If you are using AndroidX, then you need to use androidx.multidex.MultiDexApplication . 如果您使用的是AndroidX,则需要使用androidx.multidex.MultiDexApplication

If you use a custom Application class 如果您使用自定义Application类

public class MyApplication extends MultiDexApplication {
    @Override
    protected void attachBaseContext(Context context) {
        super.attachBaseContext(context);
        MultiDex.install(this);
    }
}

manifest.xml manifest.xml

<application
    ...
    android:name="com.example.my.app.MyApplication" >
    ...

I found another solution for this problem thanks to Doug Stevenson. 感谢道格·史蒂文森(Doug Stevenson),我找到了解决该问题的另一种方法。 I changed this line: 我更改了这一行:

compile 'com.google.android.gms:play-services:10.0.1' 

to : 至 :

compile 'com.google.android.gms:play-services-identity:10.0.1'
compile 'com.google.firebase:firebase-appindexing:10.0.1'
compile 'com.google.android.gms:play-services-analytics:10.0.1'
compile 'com.google.android.gms:play-services-gcm:10.0.1'
compile 'com.google.android.gms:play-services-maps:10.0.1'
compile 'com.google.android.gms:play-services-places:10.0.1'
compile 'com.google.android.gms:play-services-location:10.0.1'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在API 19上渲染矢量资产时,Android App崩溃在20以上的API上正常运行 - Android App Crashes while rendering vector asset on API 19 works fine on API above 20 api 级别 19 上的 android edittext 显示不需要的阴影,但 20 以上的 api 看起来不错 - android edittext on api level 19 show unwanted shadow but api above 20 looks fine 波纹可绘制使 Android API 19 上的应用程序崩溃 - ripple drawable crashes the app on Android API 19 Android-onclick不断在模拟器API 19上崩溃,在其他地方正常 - Android - onclick keeps crashing on emulator api 19, works fine elsewhere 在 Android (API 19) 中启动时反应本机应用程序崩溃 - React Native App Crashes on Launch in Android (API 19) Android 过渡动画 API 19 及以上 - Android transition animation API 19 and above kivy android app:将api级别从19设置为26失败 - kivy android app: Set the api level from 19 to 26 failed Android:代码适用于api 19,但不适用于api 24 - Android: code works with api 19 but not with api 24 Leanback库支持API级别19 Android for TV app? - Leanback library support for API level 19 Android for TV app? Android Map适用于API 19,但不适用于API 22 - Android map works on API 19 but not on API 22
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM