java.lang.RuntimeException: Unable to get provider com.tencent.android.tpush.SettingsContentProvide

问题:集成

'com.tencent.tpns:tpns:1.2.6.0-release'   //TPNS 推送包

在Android 4.4 报错

 java.lang.RuntimeException: Unable to get provider com.tencent.android.tpush.SettingsContentProvider: java.lang.ClassNotFoundException: Didn't find class "com.tencent.android.tpush.SettingsContentProvider" on path: DexPathList
[[zip file "/data/app/com.savekey.cloud-2.apk"],nativeLibraryDirectories=
[/data/app-lib/com.savekey.cloud-2, /vendor/lib, /system/lib]]
 

说明:项目中因为 Cannot fit requested classes in a single dex file (# methods: 149346 > 65536)这个错误而引入multidex库, 'com.android.support:multidex:1.0.3'

解决方案:根据推送官方技术人员提供的技术支持,解决问题如下

1. 在app项目下新建 multidex-config.pro文件,

2. 在文件添加:

-keep class com.tencent.android.tpush.SettingsContentProvider {*;}
-keep class com.tencent.android.tpush.logging.TLogger {*;}
-keep class com.tencent.tpns.baseapi.base.logger.** {*;}
-keep public class * extends android.app.Service
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.content.BroadcastReceiver
-keep class com.tencent.android.tpush.** {*;}

-keep class com.tencent.bugly.** {*;}

3.在build.gradle添加  multiDexKeepProguard file('multidex-config.pro') 这段

 buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            multiDexKeepProguard file('multidex-config.pro')
        }
        debug {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            multiDexKeepProguard file('multidex-config.pro')
        }
    }

版权声明:本文为m0_37039192原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。