dotnet / android

.NET for Android provides open-source bindings of the Android SDK for use with .NET managed languages such as C#
MIT License
1.93k stars 527 forks source link

Xamarin AIDL CSharpCodeGenerator doesn't support specifying transaction IDs #8735

Open neobenedict opened 8 months ago

neobenedict commented 8 months ago

Android application type

.NET Android (net7.0-android, net8.0-android, etc.)

Affected platform version

VS 2022

Description

AIDL interface generation doesn't support specifying transaction ID

package com.example;

interface IExample
{
    void destroy();
    int Add(int value1, int value2) = 2;
}

Gets an error "invalid character ="

https://github.com/xamarin/xamarin-android/blob/e987ac458536e59a8329a06d5c5d5f4d4ea2c6b6/src/Xamarin.Android.Tools.Aidl/CSharpCodeGenerator.cs#L391 probably relevant

Steps to Reproduce

  1. Create new project with basic .aidl file
  2. Add a basic AIDL interface and specify transaction ID
  3. "Invalid character: =" error

Did you find any workaround?

Manually edit them in the generated file but this is incredibly tedious

Relevant log output

No response

jonathanpeppers commented 8 months ago

Is the "transaction ID" literally the number 2 in the expression:

int Add(int value1, int value2) = 2;

I'm having trouble finding an Android doc that explains what this is for, and how common it might be.

Best doc is:

neobenedict commented 8 months ago

Yes, https://stackoverflow.com/questions/20327910/strange-behavior-when-i-add-new-method-in-aidl-file-in-the-beginning explains it a bit, it's the incremental numbers. You can set them manually to ensure a client/server with different versions of the same aidl can still communicate.