joa*_*ofn 1 compilation dynamic-compilation targets xamarin.forms
=> Xamarin形式
=>在Mac上使用Xamarin Studio(但我也可以使用Visual Studio)
想象一个具有图像(客户徽标),登录名(条目控件),密码(条目控件)和一个登录按钮的通用登录应用程序。
我想为多个客户(从1到99)构建这个应用程序。每个应用程序在以下方面有所不同:
我想到要使用Resources(.resx)或某种编译指令。但我不确定如何正确执行任何操作。
先感谢您!
小智 5
我假设您想为不同的客户构建不同的apk / ipa。如果没有,请更新您的问题。
您可以为每个客户端设置构建配置。在每种配置中,定义适当的符号。例如,配置“ DebugClientA”和“ ReleaseClientA”可能具有符号CLIENT_A
。
然后,在代码中,首先声明属性/字段,包括字符串文字,图像的路径,颜色等。将赋值放在其他位置。我把它们放在App()
构造函数调用的方法调用中。
对于分配,将它们放入#if
和#elif
块(MSDN doc)。该代码应如下所示:
#if CLIENT_A
MyString = "ClientA";
// Following is for ImageSource.FromResource()
MyPathToImage = "MyAssembly.images.clienta.image.png";
MyColor = Color.FromHex("012345");
#elif CLIENT_B
MyString = "ClientB";
MyPathToImage = "MyAssembly.images.clientb.image.png";
MyColor = Color.FromHex("6789AB");
// repeat as needed
#endif
Run Code Online (Sandbox Code Playgroud)
现在,您的应用程序应该为每个客户端具有特定的文字,图像和颜色。
自定义应用程序名称是棘手的部分:自定义的Android AndroidManifest.xml和iOS Info.plist。我的做法涉及一些(IMO)讨厌的骇客。两种平台的方法都相同,因此我只写Android版本。
编辑Android项目的属性。将占位符放入要为每个客户端自定义的字段,例如“ AppNameCustomized”和“ package.name.customized”。
仍在项目属性中,添加一个预构建事件以修改Properties/AndroidManifest.xml
并将输出保存到Properties/AndroidManifest_ClientA.xml
(不更改原始文件)。您想要对其进行修改,以便用客户端A的应用名称替换“ AppNameCustomized”。“ package.name.customized”等类似。在Mac上sed
应该可以解决问题。对其他客户端重复此操作。
.csproj
使用文本编辑器(不是来自XS)打开Android项目文件。在最后一个之后PropertyGroup
和第一个之前ItemGroup
,PropertyGroup
为每个客户端添加以下内容:
<PropertyGroup Condition=" '$(Configuration)' == 'DebugClientA' Or '$(Configuration)' == 'ReleaseClientA' ">
<AndroidManifest>Properties/AndroidManifest_ClientA.xml</AndroidManifest>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
对于应用程序名称和程序包名称,基本上可以归结为:为每个客户端生成一个自定义的AndroidManifest,其中包含所需的应用程序/程序包名称。然后根据构建配置使用正确的AndroidManifest。
大功告成!只需使用DebugClientA进行测试,然后使用ReleaseClientA进行发布即可。
归档时间: |
|
查看次数: |
710 次 |
最近记录: |