Skip to content

Commit 232d8da

Browse files
committed
Merge branch 'main' into issue7335
* main: [monodroid] Replace `exit()` with `abort()` in native code (dotnet#7734) Bump to xamarin/Java.Interop/main@8a1ae57 (dotnet#7738) [build] bump `$(AndroidNet7Version)` (dotnet#7737) Bump to xamarin/Java.Interop/main@1366d99 (dotnet#7718) [Xamarin.Android.Build.Tasks] fix AndroidGenerateResourceDesigner (dotnet#7721) Bump to xamarin/monodroid@50faac94 (dotnet#7725)
2 parents 3b1c93b + c990148 commit 232d8da

23 files changed

+137
-69
lines changed

.external

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
xamarin/monodroid:main@2b9c9d01820c8df4541157f6b6116852eba73350
1+
xamarin/monodroid:main@50faac94c6a0c27864564829ac83f3988c82f8ef
22
mono/mono:2020-02@6dd9def57ce969ca04a0ecd9ef72c0a8f069112d

Configuration.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
<DebugType Condition=" '$(DebugType)' == '' ">portable</DebugType>
4848
<Deterministic Condition=" '$(Deterministic)' == '' ">True</Deterministic>
4949
<LangVersion Condition=" '$(LangVersion)' == '' ">latest</LangVersion>
50-
<AndroidNet7Version Condition=" '$(AndroidNet7Version)' == '' ">33.0.1</AndroidNet7Version>
50+
<AndroidNet7Version Condition=" '$(AndroidNet7Version)' == '' ">33.0.26</AndroidNet7Version>
5151
<AndroidNet6Version Condition=" '$(AndroidNet6Version)' == '' ">32.0.485</AndroidNet6Version>
5252
</PropertyGroup>
5353
<PropertyGroup Condition=" '$(HostOS)' == '' ">

external/Java.Interop

src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Resource.Designer.targets

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ Copyright (C) 2016 Xamarin. All rights reserved.
9393
</Target>
9494

9595
<Target Name="_GenerateResourceDesignerIntermediateClass"
96-
Condition=" '$(AndroidUseDesignerAssembly)' == 'True' "
96+
Condition=" '$(AndroidUseDesignerAssembly)' == 'True' And '$(AndroidGenerateResourceDesigner)' == 'true' "
9797
Inputs="$(MSBuildProjectFullPath)"
9898
Outputs="$(_GenerateResourceDesignerClassFile)"
9999
>
@@ -166,11 +166,11 @@ Copyright (C) 2016 Xamarin. All rights reserved.
166166
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
167167
</ReferencePath>
168168
<Compile Remove="$(_AndroidResourceDesignerFile)" />
169-
<Compile Include="$(_GenerateResourceDesignerClassFile)" Condition=" '$(Language)' != 'F#' "/>
169+
<Compile Include="$(_GenerateResourceDesignerClassFile)" Condition=" '$(Language)' != 'F#' And '$(AndroidGenerateResourceDesigner)' == 'true' "/>
170170
<!-- For F# we need to use the CompileBefore ItemGroup so that our type is processed
171171
before all the other types in the build. Otherwise we get weird compiler errors.
172172
-->
173-
<CompileBefore Include="$(_GenerateResourceDesignerClassFile)" Condition=" '$(Language)' == 'F#' "/>
173+
<CompileBefore Include="$(_GenerateResourceDesignerClassFile)" Condition=" '$(Language)' == 'F#' And '$(AndroidGenerateResourceDesigner)' == 'true' "/>
174174
</ItemGroup>
175175
</Target>
176176

src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.DefaultProperties.targets

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
<AndroidEnableSGenConcurrent Condition=" '$(AndroidEnableSGenConcurrent)' == '' ">true</AndroidEnableSGenConcurrent>
1111
<AndroidHttpClientHandlerType Condition=" '$(AndroidHttpClientHandlerType)' == '' and '$(UsingAndroidNETSdk)' == 'true' ">Xamarin.Android.Net.AndroidMessageHandler</AndroidHttpClientHandlerType>
1212
<AndroidHttpClientHandlerType Condition=" '$(AndroidHttpClientHandlerType)' == '' and '$(UsingAndroidNETSdk)' != 'true' ">Xamarin.Android.Net.AndroidClientHandler</AndroidHttpClientHandlerType>
13-
<AndroidUseDesignerAssembly Condition=" '$(AndroidUseDesignerAssembly)' == '' ">true</AndroidUseDesignerAssembly>
14-
<AndroidGenerateResourceDesigner Condition=" '$(AndroidUseDesignerAssembly)' == 'True' ">false</AndroidGenerateResourceDesigner>
1513
<AndroidGenerateResourceDesigner Condition=" '$(AndroidGenerateResourceDesigner)' == '' ">true</AndroidGenerateResourceDesigner>
14+
<AndroidUseDesignerAssembly Condition=" '$(AndroidUseDesignerAssembly)' == '' ">true</AndroidUseDesignerAssembly>
15+
<AndroidUseIntermediateDesignerFile Condition=" '$(AndroidUseDesignerAssembly)' == 'True' ">false</AndroidUseIntermediateDesignerFile>
1616
<AndroidUseIntermediateDesignerFile Condition=" '$(AndroidUseIntermediateDesignerFile)' == '' ">$(AndroidGenerateResourceDesigner)</AndroidUseIntermediateDesignerFile>
1717
<GenerateDependencyFile Condition=" '$(GenerateDependencyFile)' == '' ">false</GenerateDependencyFile>
1818
<CopyLocalLockFileAssemblies Condition=" '$(CopyLocalLockFileAssemblies)' == '' ">false</CopyLocalLockFileAssemblies>

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/XASdkTests.cs

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,54 @@ public void AppWithSingleJar ()
455455
}
456456

457457
[Test]
458-
public void GenerateResourceDesigner_false()
458+
public void GenerateResourceDesigner([Values (false, true)] bool generateResourceDesigner, [Values (false, true)] bool useDesignerAssembly)
459+
{
460+
var path = Path.Combine ("temp", TestName);
461+
var libraryB = new XASdkProject (outputType: "Library") {
462+
ProjectName = "LibraryB",
463+
};
464+
libraryB.Sources.Clear ();
465+
libraryB.Sources.Add (new BuildItem.Source ("Foo.cs") {
466+
TextContent = () => @"namespace LibraryB;
467+
public class Foo {
468+
public static int foo => Resource.Drawable.foo;
469+
}",
470+
});
471+
libraryB.Sources.Add (new AndroidItem.AndroidResource (() => "Resources\\drawable\\foo.png") {
472+
BinaryContent = () => XamarinAndroidCommonProject.icon_binary_mdpi,
473+
});
474+
libraryB.SetProperty ("AndroidUseDesignerAssembly", useDesignerAssembly.ToString ());
475+
var libraryA = new XASdkProject (outputType: "Library") {
476+
ProjectName = "LibraryA",
477+
};
478+
libraryA.Sources.Clear ();
479+
libraryA.Sources.Add (new BuildItem.Source ("FooA.cs") {
480+
TextContent = () => @"namespace LibraryA;
481+
public class FooA {
482+
public int foo => 0;
483+
public int foo2 => LibraryB.Foo.foo;
484+
public int foo3 => LibraryB.Resource.Drawable.foo;
485+
}",
486+
});
487+
libraryA.AddReference (libraryB);
488+
libraryA.SetProperty ("AndroidGenerateResourceDesigner", generateResourceDesigner.ToString ());
489+
if (!useDesignerAssembly)
490+
libraryA.SetProperty ("AndroidUseDesignerAssembly", "False");
491+
var libraryBBuilder = CreateDotNetBuilder (libraryB, Path.Combine (path, libraryB.ProjectName));
492+
Assert.IsTrue (libraryBBuilder.Build (), "Build of LibraryB should succeed.");
493+
var libraryABuilder = CreateDotNetBuilder (libraryA, Path.Combine (path, libraryA.ProjectName));
494+
Assert.IsTrue (libraryABuilder.Build (), "Build of LibraryA should succeed.");
495+
var proj = new XASdkProject () {
496+
ProjectName = "App1",
497+
};
498+
proj.SetProperty ("AndroidUseDesignerAssembly", useDesignerAssembly.ToString ());
499+
proj.AddReference (libraryA);
500+
var dotnet = CreateDotNetBuilder (proj, Path.Combine (path, proj.ProjectName));
501+
Assert.IsTrue (dotnet.Build (), "Build of Proj should succeed.");
502+
}
503+
504+
[Test]
505+
public void GenerateResourceDesigner_false([Values (false, true)] bool useDesignerAssembly)
459506
{
460507
var proj = new XASdkProject (outputType: "Library") {
461508
Sources = {
@@ -466,7 +513,8 @@ public void GenerateResourceDesigner_false()
466513
};
467514
// Turn off Resource.designer.cs and remove usage of it
468515
proj.SetProperty ("AndroidGenerateResourceDesigner", "false");
469-
proj.SetProperty ("AndroidUseDesignerAssembly", "false");
516+
if (!useDesignerAssembly)
517+
proj.SetProperty ("AndroidUseDesignerAssembly", "false");
470518
proj.MainActivity = proj.DefaultMainActivity
471519
.Replace ("Resource.Layout.Main", "0")
472520
.Replace ("Resource.Id.myButton", "0");
@@ -475,11 +523,15 @@ public void GenerateResourceDesigner_false()
475523
Assert.IsTrue (dotnet.Build(target: "CoreCompile", parameters: new string[] { "BuildingInsideVisualStudio=true" }), "Designtime build should succeed.");
476524
var intermediate = Path.Combine (FullProjectDirectory, proj.IntermediateOutputPath);
477525
var resource_designer_cs = Path.Combine (intermediate, "designtime", "Resource.designer.cs");
526+
if (useDesignerAssembly)
527+
resource_designer_cs = Path.Combine (intermediate, "__Microsoft.Android.Resource.Designer.cs");
478528
FileAssert.DoesNotExist (resource_designer_cs);
479529

480530
Assert.IsTrue (dotnet.Build (), "build should succeed");
481531

482-
resource_designer_cs = Path.Combine (intermediate, "Resource.designer.cs");
532+
resource_designer_cs = Path.Combine (intermediate, "Resource.designer.cs");
533+
if (useDesignerAssembly)
534+
resource_designer_cs = Path.Combine (intermediate, "__Microsoft.Android.Resource.Designer.cs");
483535
FileAssert.DoesNotExist (resource_designer_cs);
484536

485537
var assemblyPath = Path.Combine (FullProjectDirectory, proj.OutputPath, $"{proj.ProjectName}.dll");

src/monodroid/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,7 @@ set(XAMARIN_MONODROID_SOURCES
486486
${SOURCES_DIR}/embedded-assemblies.cc
487487
${SOURCES_DIR}/embedded-assemblies-zip.cc
488488
${SOURCES_DIR}/globals.cc
489+
${SOURCES_DIR}/helpers.cc
489490
${SOURCES_DIR}/logger.cc
490491
${SOURCES_DIR}/jni-remapping.cc
491492
${SOURCES_DIR}/monodroid-glue.cc
@@ -564,6 +565,7 @@ set(XAMARIN_DEBUG_APP_HELPER_SOURCES
564565
${SOURCES_DIR}/basic-utilities.cc
565566
${SOURCES_DIR}/cpu-arch-detect.cc
566567
${SOURCES_DIR}/debug-app-helper.cc
568+
${SOURCES_DIR}/helpers.cc
567569
${SOURCES_DIR}/new_delete.cc
568570
${SOURCES_DIR}/shared-constants.cc
569571
)

src/monodroid/jni/cpp-util.hh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
#include "cppcompat.hh"
1919
#include "platform-compat.hh"
20+
#include "helpers.hh"
2021

2122
static inline void
2223
do_abort_unless (const char* fmt, ...)
@@ -32,7 +33,7 @@ do_abort_unless (const char* fmt, ...)
3233
#endif // ndef ANDROID
3334
va_end (ap);
3435

35-
std::abort ();
36+
xamarin::android::Helpers::abort_application ();
3637
}
3738

3839
#define abort_unless(_condition_, _fmt_, ...) \

src/monodroid/jni/cxx-abi/terminate.cc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@
66
#include <cstdlib>
77
#include <android/log.h>
88

9+
#include "helpers.hh"
10+
911
namespace std {
1012
[[noreturn]] void
1113
terminate () noexcept
1214
{
1315
__android_log_write (ANDROID_LOG_FATAL, "monodroid", "std::terminate() called. Aborting.");
14-
abort ();
16+
xamarin::android::Helpers::abort_application ();
1517
}
1618
}

src/monodroid/jni/debug-app-helper.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ Java_mono_android_DebugRuntime_init (JNIEnv *env, [[maybe_unused]] jclass klass,
9191
void *monosgen = dlopen (monosgen_path, RTLD_LAZY | RTLD_GLOBAL);
9292
if (monosgen == nullptr) {
9393
log_fatal (LOG_DEFAULT, "Failed to dlopen Mono runtime from %s: %s", monosgen_path, dlerror ());
94-
exit (FATAL_EXIT_CANNOT_FIND_LIBMONOSGEN);
94+
Helpers::abort_application ();
9595
}
9696
}
9797

@@ -276,7 +276,7 @@ get_libmonosgen_path ()
276276

277277
log_fatal (LOG_DEFAULT, "Do you have a shared runtime build of your app with AndroidManifest.xml android:minSdkVersion < 10 while running on a 64-bit Android 5.0 target? This combination is not supported.");
278278
log_fatal (LOG_DEFAULT, "Please either set android:minSdkVersion >= 10 or use a build without the shared runtime (like default Release configuration).");
279-
exit (FATAL_EXIT_CANNOT_FIND_LIBMONOSGEN);
279+
Helpers::abort_application ();
280280

281281
return libmonoso;
282282
}

0 commit comments

Comments
 (0)