Android 应用程序已从PlayStore中删除,因为库不在项目中

Android 应用程序已从PlayStore中删除,因为库不在项目中,android,gradle,Android,Gradle,我收到Play Store发来的一封电子邮件,声明: 我们发现您的应用程序正在使用腾讯TBS SDK,该SDK包含从Google Play以外的源下载可执行代码(例如,dex、JAR、.so文件)的代码 我们从未打算使用此库,事实上它不会显示在依赖项树(./gradlew app:dependencies)中,但在打包APK后,以下文件中会出现一些引用: app/build/intermediates/transforms/dexMerger/xxx/release/0/classes2.dex

我收到Play Store发来的一封电子邮件,声明:

我们发现您的应用程序正在使用腾讯TBS SDK,该SDK包含从Google Play以外的源下载可执行代码(例如,dex、JAR、.so文件)的代码

我们从未打算使用此库,事实上它不会显示在依赖项树(./gradlew app:dependencies)中,但在打包APK后,以下文件中会出现一些引用:

app/build/intermediates/transforms/dexMerger/xxx/release/0/classes2.dex
app/build/intermediates/transforms/proguard/xxx/release/0.jar
app/build/outputs/mapping/xxx/release/seeds.txt
app/build/outputs/mapping/xxx/release/mapping.txt
app/build/outputs/mapping/xxx/release/usage.txt
app/build/outputs/mapping/xxx/release/resources.txt

如何找出使用此库的依赖项?我试图在gradle中排除它,但什么也没发生。

不幸的是,我没有找到一个干净的方法来查找Play Store支持人员提到的库。 每次编译项目时,我都会在dex文件中找到方法签名。 所以我选择了经验主义的方式:

  • 创建了一个包含所有gradle依赖项+模块的空项目
  • 编译项目,同时注释几个依赖项
  • 当dex文件没有引用我正在寻找的库时,我知道我找到了罪犯
几点注意:

  • Play Store一定是在最近几周添加了这个检查,因为我已经使用这个库2年了
  • 找到的依赖项的来源在签名中没有提到该库

为您的模块运行Gradle dependency report(
dependencies
任务)。我确实尝试了第一件事,这通常是查找嵌套依赖项的最佳方法。不幸的是,那个图书馆没有出现在树上。签名仅出现在dex文件中。我在回答中对此做了更好的解释。出于好奇,是什么依赖性导致了这个问题?这是我几年前发现的一个富文本编辑器:。显然,它引用了com.tencent.*这在Play商店中被禁止,因为它包括在商店外加载jar的可能性。解决方法是什么?还有,你用lib代替了这个?请帮助我,我删除了这个库,并用一个简单的文本区替换了它,我真的没有时间进一步研究它。我的回答详细说明了我是如何解决的。