Google Play Team has rejected my app because:
The advertising identifier must not be connected to personally-identifiable information or associated with any persistent device identifier (for example: SSAID, MAC address, IMEI, etc.) without explicit consent of the user.
For example, we have identified that your app's attribution SDK enables collection of IMEI from devices which have an Android advertising ID without prominent disclosure, which is a violation of our Android Advertising ID policy.
I'm not collecting the IMEI
explicitly so the IMEI
must be accessed by one of the dependencies of the app.
How I could detect which one is accessing to the IMEI
?
Updated: These are my dependencies
compile "com.android.support:appcompat-v7:$support_version"
compile "com.android.support:mediarouter-v7:$support_version" // I'm using icons from here, like ic_media_pause and such
compile "com.android.support:recyclerview-v7:$support_version"
compile "com.android.support:design:$support_version"
compile "com.android.support:support-compat:$support_version"
compile 'com.android.support:multidex:1.0.2'
// individual dependencies -- https://mcmap.net/q/162462/-how-to-suppress-the-quot-avoid-using-bundled-version-of-google-play-services-sdk-quot-warning
compile "com.google.android.gms:play-services-maps:$gms_version"
compile "com.google.android.gms:play-services-analytics:$gms_version"
compile "com.google.android.gms:play-services-gcm:$gms_version"
compile "com.google.firebase:firebase-appindexing:$gms_version"
compile "com.google.firebase:firebase-core:$gms_version"
compile "com.facebook.android:facebook-android-sdk:$facebook_version"
compile 'com.facebook.android:notifications:1.0.2'
compile 'com.batch.android:batch-sdk:1.11.0'
compile 'commons-codec:commons-codec:1.9'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'
compile 'com.github.chrisbanes.photoview:library:1.2.2'
compile 'de.greenrobot:eventbus:2.4.0'
compile 'info.hoang8f:android-segmented:1.0.5'
compile 'io.card:android-sdk:5.4.2'
compile 'me.dm7.barcodescanner:zxing:1.9'
compile 'com.google.android.exoplayer:exoplayer:r2.2.0'
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.squareup.okhttp:okhttp:2.2.0'
compile 'io.reactivex:rxandroid:1.1.0'
compile 'io.reactivex:rxjava:1.1.0'
//compile 'io.reactivex:rxjava-joins:0.22.0' // to use JoinObservable (and-then-when combinator)
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
// In libs we have:
// - ZooZ 1.02 : From https://github.com/Zooz/Zooz-Android/releases/tag/1.02
// - AppsFlyer : AF-Android-SDK 2.3.1.13 jar
// - Volley
compile fileTree(dir: '../libs', include: '*.jar')
compile('com.crashlytics.sdk.android:crashlytics:2.7.1@aar') {
transitive = true
}
Note: AppsFlyer
has been configured as:
AppsFlyerLib.setCollectIMEI(false); // https://play.google.com/about/monetization-ads/ads/ad-id/
AppsFlyerLib.setCollectMACAddress(false);
AppsFlyerLib.setCollectAndroidID(false);
android.permission.READ_PHONE_STATE
permission in yourmanifest
? Do you need it ? You cannot getIMEI
without it (for API >4).See also Attribution & Analytics SDKsFor reference Best practices for unique identifiers. Could becrashlytics
? – Rubioandroid.permission.READ_PHONE_STATE
permission. I'm not sure what I will break removing this permission. I'm going to check the resources you provided, thanks. Why do you suspectcrashlytics
? – Emissivity