Skip to content

Commit 2f740b4

Browse files
[r8-obfuscation] Package runtime JNI audit inputs
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
1 parent b3d3fad commit 2f740b4

2 files changed

Lines changed: 26 additions & 10 deletions

File tree

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,8 @@ public void R8WithoutJniObfuscationRetainsBroadRuntimeKeepRules (bool nativeAot)
234234

235235
IEnumerable<string> GetNativeRuntimeJniTypeNames ()
236236
{
237-
string sourceRoot = GetAssemblyMetadataValue ("XamarinAndroidSourcePath");
238-
string headerPath = Path.Combine (sourceRoot, "src", "native", "common", "include", "shared", "runtime-jni-names.hh");
237+
string auditRoot = Path.Combine (TestContext.CurrentContext.TestDirectory, "RuntimeJniAudit");
238+
string headerPath = Path.Combine (auditRoot, "runtime-jni-names.hh");
239239
string header = File.ReadAllText (headerPath);
240240
string [] names = Regex.Matches (header, @"std::string_view \w+ \{ ""(?<value>[^""]+)"" \};")
241241
.Cast<Match> ()
@@ -245,7 +245,7 @@ IEnumerable<string> GetNativeRuntimeJniTypeNames ()
245245
.Where (name => name.Contains ('/'))
246246
.ToHashSet (StringComparer.Ordinal);
247247

248-
string runtimeJavaPath = Path.Combine (sourceRoot, "src", "java-runtime", "java", "mono", "android", "Runtime.java");
248+
string runtimeJavaPath = Path.Combine (auditRoot, "Runtime.java");
249249
string runtimeJava = File.ReadAllText (runtimeJavaPath);
250250
foreach (string fieldName in names.Where (name => name.StartsWith ("mono_android_", StringComparison.Ordinal) || name.StartsWith ("net_dot_jni_", StringComparison.Ordinal))) {
251251
Match field = Regex.Match (runtimeJava, $@"static java\.lang\.Class {Regex.Escape (fieldName)} = (?<type>[\w.]+)\.class;");
@@ -254,8 +254,8 @@ IEnumerable<string> GetNativeRuntimeJniTypeNames ()
254254
}
255255

256256
foreach (string directory in new [] {
257-
Path.Combine (sourceRoot, "src", "native", "clr"),
258-
Path.Combine (sourceRoot, "src", "native", "nativeaot"),
257+
Path.Combine (auditRoot, "Native", "CoreCLR"),
258+
Path.Combine (auditRoot, "Native", "NativeAOT"),
259259
}) {
260260
foreach (string file in Directory.EnumerateFiles (directory, "*.cc", SearchOption.AllDirectories)) {
261261
string source = File.ReadAllText (file);
@@ -266,7 +266,7 @@ IEnumerable<string> GetNativeRuntimeJniTypeNames ()
266266
}
267267
}
268268

269-
string javaInteropPath = Path.Combine (sourceRoot, "external", "Java.Interop", "src", "Java.Interop", "Java.Interop");
269+
string javaInteropPath = Path.Combine (auditRoot, "Java.Interop");
270270
foreach (string file in Directory.EnumerateFiles (javaInteropPath, "*.cs", SearchOption.TopDirectoryOnly)) {
271271
string source = File.ReadAllText (file);
272272
foreach (Match match in Regex.Matches (source, @"JniTypeName\s*=\s*""(?<name>net/dot/jni/(?:ManagedPeer|internal/JavaProxy(?:Object|Throwable)))""")) {

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Xamarin.Android.Build.Tests.csproj

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,6 @@
3131
<ProjectReference Include="..\..\..\AndroidBuildConfig\AndroidBuildConfig.csproj" />
3232
</ItemGroup>
3333

34-
<ItemGroup>
35-
<AssemblyMetadata Include="XamarinAndroidSourcePath" Value="$(XamarinAndroidSourcePath)" />
36-
</ItemGroup>
37-
3834
<ItemGroup>
3935
<Compile Remove="DebuggingTasksTests.cs" Condition="!Exists('$(MicrosoftAndroidSdkOutDir)Xamarin.Android.Build.Debugging.Tasks.dll')" />
4036
<Compile Remove="Resources\ApacheHttpClient.cs" />
@@ -57,6 +53,26 @@
5753
<Link>..\Expected\CheckPackageManagerAssemblyOrder.java</Link>
5854
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
5955
</Content>
56+
<Content Include="$(XamarinAndroidSourcePath)src\native\common\include\shared\runtime-jni-names.hh">
57+
<Link>RuntimeJniAudit\runtime-jni-names.hh</Link>
58+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
59+
</Content>
60+
<Content Include="$(XamarinAndroidSourcePath)src\java-runtime\java\mono\android\Runtime.java">
61+
<Link>RuntimeJniAudit\Runtime.java</Link>
62+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
63+
</Content>
64+
<Content Include="$(XamarinAndroidSourcePath)src\native\clr\**\*.cc">
65+
<Link>RuntimeJniAudit\Native\CoreCLR\%(RecursiveDir)%(Filename)%(Extension)</Link>
66+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
67+
</Content>
68+
<Content Include="$(XamarinAndroidSourcePath)src\native\nativeaot\**\*.cc">
69+
<Link>RuntimeJniAudit\Native\NativeAOT\%(RecursiveDir)%(Filename)%(Extension)</Link>
70+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
71+
</Content>
72+
<Content Include="$(XamarinAndroidSourcePath)external\Java.Interop\src\Java.Interop\Java.Interop\ManagedPeer.cs;$(XamarinAndroidSourcePath)external\Java.Interop\src\Java.Interop\Java.Interop\JavaProxyObject.cs;$(XamarinAndroidSourcePath)external\Java.Interop\src\Java.Interop\Java.Interop\JavaProxyThrowable.cs">
73+
<Link>RuntimeJniAudit\Java.Interop\%(Filename)%(Extension)</Link>
74+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
75+
</Content>
6076
</ItemGroup>
6177

6278
<ItemGroup>

0 commit comments

Comments
 (0)