如何使用gradle获取AndroidManifest属性

时间:2016-06-03 10:57:16

标签: 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>

如何获得First活动&#34; windowSoftInputMode&#34;使用gradle值。

事实上,在尝试获取&#34; android:versoinCode&#34;时遇到了一些麻烦。值。

这是我的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}
}

使用此代码获取软件包的名称是可以的,但是当我尝试获取&#34; android:versionCode&#34;。

时返回null

抱歉我的英语不好......

1 个答案:

答案 0 :(得分:0)

我自己解决了。

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'
    }
  }
}