android - 如何使用 gradle 获取 AndroidManifest 属性

标签 android gradle xml-parsing

<?xml version="1.0" encoding="utf-8"?>
<manifest 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.nd.component"
android:versionCode="1"
android:versionName="0.1.0-SNAPSHOT">

<uses-sdk
    android:minSdkVersion="15"
    android:targetSdkVersion="21"/>


<application>
    <activity
        android:name=".MainContainerActivity"
        android:configChanges="screenSize|orientation|keyboardHidden"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustPan"
        />


    <activity
        android:name="com.nd.component.update.DownloadActivity"
        android:theme="@android:style/Theme.Dialog"/>

    <permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/>
</application>

如何使用 gradle 获取第一个 Activity 的“windowSoftInputMode”值。

事实上,我在尝试获取“android:versoinCode”值时遇到了一些麻烦。

这是我的 gradle 代码。

task parsexx() {
def parseXmlFile = (new XmlParser()).parse('AndroidManifest.xml');
println parseXmlFile.@package
def android_versionCode = 'android:versionCode'
println "${android_versionCode}"
println parseXmlFile.@"${android_versionCode}"
println parseXmlFile.@${android_versionCode}
}

使用这段代码获取包名是可以的,但是当我尝试获取“android:versionCode”时返回null。

抱歉我的英语不好...

最佳答案

我自己解决的。

task parsexxx() {
  def manifest = new XmlSlurper().parse('AndroidManifest.xml').declareNamespace(android:'http://schemas.android.com/apk/res/android');
  println manifest.@package
  manifest.application.activity.each { 
  def m = it.attributes()['android:name'] =~ /MainContainerActivity/
    if (m.find()) {
        println "FOUND!"
        if (it.attributes()['android:windowSoftInputMode'] == "adjustPan") {
        println "Attribute Found!"
        it.@'android:windowSoftInputMode' = "adjustResize" 
        println it.@'android:windowSoftInputMode'
    }
  }
}

关于android - 如何使用 gradle 获取 AndroidManifest 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37612561/

相关文章:

python - 如何将xml xpath解析为列表python

c# - 使用 XML 解析器从 DTSX 文件中获取 XML 元素值

c# - 如何使用c#获取根元素的所有键值?

android - 不推荐使用 defaultDisplay : Display! 的 Getter。在 Java 中已弃用

安卓工作室 - "waiting for target device to come online"

android - Android 上的谷歌浏览器(仅限 Android)不允许使用类型号和步长为 ="any"的 Decimal

java.lang.NoClassDefFoundError : Failed resolution

android - 通过 Kotlin DSL 从 local.properties 读取值

火力地堡, flutter 错误 'Could not resolve all files for configuration'

android - 从 String 实例化一个 fragment ?