问题:集成
'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')
}
}