Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 不同的口味与渐变不同_Android_Gradle_Android Manifest - Fatal编程技术网

Android 不同的口味与渐变不同

Android 不同的口味与渐变不同,android,gradle,android-manifest,Android,Gradle,Android Manifest,我有这样的情况:4味,我必须有8个建设,共4个应用程序声明在清单中的可访问性和4没有。 我在清单中找到了声明2个buildType的唯一解决方案,这样我就可以为buildType创建一个源集,并指定manifest src。但这样的话,我有欠考虑 可达性 无可达性 调试 释放 所以现在我无法测试可调试性debug,所以我必须创建另外两个指定可调试true的构建类型。最后的情况是 可达性 可访问性调试 无可达性 无可访问性调试 调试 释放 这些只是构建类型,但我也有4种风格,所以我的构建变体是24

我有这样的情况:4味,我必须有8个建设,共4个应用程序声明在清单中的可访问性和4没有。 我在清单中找到了声明2个buildType的唯一解决方案,这样我就可以为buildType创建一个源集,并指定manifest src。但这样的话,我有欠考虑

  • 可达性
  • 无可达性
  • 调试
  • 释放
  • 所以现在我无法测试可调试性debug,所以我必须创建另外两个指定可调试true的构建类型。最后的情况是

  • 可达性
  • 可访问性调试
  • 无可达性
  • 无可访问性调试
  • 调试
  • 释放
  • 这些只是构建类型,但我也有4种风格,所以我的构建变体是24种

    这基本上很糟糕。无法声明默认调试和发布使用的两个源集

    要求

    flavor1/accessibilty
    flavor1/no accessibilty
    flavor2/accessibilty
    flavor2/no accessibilty
    ecc..
    
    首次实施

     buildTypes {
        noaccesibiltyDebug {
            minifyEnabled false
            debuggable true
        }
        accessibilityDebug {
            minifyEnabled false
            debuggable true
        }
        noaccessibilty {
            minifyEnabled true
            debuggable false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        accessibility {
            minifyEnabled true
            debuggable false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets {
        noaccessibiltyDebug {
            manifest.srcFile('/src/main/AndroidManifest.xml')
        }
        accessibilityDebug {
            manifest.srcFile('/src/main/accessibility/AndroidManifest.xml')
        }
        noaccessibilty {
            manifest.srcFile('/src/main/AndroidManifest.xml')
        }
        accessibility {
            manifest.srcFile('/src/main/accessibility/AndroidManifest.xml')
        }
    }
    
    结果

    build/output/apk/accessibilty
                    /noaccessibilty
                    /accessibiltyDebug
                    /noaccessibiltyRelease   
                    /debug <- **********useless**********
                    /release <- **********useless**********
    
    build/output/apk/accessibility
    /无效
    /易接近性缺陷
    /无乙酰基二酪氨酸酯酶
    
    /调试我不确定您是否应该依赖构建类型。仅使用调味品适合这种情况。 例如,您应该像往常一样设置主清单,在build.gradle中,您可以声明一个补充清单:

    android.sourceSets.flavor1{
        res {
            srcDir 'app/src/flavor1/res'
        }
        resources {
            srcDir 'app/src/flavor1/res'
        }
        java {
            srcDir 'app/src/flavor1/src'
        }
        manifest {
            srcFile 'app/src/flavor1/AndroidManifest.xml'
        }
    }
    
    然后,在特定的flavor1清单文件中,您可以添加声明,或者根据需要使用工具删除声明:例如,节点标记

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove"/>
    
    
    

    然后,清单合并工具将使用所需的声明构建您的所有风格。

    这并不是我所需要的,因为这样我需要复制我的所有风格,4个用于具有可访问性的清单,4个用于不具有可访问性的清单。当然,它是有效的,但它与构建类型并没有真正的区别。不清楚您要求什么或需要什么。请分享一些代码片段以便更好地理解。@RaguSwaminathan现在更好了吗?