1

我确实有如下结构。我想像这样使用不同的 manifestPlaceHolder,projectXTest、projectXDev、projectXProd 都使用不同的 manifestPlaceHolder,而 projectYTest、Prod、Dev 使用相同的 manifestPlaceHolder。除了将这些值放入 string.xml 以适应所有不同的风格之外,我还能做什么

android {
    buildTypes{
        debug{
            // Some debug setup
        }
        release{
            // Some release setup
        }
    }


   flavorDimensions "project" , "default"
    productFlavors {
        projectX{
         dimension 'project'
           }
       
        projectY{
          dimension 'project'
           }

        Test{
          dimension 'default'
           }
        Dev{
          dimension 'default'
           }
        Prod{
          dimension 'default'
           }
    }
}
4

1 回答 1

0

因为我可以从中找到一个。我遵循了这个步骤。我希望,如果有人在这种情况下发现她/他自己,这会有所帮助。

首先

将清单放入所需的风味目录,例如,我已将 android 清单放入 src/projectY 和 src/projectX

注意这些不要完全体现。它应该像下面那样分层

<manifest>
  <application>
    <activity>
        android:name=".x.loginActivity"
        tools:node="merge" // this is must
        // your flavor spesific code
    </activity>
  </application>
</manifest>

第二

在主 XML 中将您的代码删除到最低限度。我的意思是您在 src/flavor 中创建的清单将与主要清单合并。以便删除您要分开的内容,并在 main 中保留您想要使用的内容。

第三

如果您需要分开 prod、dev 和 staging,请给出不同的 manifestPlaceholder 名称。例如,

src/projectX/manifest.xml

 <activity>
    .
    .
    android:host='${projectXHost}'
    .
    </activity>

src/projectY/manifest.xml

<activity>
.
.
android:host='${projectYHost}'
.
</activity>

在毕业

productFlavors{

 prod {
   manifestPlaceholders = [projectXHost : 'xxx' , projectYHost : 'yyy']
}

}

由于这是我的第一个答案,我很抱歉布局和表达。我希望你能明白我的意思。祝你有美好的一天

于 2021-01-12T07:23:02.797 回答