android - Gradle - 如何从 AndroidManifest 获取值?

标签 android gradle android-manifest android-gradle-plugin

Android 项目的 build.gradle 内部

task runAndroidApplication(type: Exec, dependsOn: ':installDebug') {
    //TODO update Activity name below or find a way to get it from AndroidManifest.xml
    if (System.properties['os.name'].toLowerCase().contains('windows')) {
        // windows
        commandLine 'cmd', '/c', 'adb', 'shell', 'am', 'start', '-n', "com.example.androidapptorun.MainActivity"      
    } else {
        // linux 
        commandLine 'adb', 'shell', 'am', 'start', '-n', "com.example.androidapptorun.MainActivity"
    }
}

如何从 AndroidManifest 获取默认 Activity 的主 Activity 值? (此外,如果有多个 Activity ,选择一个 Activity 的逻辑会使它变长, 而处理将在 Android 工具中进行)

Android 插件是否有更好的方法然后解析 AndroidManifest.xml

更新:https://github.com/novoda/gradle-android-command-plugin可以满足某些需求,但我需要无参数版本才能通过 http://marketplace.eclipse.org/content/gradle 在 Eclipse 中快速运行

最佳答案

您可以使用 XmlSlurper 类。

例子:

AndroidManifest.xml

<manifest package="com.example.your.app">

并在gradle中获取它

def manifest = new XmlSlurper().parse(file("AndroidManifest.xml"))

// returns "com.exmaple.your.app"
manifest.@package.text()

关于android - Gradle - 如何从 AndroidManifest 获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22979277/

相关文章:

android - 在 Android Studio 中运行 Robolectric 测试时如何调试?

android - 如何在我的应用中禁用 Android TV 支持? list 提示缺少 LEANBACK_LAUNCHER

android - 如何从子 Activity 调用 TabActivity 中的函数?

java - gradle如何修复依赖关系

java - 如何在不导致窗口泄漏的情况下将 ProgressDialog 与 AsyncTask 一起正确使用?

android - Gradle 混合版本 27.1.1 和 26.1.0

android - 如何创建具有最小和最大高度的布局?

android - 如何摆脱应用程序模块中的模块特定库存储库?

android - 从 Android 中的 HTML 页面调用电话号码时获取 net::ERR_UNKNOWN_URL_SCHEME

android - 如何在应用程序的免费和付费版本中使用相同的 ContentProvider 权限?