Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DO NOT MERGE] TFM net9.0 #875

Open
wants to merge 82 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
1468439
TFM net8.0
moljac Oct 24, 2023
cb7ad78
Update Metadata.xml
moljac Oct 25, 2023
427d12e
object-detection fixes
moljac Oct 26, 2023
cc5b6e3
more metadata fixes
moljac Nov 1, 2023
d0860bc
TFM fixes
moljac Nov 1, 2023
d8b41ca
Merge branch 'main' into mu-20231024-tfm-net80
moljac Nov 1, 2023
0c85469
Merge branch 'main' into mu-20231024-tfm-net80
moljac Nov 6, 2023
ef6b984
Update Metadata.xml
moljac Nov 10, 2023
e5d6f02
Merge branch 'main' into mu-20231024-tfm-net80
moljac Feb 5, 2024
51982b3
Merge branch 'main' into mu-20231024-tfm-net80
moljac Feb 9, 2024
39012ae
Merge branch 'main' into mu-20231024-tfm-net80
moljac Feb 20, 2024
75472f9
Update workloads.json
moljac Feb 25, 2024
25d6cbb
Update Metadata.xml
moljac Feb 25, 2024
5780829
TFM specific metadata renamed
moljac Mar 3, 2024
a9259ab
Merge branch 'main' into mu-20231024-tfm-net80
moljac Mar 21, 2024
022bf25
ads lite sample ported
moljac Apr 15, 2024
c4b5b75
ads sample ported
moljac Apr 15, 2024
c5aba9e
analytics sample ported
moljac Apr 15, 2024
2dcf314
appinvite sample ported
moljac Apr 15, 2024
66855d3
Update .gitignore
moljac Apr 15, 2024
b1503d0
Update Directory.Build.targets
moljac Apr 15, 2024
1220f37
AdMobSample
moljac Apr 22, 2024
83cac6a
AppInvite Sample
moljac Apr 22, 2024
f12b331
Cast Sample
moljac Apr 22, 2024
a45670a
Drive Sample
moljac Apr 22, 2024
6839a3b
Fitness sample
moljac Apr 22, 2024
75e4ec5
Merge branch 'main' into mu-20231024-tfm-net80
moljac Apr 30, 2024
d78757b
Merge branch 'main' into mu-20231024-tfm-net80
moljac May 6, 2024
322afb2
Merge branch 'main' into mu-20231024-tfm-net80
moljac May 29, 2024
26a5806
GCM and PlayServices samples
moljac May 30, 2024
68fcf3d
nuget version fix
moljac May 30, 2024
e361495
Update published-namespaces.txt
moljac May 30, 2024
8ecfa37
Firebase samples migrated + UITests
moljac May 30, 2024
7866e74
gcm games excluded
moljac May 31, 2024
51f0073
samples migrated
moljac May 31, 2024
7092f57
removed Xamarin.Forms samples
moljac May 31, 2024
f3c0835
excluded some samples
moljac May 31, 2024
ef153d3
nuget CPM implementation
moljac Jun 3, 2024
afdb720
CPM fixes
moljac Jun 3, 2024
c92fa3a
nuget CPM common files fixed
moljac Jun 3, 2024
bca8b05
MAUI App sample renewed
moljac Jun 3, 2024
b295474
cleanup older common files
moljac Jun 3, 2024
fd470a4
BuildAll* fixes
moljac Jun 3, 2024
1922150
casing changed
moljac Jun 3, 2024
8d132b2
cleanup
moljac Jun 3, 2024
6e3e851
Update build.cake
moljac Jun 3, 2024
76b3e7f
samples fixed (nuget warnings) for nuget CPM
moljac Jun 3, 2024
8fdcaa4
Update global.json
moljac Jun 4, 2024
26fc9b4
Update workloads.json
moljac Jun 4, 2024
3402fc8
fixed Play nuget errors
moljac Jun 4, 2024
3f85730
nuget CPM versions removed
moljac Jun 4, 2024
4a3647a
AndroidGenerateResourceDesigner=true
moljac Jun 4, 2024
6eb4802
root namespace fixed
moljac Jun 4, 2024
b03e600
UITests fixed for nuget CPM
moljac Jun 4, 2024
cfa3095
Clean up obsolete metadata.
jpobst Jun 4, 2024
0adc484
commented out sample for SafetyNet (System.Json)
moljac Jun 5, 2024
c1aee9a
more fixes for samples (nuget version bumps etc)
moljac Jun 5, 2024
9de0990
uncommented Xamarin.TensorFlow.Lite.Select.TF.Ops
moljac Jun 5, 2024
24918ce
excluded some packages to avoid ACW errors
moljac Jun 5, 2024
829b05c
Update BuildAllDotNet.csproj
moljac Jun 5, 2024
63ce88d
more ACW fixes
moljac Jun 5, 2024
ee38a34
excluded few samples
moljac Jun 6, 2024
39622e2
MAUI sample fixes
moljac Jun 6, 2024
5ff2aa6
excluded AssetPackSample
moljac Jun 6, 2024
10ad7a9
Update AssetPackSample.csproj
moljac Jun 6, 2024
4aa1f56
excluded BuildAllPlayDotNet
moljac Jun 6, 2024
2c55aa5
automatic files
moljac Jun 6, 2024
e5f5420
fixes based on Dean's review
moljac Jun 6, 2024
9937308
cleaup
moljac Jun 6, 2024
5796285
atomatic files
moljac Jun 7, 2024
a456443
net9.0 preview4
moljac Jun 7, 2024
bea317c
UITests fixes
moljac Jun 7, 2024
614b6c7
reference branch changed
moljac Jun 7, 2024
db9437f
workload fix
moljac Jun 7, 2024
5d9b5da
ios maccatalyst tvos workloads
moljac Jun 7, 2024
0d2b94a
Update workloads.json
moljac Jun 7, 2024
211a9dd
Update workloads.json for maui from ax
moljac Jun 7, 2024
9fcbce2
Merge branch 'main' into mu-20240605-tfm-net90
moljac Jun 10, 2024
fab3dd3
Merge branch 'main' into mu-20240605-tfm-net90
moljac Jun 13, 2024
93f925b
Merge branch 'main' into mu-20240605-tfm-net90
moljac Jun 14, 2024
edd1aac
Merge branch 'main' into mu-20240605-tfm-net90
moljac Jun 30, 2024
16e9e33
Merge branch 'main' into mu-20240605-tfm-net90
moljac Jul 15, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
**/.idea/
tools/**
!tools/packages.config
bin/
Expand Down
5 changes: 3 additions & 2 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
<RepositoryType>git</RepositoryType>

<!-- Default TFM's we build for -->
<_DefaultTargetFrameworks>net8.0-android</_DefaultTargetFrameworks>

<_DefaultTargetFrameworks>net9.0-android</_DefaultTargetFrameworks>
<!-- Enable DIM/SIM for Classic (defaults to true on .NET) -->
<AndroidBoundInterfacesContainStaticAndDefaultInterfaceMethods>true</AndroidBoundInterfacesContainStaticAndDefaultInterfaceMethods>

Expand Down Expand Up @@ -38,4 +38,5 @@
<ItemGroup>
<_TargetFrameworkNugetAarFolders Include="aar\net8.0-android34.0" />
</ItemGroup>

</Project>
2 changes: 1 addition & 1 deletion azure-pipelines.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ resources:
type: github
name: xamarin/androidx
endpoint: xamarin
ref: refs/heads/main
ref: refs/heads/mu-20240220-tfm-net90

extends:
template: v1/1ES.Official.PipelineTemplate.yml@1esPipelines
Expand Down
238 changes: 203 additions & 35 deletions build.cake
Original file line number Diff line number Diff line change
Expand Up @@ -627,36 +627,80 @@ Task("samples-directory-build-targets")
XmlElement element_ig = doc_all.CreateElement( string.Empty, "ItemGroup", string.Empty );
element_p.AppendChild(element_ig);


foreach(JObject jo in binderator_json_array[0]["artifacts"])
{
bool? dependency_only = (bool?) jo["dependencyOnly"];
if ( dependency_only == true)
{
continue;
}

string nuget_id = (string) jo["nugetId"];
/*
errors

error XA4215: The Java type `X` is generated by more than one managed type.

ACW

java error JAVA0000: Type X is defined multiple times:
*/
if
(
nuget_id == "Xamarin.GooglePlayServices.Games"
||
nuget_id.Contains("Xamarin.GooglePlayServices.Ads")
||
nuget_id == "Xamarin.GooglePlayServices.Measurement"
||
nuget_id == "Xamarin.Firebase.ML.Vision.Internal.Vkp"
||
nuget_id == "Xamarin.Google.MLKit.Vision.Internal.Vkp"
||
nuget_id == "Xamarin.Google.MLKit.ImageLabeling"
||
nuget_id == "Xamarin.Google.MLKit.ImageLabeling.Custom"
||
nuget_id == "Xamarin.Google.MLKit.ObjectDetection"
||
nuget_id == "Xamarin.Google.MLKit.ObjectDetection.Custom"
||
nuget_id == "Xamarin.Protobuf.Lite"
)
{
continue;
}


string version = (string) jo["version"];
string nuget_version = (string) jo["nugetVersion"];
Information($"groupId = {jo["groupId"]}");
Information($"artifactId = {jo["artifactId"]}");
Information($"version = {version}");
Information($"nuget_version = {nuget_version}");
Information($"nugetId = {jo["nugetId"]}");
Information($"nugetId = {nuget_id}");

XmlElement element_pr = doc_all.CreateElement( string.Empty, "PackageReference", string.Empty );
XmlElement element_pr = doc_all.CreateElement( string.Empty, "PackageVersion", string.Empty );
element_ig.AppendChild(element_pr);
XmlAttribute attr_update = doc_all.CreateAttribute("Update");
attr_update.Value = (string) jo["nugetId"];
XmlAttribute attr_update = doc_all.CreateAttribute("Include");
attr_update.Value = nuget_id;
element_pr.Attributes.Append(attr_update);
XmlAttribute attr_version = doc_all.CreateAttribute("Version");
attr_version.Value = nuget_version;
element_pr.Attributes.Append(attr_version);
}

XmlElement xbd_pr = doc_all.CreateElement( string.Empty, "PackageReference", string.Empty );
XmlElement xbd_pr = doc_all.CreateElement( string.Empty, "PackageVersion", string.Empty );
element_ig.AppendChild(xbd_pr);
XmlAttribute xbd_attr_update = doc_all.CreateAttribute("Update");
XmlAttribute xbd_attr_update = doc_all.CreateAttribute("Include");
xbd_attr_update.Value = "Xamarin.Build.Download";
xbd_pr.Attributes.Append(xbd_attr_update);
XmlAttribute xbd_attr_version = doc_all.CreateAttribute("Version");
xbd_attr_version.Value = "0.11.4";
xbd_pr.Attributes.Append(xbd_attr_version);

doc_all.Save( System.IO.Path.Combine("samples", "Directory.Build.targets" ));
//doc_all.Save( System.IO.Path.Combine("samples", "Directory.Build.targets" ));
doc_all.Save( System.IO.Path.Combine("output", "Directory.Build.targets" ));

string[] lines = System.IO.File.ReadAllLines("./output/Directory.Build.targets");
Expand All @@ -677,11 +721,23 @@ Task("samples-directory-build-targets")
lines_gps.Add(line);
}

if
(
line.Contains("Xamarin.GooglePlayServices.")
)
if (line.Contains("Xamarin.GooglePlayServices.") )
{
if
(
line.Contains("Xamarin.GooglePlayServices.Games")
||
line.Contains("Xamarin.GooglePlayServices.Measurement")
||
line.Contains("Xamarin.GooglePlayServices.Ads")
)
{
Information($"{new string('-', 120)}");
Information($"Skipping {line}");

continue;
}

lines_gps.Add(line);
}
else
Expand All @@ -703,11 +759,16 @@ Task("samples-directory-build-targets")
lines_fb.Add(line);
}

if
(
line.Contains("Xamarin.Firebase.")
)
if ( line.Contains("Xamarin.Firebase.") )
{
if
(
line.Contains("Xamarin.Firebase.ML.Vision.Internal.Vkp")
)
{
continue;
}

lines_fb.Add(line);
}
else
Expand All @@ -729,11 +790,24 @@ Task("samples-directory-build-targets")
lines_mlkit.Add(line);
}

if
(
line.Contains("Xamarin.Google.MLKit.")
)
if ( line.Contains("Xamarin.Google.MLKit.") )
{
if
(
line.Contains("Xamarin.Google.MLKit.Vision.Internal.Vkp")
||
line.Contains("Xamarin.Google.MLKit.ImageLabeling")
||
line.Contains("Xamarin.Google.MLKit.ImageLabeling.Custom")
||
line.Contains("Xamarin.Google.MLKit.ObjectDetection")
||
line.Contains("Xamarin.Google.MLKit.ObjectDetection.Custom")
)
{
continue;
}

lines_mlkit.Add(line);
}
else
Expand All @@ -755,10 +829,7 @@ Task("samples-directory-build-targets")
lines_gp.Add(line);
}

if
(
line.Contains("Xamarin.Google.Android.Play.")
)
if ( line.Contains("Xamarin.Google.Android.Play.") )
{
lines_gp.Add(line);
}
Expand Down Expand Up @@ -795,9 +866,22 @@ Task("samples-directory-build-targets")
||
line.Contains("Xamarin.CodeHaus.")
||
line.Contains("Xamarin.Protobuf.")
||
line.Contains("Xamarin.TensorFlow.")
)
{
if
(
line == "Xamarin.Protobuf.Lite"
)
{
Information($"{new string('-', 120)}");
Information($"Skipping {line}");

continue;
}

lines_diverse.Add(line);
}
else
Expand Down Expand Up @@ -834,9 +918,44 @@ Task("samples-only-dotnet")

string[] solutions = new string[]
{
"./samples/dotnet/BuildAllDotNet.sln",
"./samples/dotnet/BuildAllMauiApp.sln",
"./samples/dotnet/BuildAllPlayDotNet.sln",
// "./samples/all/BuildAll.sln",
// "./samples/dotnet/BuildAllDotNet.sln",
//"./samples/dotnet/BuildAllMauiApp.sln",
//"./samples/dotnet/BuildAllPlayDotNet.sln",

"./samples/com.google.android.gms/play-services-nearby/NearbySample.sln",
"./samples/com.google.android.gms/play-services-vision/VisionSample.sln",
// System.Json ???
//"./samples/com.google.android.gms/play-services-safetynet/SafetyNetSample.sln",
"./samples/com.google.android.gms/play-services-gcm/GCMSample.sln",
"./samples/com.google.android.gms/play-services-places/PlacesAsync.sln",
"./samples/com.google.android.gms/play-services-plus/PlusSample.sln",
"./samples/com.google.android.gms/play-services-ads/AdMobSample.sln",
"./samples/com.google.android.gms/play-services-ads-lite/AdsLiteSample.sln",
"./samples/com.google.android.gms/play-services-panorama/PanoramaSample.sln",
"./samples/com.google.android.gms/play-services-analytics/AnalyticsSample.sln",
"./samples/com.google.android.gms/play-services-fitness/BasicSensorsApi.sln",
"./samples/com.google.android.gms/play-services-location/LocationSample.sln",
//"./samples/com.google.android.gms/play-services-games/BeGenerous.sln",
"./samples/com.google.android.gms/play-services-appinvite/AppInviteSample.sln",
"./samples/com.google.android.gms/play-services-drive/DriveSample.sln",
"./samples/com.google.android.gms/play-services-maps/MapsSample.sln",
"./samples/com.google.android.gms/play-services-wallet/AndroidPayQuickstart.sln",
"./samples/com.google.android.gms/play-services-cast/CastingCall.sln",

"./samples/com.google.firebase/firebase-invites/FirebaseInvitesQuickstart.sln",
"./samples/com.google.firebase/firebase-messaging/FirebaseMessagingQuickstart.sln",
//"./samples/com.google.firebase/firebase-analytics/FirebaseAnalyticsQuickstart.sln",
"./samples/com.google.firebase/firebase-auth/FirebaseAuthQuickstart.sln",
"./samples/com.google.firebase/firebase-config/FirebaseConfigQuickstart.sln",
"./samples/com.google.firebase/firebase-storage/FirebaseStorageQuickstart.sln",
"./samples/com.google.firebase/firebase-crash/FirebaseCrashReportingQuickstart.sln",
"./samples/com.google.firebase/firebase-appindexing/AppIndexingSample.sln",
"./samples/com.google.firebase/firebase-ads/FirebaseAdmobQuickstart.sln",

// Release mode
// error XAGJS7001: System.NullReferenceException: Object reference not set to an instance of an object.
//"./samples/com.google.android.play/play-services-assetpack/AssetPackSample.sln",
};

DotNetMSBuildSettings settings = null;
Expand Down Expand Up @@ -890,23 +1009,72 @@ Task("allbindingprojectrefs")
{
Action<string,string> generateTargets = (string pattern, string file) => {
var xmlns = (XNamespace)"http://schemas.microsoft.com/developer/msbuild/2003";
var itemGroup = new XElement(xmlns + "ItemGroup");
var itemGroup1 = new XElement(xmlns + "ItemGroup");
var itemGroup2 = new XElement(xmlns + "ItemGroup");
foreach (var nupkg in GetFiles(pattern)) {
var filename = nupkg.GetFilenameWithoutExtension();
var match = Regex.Match(filename.ToString(), @"(.+?)\.(\d+[\.0-9\-a-zA-Z]+)");
itemGroup.Add(new XElement(xmlns + "PackageReference",
new XAttribute("Include", match.Groups[1]),

string nuget_id = match.Groups[1].Value;
/*
ACW errors
*/
if (
nuget_id == "Xamarin.GooglePlayServices.Games"
||
nuget_id == "Xamarin.Protobuf.Lite"
||
nuget_id == "Xamarin.GooglePlayServices.Measurement"
)
{
continue;
}

itemGroup1.Add(new XElement(xmlns + "PackageVersion",
new XAttribute("Include", nuget_id),
new XAttribute("Version", match.Groups[2])));

itemGroup2.Add(new XElement(xmlns + "PackageReference",
new XAttribute("Include", nuget_id)));
}
var xdoc = new XDocument(new XElement(xmlns + "Project", itemGroup));
xdoc.Save(file);
var xdoc1 = new XDocument(new XElement(xmlns + "Project", itemGroup1));
var xdoc2 = new XDocument(new XElement(xmlns + "Project", itemGroup2));

string file1 = file.Replace("./output/", "./output/Directory.").Replace(".targets", ".packages.props");
string file2 = file.Replace("./output/", "./output/Directory.").Replace(".targets", ".packages.targets");
xdoc1.Save(file1);
xdoc2.Save(file2);

};

generateTargets("./output/Xamarin.Firebase.*.nupkg", "./output/FirebasePackages.targets");
generateTargets("./output/Xamarin.GooglePlayServices.*.nupkg", "./output/PlayServicesPackages.targets");
generateTargets("./output/Xamarin.Google.MLKit.*.nupkg", "./output/Google.MLKit.targets");
generateTargets("./output/Xamarin.Google.Android.Play.*.nupkg", "./output/Google.Play.targets");
generateTargets("./output/Xamarin.GooglePlayServices.*.nupkg", "./output/GPS.targets");
generateTargets("./output/Xamarin.Firebase.*.nupkg", "./output/FB.targets");
generateTargets("./output/Xamarin.Google.MLKit.*.nupkg", "./output/MLKit.targets");
generateTargets("./output/Xamarin.Google.Android.Play.*.nupkg", "./output/GooglePlay.targets");
generateTargets("./output/Square.*.nupkg", "./output/Square.targets");
generateTargets("./output/Xamarin.AndroidGlide.*.nupkg", "./output/Glide.targets");
generateTargets("./output/Xamarin.Android.Google.BillingClient.*.nupkg", "./output/BillingClient.targets");
generateTargets("./output/Xamarin.Android.Volley.*.nupkg", "./output/Volley.targets");
generateTargets("./output/Xamarin.AopAlliance.*.nupkg", "./output/AopAlliance.targets");
generateTargets("./output/Xamarin.Brotli.*.nupkg", "./output/Brotli.targets");
generateTargets("./output/Xamarin.Chromium.*.nupkg", "./output/Chromium.targets");
generateTargets("./output/Xamarin.CodeHaus.*.nupkg", "./output/CodeHaus.targets");
generateTargets("./output/Xamarin.Google.Code.FindBugs.*.nupkg", "./output/FindBugs.targets");
generateTargets("./output/Xamarin.Google.Dagger.*.nupkg", "./output/Dagger.targets");
generateTargets("./output/Xamarin.Google.ErrorProne.*.nupkg", "./output/ErrorProne.targets");
generateTargets("./output/Xamarin.Google.FlatBuffers.*.nupkg", "./output/FlatBuffers.targets");
generateTargets("./output/Xamarin.Google.Inject.Guice.*.nupkg", "./output/Inject.Guice.targets");
generateTargets("./output/Xamarin.Google.UserMessagingPlatform.*.nupkg", "./output/UserMessagingPlatform.targets");
generateTargets("./output/Xamarin.Google.ZXing.*.nupkg", "./output/ZXing.targets");
generateTargets("./output/Xamarin.GoogleAndroid.Annotations.*.nupkg", "./output/GoogleAndroid.Annotations.targets");
generateTargets("./output/Xamarin.GoogleAndroid.Libraries.Identity.GoogleId.*.nupkg", "./output/Identity.GoogleId.targets");
generateTargets("./output/Xamarin.Grpc.*.nupkg", "./output/Grpc.targets");
generateTargets("./output/Xamarin.Io.OpenCensus.*.nupkg", "./output/OpenCensus.targets");
generateTargets("./output/Xamarin.Io.PerfMark.*.nupkg", "./output/PerfMark.targets");
generateTargets("./output/Xamarin.JavaX.Inject.*.nupkg", "./output/JavaX.Inject.targets");
generateTargets("./output/Xamarin.OW2.ASM.*.nupkg", "./output/OW2.ASM.targets");
generateTargets("./output/Xamarin.Protobuf.*.nupkg", "./output/Protobuf.targets");
generateTargets("./output/Xamarin.TensorFlow.*.nupkg", "./output/TensorFlow.targets");
});


Expand Down
13 changes: 13 additions & 0 deletions cgmanifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -3560,6 +3560,19 @@
},
"license": "The Apache Software License, Version 2.0"
},
{
"component": {
"type": "maven",
"maven": {
"artifactId": "tensorflow-lite-select-tf-ops",
"groupId": "org.tensorflow",
"version": "2.15.0",
"nuGetId": "Xamarin.TensorFlow.Lite.Select.TF.Ops",
"nuGetVersion": "2.15.0.1"
}
},
"license": "The Apache Software License, Version 2.0"
},
{
"component": {
"type": "maven",
Expand Down
Loading