如何在不使用多个文件的情况下使用不同的Android XML进行生产和测试

时间:2013-09-19 06:28:45

标签: java android xml

我的应用程序的测试版本与生产版本有几个不同的功能。我在主要活动中使用静态常量来区分它们:

static final boolean TestingBuild = true;
// ...
if ( TestingBuild ) {
    initNewFeature();
}

但是这两个版本还需要XML布局文件中的差异。例如,测试版本需要一个激活新功能的按钮。我该如何解决这个问题?

我目前的解决方案是根据TestingBuild加载不同的XML文件,但这会导致大量重复的XML代码。此外,当我需要进行更改时,我需要编辑两个XML文件而不是一个。

1 个答案:

答案 0 :(得分:0)

没有其他方法可以为您的情况提供多种XML布局。但是,您可以使用includemerge标记删除重复的代码。

定义一个可发布的布局并包含您的测试布局,其中一些视图仅用于测试。

这样的事情:

testing_layout:

<Button
    android:layout_height=".."
    android:layout_width=".."
    ...
/>

测试布局是一个简单的例子。如果您愿意,可以使用周围的ViewGroup。

release_layout:

<LinearLayout
      android:layout_height="match_parent"
      android:layout_width="match_parent">

      <TextView.../>
      <Button.../>
      <include layout="@layout/testing"
          <!-- here you can redefine android:layout_ tags of the included layout -->
      />
</LinearLayout>

通过这种方式,您可以添加部分UI而无需重复代码,这样可以更好地使用和维护。但是你仍然需要两个布局,一个用于发布而不包含,一个用于测试包含。决定自己哪些代码可以为您节省更多代码,以便在发布版布局中包含测试,或者相反。