推荐的创建Android应用测试版的方法

时间:2012-03-09 09:29:46

标签: android xamarin.android

我们有一个使用Mono for Android构建的Android应用程序,现在我们希望制作可部署的测试版本以用于验收测试。生产版本保留在设备上并继续工作非常重要。在不引起包名称冲突等干扰的情况下,建议创建测试版本的建议方法是什么?

2 个答案:

答案 0 :(得分:4)

此解决方案适用于Android的Mono,允许您根据Visual Studio中的构建配置更改应用程序的包名称:

  1. 为您的解决方案创建新的构建配置测试
  2. 在项目中定义新的条件编译符号 TEST
  3. 将现有AndroidManifest.xml重命名为AndroidManifest-Template.xml
  4. Properties 文件夹中创建两个.xslt文件:
    清单-transform.xslt

    <?xml version="1.0" ?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:output indent="yes" />
      <xsl:template match="@*|node()">
        <xsl:copy>
          <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
      </xsl:template>
      <xsl:template match="/manifest/@package">
        <xsl:attribute name="package">
          <xsl:value-of select="'<your.test.package.name.here>'" />
        </xsl:attribute>
      </xsl:template>
    </xsl:stylesheet>
    

    <强>清单-copy.xslt

    <?xml version="1.0" ?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:output indent="yes" />
      <xsl:template match="@*|node()">
        <xsl:copy>
          <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
      </xsl:template>
    </xsl:stylesheet>
    
  5. 将两个XslTransformation任务添加到项目文件的BeforeBuild目标中:

    <Target Name="BeforeBuild">
      <XslTransformation 
        Condition="'$(Configuration)|$(Platform)' != 'Test|AnyCPU'" 
        XslInputPath="Properties\manifest-copy.xslt" 
        XmlInputPaths="Properties\AndroidManifest-Template.xml" 
        OutputPaths="Properties\AndroidManifest.xml" />
      <XslTransformation 
        Condition="'$(Configuration)|$(Platform)' == 'Test|AnyCPU'" 
        XslInputPath="Properties\manifest-transform.xslt" 
        XmlInputPaths="Properties\AndroidManifest-Template.xml" 
        OutputPaths="Properties\AndroidManifest.xml" />
    </Target>
    
  6. 对条件代码使用 TEST 符号:

    #if TEST
        [Application(
            Label = "App Test", 
            Theme = "@style/Theme.App.Test", 
            Icon = "@drawable/ic_launcher_test")]
    #else
        [Application(
            Label = "App", 
            Theme = "@style/Theme.App", 
            Icon = "@drawable/ic_launcher")]
    #endif
    
  7. 现在,您可以通过更改构建配置来切换测试和常规应用程序:)

答案 1 :(得分:0)

更改包名称应该足以防止冲突,除非您将数据写入硬编码位置,这也需要更改。