-
Notifications
You must be signed in to change notification settings - Fork 564
Description
C# code that uses a Java reserved word as an identifier for the main activity or the base class thereof will cause a Java compiler error.
While the steps below demonstrate how to most easily see the errors, the issue was brought to my attention by a StackOverflow question regarding the Xamarin integration of a protection tool I develop, Dotfuscator. (Note: I am filing this issue on behalf of my employer, PreEmptive Solutions, a Xamarin partner.)
In this case, Dotfuscator's renaming obfuscation changes the (simple) name of the base class of an activity to do. Because Dotfuscator operates on compiled .NET assemblies, this is normally not an issue for non-library projects (do is a reserved word in C#, but not in the .NET intermediate language), but Xamarin.Android appears to be creating Java types to match this renamed .NET type, and do being a reserved word in Java is causing the build errors.
Steps to Reproduce
- Create a new Android project (the attached reproduction uses the
Visual C# -> Android -> Android App (Xamarin) template). - Add a new class,
do(escaped as@doin C#), which has the base classAndroid.Support.V7.App.AppCompatActivity. - Change the base class of
MainActivityto@do. - Build.
Expected Behavior
The build succeeds.
Actual Behavior
The build errors with Java compiler errors, such as the following in the obj\Debug\MonoAndroid81\android\src\md5c30be36ca273ec2d8db66341a5aebd89\MainActivity.java file:
error: <identifier> expected
extends md5c30be36ca273ec2d8db66341a5aebd89.do
error: illegal start of type
implements XamarinAndroidKeywords
error: ';' expected
mono.android.IGCUserPeer
Version Information
Microsoft Visual Studio Professional 2017
Version 15.8.9
VisualStudio.15.Release/15.8.9+28010.2050
Microsoft .NET Framework
Version 4.7.02556
Installed Version: Professional
Visual C++ 2017 00369-60000-00001-AA049
Microsoft Visual C++ 2017
Application Insights Tools for Visual Studio Package 8.13.10627.1
Application Insights Tools for Visual Studio
ASP.NET and Web Tools 2017 15.8.05085.0
ASP.NET and Web Tools 2017
ASP.NET Core Razor Language Services 15.8.31590
Provides languages services for ASP.NET Core Razor.
Azure App Service Tools v3.0.0 15.8.05023.0
Azure App Service Tools v3.0.0
C# Tools 2.9.0-beta8-63208-01
C# components used in the IDE. Depending on your project type and settings, a different version of the compiler may be used.
Common Azure Tools 1.10
Provides common services for use by Azure Mobile Services and Microsoft Azure Tools.
Dotfuscator Community Edition 5.38.0.8617-8d4ef2c1e
PreEmptive Protection - Dotfuscator CE
Extensibility Message Bus 1.1.49 (remotes/origin/d15-8@ee674f3)
Provides common messaging-based MEF services for loosely coupled Visual Studio extension components communication and integration.
JavaScript Language Service 2.0
JavaScript Language Service
JavaScript Project System 2.0
JavaScript Project System
JetBrains ReSharper Ultimate 2017.3.3 Build 111.0.20180302.65130
JetBrains ReSharper Ultimate package for Microsoft Visual Studio. For more information about ReSharper Ultimate, visit http://www.jetbrains.com/resharper. Copyright © 2018 JetBrains, Inc.
Microsoft Continuous Delivery Tools for Visual Studio 0.4
Simplifying the configuration of Azure DevOps pipelines from within the Visual Studio IDE.
Microsoft JVM Debugger 1.0
Provides support for connecting the Visual Studio debugger to JDWP compatible Java Virtual Machines
Microsoft Library Manager 1.0
Install client-side libraries easily to any web project
Microsoft MI-Based Debugger 1.0
Provides support for connecting Visual Studio to MI compatible debuggers
Microsoft Visual C++ Wizards 1.0
Microsoft Visual C++ Wizards
Microsoft Visual Studio Tools for Containers 1.1
Develop, run, validate your ASP.NET Core applications in the target environment. F5 your application directly into a container with debugging, or CTRL + F5 to edit & refresh your app without having to rebuild the container.
Microsoft Visual Studio VC Package 1.0
Microsoft Visual Studio VC Package
MLGen Package Extension 1.0
MLGen Package Visual Studio Extension Detailed Info
Mono Debugging for Visual Studio 4.11.11-pre (8fb558f)
Support for debugging Mono processes with Visual Studio.
NuGet Package Manager 4.6.0
NuGet Package Manager in Visual Studio. For more information about NuGet, visit http://docs.nuget.org/.
Project System Tools 1.0
Tools for working with C#, VisualBasic, and F# projects.
ProjectServicesPackage Extension 1.0
ProjectServicesPackage Visual Studio Extension Detailed Info
ResourcePackage Extension 1.0
ResourcePackage Visual Studio Extension Detailed Info
ResourcePackage Extension 1.0
ResourcePackage Visual Studio Extension Detailed Info
SQL Server Data Tools 15.1.61808.07020
Microsoft SQL Server Data Tools
TypeScript Tools 15.8.20822.2001
TypeScript Tools for Microsoft Visual Studio
Visual Basic Tools 2.9.0-beta8-63208-01
Visual Basic components used in the IDE. Depending on your project type and settings, a different version of the compiler may be used.
Visual F# Tools 10.2 for F# 4.5 15.8.0.0. Commit Hash: 55a3dc3231c95c77f81ee53f7d29152029da7408.
Microsoft Visual F# Tools 10.2 for F# 4.5
Visual Studio Code Debug Adapter Host Package 1.0
Interop layer for hosting Visual Studio Code debug adapters in Visual Studio
Visual Studio Tools for Containers 1.0
Visual Studio Tools for Containers
Visual Studio Tools for Universal Windows Apps 15.0.28010.2046
The Visual Studio Tools for Universal Windows apps allow you to build a single universal app experience that can reach every device running Windows 10: phone, tablet, PC, and more. It includes the Microsoft Windows 10 Software Development Kit.
VisualStudio.Mac 1.0
Mac Extension for Visual Studio
Xamarin 4.11.0.779 (d15-8@ff915e800)
Visual Studio extension to enable development for Xamarin.iOS and Xamarin.Android.
Xamarin Designer 4.15.12 (d7ff6f39c)
Visual Studio extension to enable Xamarin Designer tools in Visual Studio.
Xamarin Templates 1.1.118 (4217ee9)
Templates for building iOS, Android, and Windows apps with Xamarin and Xamarin.Forms.
Xamarin.Android SDK 9.0.0.19 (HEAD/a8a3b0ec7)
Xamarin.Android Reference Assemblies and MSBuild support.
Xamarin.iOS and Xamarin.Mac SDK 12.1.0.15 (cbfb047)
Xamarin.iOS and Xamarin.Mac Reference Assemblies and MSBuild support.
Log File
XamarinAndroidKeywords-buildlog.txt
VS bug #735281