Skip to content
This repository was archived by the owner on Jun 20, 2023. It is now read-only.

Commit ecb34ce

Browse files
committed
Added a tool to merge the assemblies and generate the map
1 parent 6aa0850 commit ecb34ce

15 files changed

+3254
-19
lines changed

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ docs/
99
generated/
1010
**/scriptcs_packages/
1111
tmp/
12+
util/binderator/
1213

1314
*.xam
1415
*.DS_Store
@@ -33,5 +34,3 @@ Details.md
3334
*.commit
3435
cake.sh
3536
**/.mfractor/**
36-
37-
util/

build.cake

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
// Tools needed by cake addins
2-
#tool nuget:?package=ILRepack&version=2.0.13
32
#tool nuget:?package=Cake.MonoApiTools&version=3.0.1
4-
//#tool nuget:?package=Microsoft.DotNet.BuildTools.GenAPI&version=1.0.0-beta-00081
53
#tool nuget:?package=vswhere
64

75
// Cake Addins
@@ -46,6 +44,8 @@ if (IsRunningOnWindows ()) {
4644
}
4745
var MONODROID_PATH = MONODROID_BASE_PATH.Combine(ANDROID_SDK_VERSION);
4846

47+
var ANDROIDX_MAPPER_EXE = $"util/AndroidXMapper/AndroidXMapper/bin/{BUILD_CONFIG}/net47/AndroidXMapper.exe";
48+
4949
Information ("MONODROID_BASE_PATH: {0}", MONODROID_BASE_PATH);
5050
Information ("MONODROID_PATH: {0}", MONODROID_PATH);
5151

@@ -160,8 +160,6 @@ Task("samples")
160160
});
161161
});
162162

163-
Task("nuget-fat");
164-
165163
Task("nuget-validation")
166164
.Does(() =>
167165
{
@@ -202,6 +200,18 @@ Task("nuget-validation")
202200

203201
});
204202

203+
Task ("androidxmapper")
204+
.Does (() =>
205+
{
206+
MSBuild (
207+
"./util/AndroidXMapper/AndroidXMapper.sln", c => {
208+
c.Configuration = BUILD_CONFIG;
209+
c.MaxCpuCount = 0;
210+
c.Verbosity = VERBOSITY;
211+
c.Restore = true;
212+
});
213+
});
214+
205215
Task ("diff")
206216
.IsDependentOn ("merge")
207217
.Does (() =>
@@ -225,32 +235,42 @@ Task ("diff")
225235
MonoApiMarkdown ("./output/api-info.previous.xml", "./output/api-info.xml", "./output/api-diff.md");
226236
});
227237

238+
Task ("generate-mapping")
239+
.IsDependentOn ("androidxmapper")
240+
.IsDependentOn ("merge")
241+
.Does (() =>
242+
{
243+
DownloadFile (BASE_API_INFO_URL, "./output/api-info.previous.xml");
244+
245+
StartProcess(ANDROIDX_MAPPER_EXE,
246+
$"generate -v " +
247+
$" -s output/api-info.previous.xml " +
248+
$" -x output/api-info.xml " +
249+
$" -j util/AndroidXMapper/Resources/androidx-class-mapping.csv " +
250+
$" -m util/AndroidXMapper/Resources/override-mapping.csv " +
251+
$" -o output/androidx-mapping.csv");
252+
});
253+
228254
Task ("merge")
255+
.IsDependentOn ("androidxmapper")
229256
.IsDependentOn ("libs")
230257
.Does (() =>
231258
{
232259
EnsureDirectoryExists("./output/");
233260

234-
if (FileExists ("./output/AndroidX.Merged.dll"))
235-
DeleteFile ("./output/AndroidX.Merged.dll");
236-
237261
var allDlls = GetFiles ($"./generated/*/bin/{BUILD_CONFIG}/{TF_MONIKER}/Xamarin.*.dll");
238262

239263
var mergeDlls = allDlls
240264
.GroupBy(d => new FileInfo(d.FullPath).Name)
241265
.Select(g => g.FirstOrDefault())
242266
.ToList();
243267

244-
Information("Merging: \n - {0}", string.Join("\n - ", mergeDlls));
245-
246-
ILRepack ("./output/AndroidX.Merged.dll", mergeDlls.First(), mergeDlls.Skip(1), new ILRepackSettings {
247-
CopyAttrs = true,
248-
AllowMultiple = true,
249-
//TargetKind = ILRepack.TargetKind.Dll,
250-
Libs = new List<DirectoryPath> {
251-
MONODROID_PATH
252-
},
253-
});
268+
StartProcess(ANDROIDX_MAPPER_EXE,
269+
$"merge" +
270+
$" -a {string.Join(" -a ", mergeDlls)} " +
271+
$" -o output/AndroidX.Merged.dll " +
272+
$" -s \"{MONODROID_PATH}\" " +
273+
$" --inject-assemblyname");
254274
});
255275

256276
Task ("ci-setup")
@@ -301,6 +321,7 @@ Task ("ci")
301321
.IsDependentOn ("binderate")
302322
.IsDependentOn ("nuget")
303323
.IsDependentOn ("nuget-validation")
324+
.IsDependentOn ("generate-mapping")
304325
.IsDependentOn ("diff")
305326
.IsDependentOn ("samples");
306327

0 commit comments

Comments
 (0)