问题背景
最新的FaceBook的的初始化已经放在了provider中了.这样倒是方便了使用.不过缺少了控制.
比如最近遇到点问题,需要根据渠道号动态的禁用Facebook的初始化.如果去掉sdk.则需要修改挺多的代码.
思路
替换Facebook的初始化provider,因为provider是放在aar中的.所以需要替换的时候有点难度
解决办法
编写替换脚本
创建一个patch.gradle脚本
// Top-level build file where you can add configuration options common to all sub-projects/modules.
def runtime_config_file = rootProject.getRootDir().getAbsolutePath() + '/runtime_config'
project.afterEvaluate{
tasks.getByName("preReleaseBuild"){
it.doFirst{
println "generate release configuration for ${project.name}"
def configFile = new File(runtime_config_file)
configFile.withOutputStream{os->
os << "I am release"
}
}
}
project.tasks.getByName("preDebugBuild") {
it.doFirst {
project.android.applicationVariants.all { variant ->
variant.outputs.each { output ->
output.processManifest.doLast {
def manifestFile = "${project.getProjectDir().absolutePath}/build/intermediates/merged_manifests/${variant.dirName}/AndroidManifest.xml"
// def configFile = new File(runtime_config_file)
// configFile.writeOutputStream{os ->
// os << manifestFile
// }
def updatedContent = new File(manifestFile).getText('UTF-8').replaceAll("com.facebook.FacebookContentProvider", "com.wx.app.utils.FacebookContentProvider")
new File(manifestFile).write(updatedContent, 'UTF-8')
}
}
}
}
}
}
复制代码
引入脚本
在app的build.gradle中引入下面的代码
apply from: rootProject.getRootDir().getAbsolutePath() + “/patch.gradle”
作用
这个脚本会在编译app模块时,debug模式下修改AndroidManifest.xml中的facebook的初始化provider
替换成自己的初始化类.
检测
可以把生成的apk放在android studio中看下里面的AndroidManifest.xml中是否还有facebook的初始化类.
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END



















![[02/27][官改] Simplicity@MIX2 ROM更新-一一网](https://www.proyy.com/wp-content/uploads/2020/02/3168457341.jpg)



![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)
![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)
