我一直在使用这段代码来删除我不想要的Manifest文件的权限,但是使用新的Merger这是不可能的,我不知道用gradle来修改它。
applicationVariants.all { variant ->
variant.processManifest.doLast {
println("configuring AndroidManifest.xml removing READ_CALL_LOG");
def manifestFile = new File("${buildDir}/intermediates/manifests/${variant.dirName}/AndroidManifest.xml")
def content = manifestFile.getText()
def updatedContent = content.replaceAll("<android:uses-permission android:name=\"android.permission.READ_CALL_LOG\" />", "")
manifestFile.write(updatedContent)
}
variant.processResources.manifestFile = new File("${buildDir}/intermediates/manifests/${variant.dirName}/AndroidManifest.xml")
}
我尝试过类似的东西,但它不起作用
applicationVariants.all { variant ->
variant.outputs.each { output ->
def manifestOutFile = output.processManifest.manifestOutputFile
def newFileContents = manifestOutFile.getText('UTF-8').replace("<android:uses-permission android:name=\"android.permission.READ_CALL_LOG\" />", "")
manifestOutFile.write(newFileContents, 'UTF-8')
}
}
我如何通过新的合并实现相同的目标?
Thansk提前。
答案 0 :(得分:8)
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.processManifest.doLast{
def manifestOutFile = output.processManifest.manifestOutputFile
def newFileContents = manifestOutFile.getText('UTF-8').replace("<android:uses-permission android:name=\"android.permission.READ_CALL_LOG\" />", "")
manifestOutFile.write(newFileContents, 'UTF-8')
}
}
}
这可以帮助您轻松。
答案 1 :(得分:0)
要回答我自己的问题,我最终通过将gradle文件中的TargeSdkVersion设置为高于15的版本来解决问题,这就是Android添加“读取呼叫记录”权限的原因。这样就无需处理清单并手动将其删除。