[r8-obfuscation] Enable R8 JNI name obfuscation for CoreCLR - #12632
Draft
simonrozsival wants to merge 13 commits into
Draft
[r8-obfuscation] Enable R8 JNI name obfuscation for CoreCLR#12632simonrozsival wants to merge 13 commits into
simonrozsival wants to merge 13 commits into
Conversation
simonrozsival
force-pushed
the
simonrozsival-coreclr-r8-jni-integration
branch
from
September 1, 2026 19:34
bdfec0a to
7c15701
Compare
simonrozsival
force-pushed
the
simonrozsival-coreclr-r8-jni-integration
branch
from
September 1, 2026 22:33
f51fbae to
f88d2f4
Compare
Member
Author
|
/azp run |
|
Azure Pipelines will not run the associated pipelines, because the pull request was updated after the run command was issued. Review the pull request again and issue a new run command. |
Member
Author
|
/azp run |
|
Azure Pipelines will not run the associated pipelines, because the pull request was updated after the run command was issued. Review the pull request again and issue a new run command. |
Member
Author
|
/azp run |
|
Azure Pipelines will not run the associated pipelines, because the pull request was updated after the run command was issued. Review the pull request again and issue a new run command. |
Member
Author
|
/azp run |
|
Azure Pipelines will not run the associated pipelines, because the pull request was updated after the run command was issued. Review the pull request again and issue a new run command. |
Member
Author
|
/azp run |
|
Azure Pipelines will not run the associated pipelines, because the pull request was updated after the run command was issued. Review the pull request again and issue a new run command. |
simonrozsival
force-pushed
the
simonrozsival-coreclr-r8-jni-integration
branch
from
September 2, 2026 09:05
1cee050 to
65740e9
Compare
simonrozsival
force-pushed
the
simonrozsival-coreclr-r8-jni-integration
branch
from
September 2, 2026 11:23
2f3c599 to
5e41251
Compare
simonrozsival
force-pushed
the
simonrozsival-coreclr-r8-jni-integration
branch
from
September 2, 2026 11:59
5e41251 to
cbc7457
Compare
simonrozsival
force-pushed
the
simonrozsival-coreclr-r8-jni-integration
branch
from
September 2, 2026 12:23
cbc7457 to
61d0a23
Compare
Member
Author
|
/azp run |
|
Azure Pipelines: Successfully started running 1 pipeline(s). |
simonrozsival
force-pushed
the
simonrozsival-coreclr-r8-jni-integration
branch
from
September 2, 2026 15:23
61d0a23 to
ed2522d
Compare
Member
Author
|
/azp run |
|
Azure Pipelines: Successfully started running 1 pipeline(s). |
simonrozsival
force-pushed
the
simonrozsival-coreclr-r8-jni-integration
branch
from
September 2, 2026 21:34
60b031c to
15c4b79
Compare
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Allow seed R8 to rename ACWs, track final R8 generated inputs, and keep validation mappings private when public mapping output is disabled. Use canonical LF expectations for generated reachability manifests. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Build the seed R8 configuration from user and library consumer rules instead of final generated configuration, whose baseline native-method rule pins ACW names. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Generate identity keep rules directly from the merged text manifest so seed R8 does not require resources to be linked early. Keep final AAPT resource rules on their normal late path and cover manifest normalization, provenance, and resource independence.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Assert that an activity alias identity is not treated as a Java class while its target activity remains protected. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Prepare the manifest merger directory before seed manifest rule generation, and keep generated ACW pinning rules out of final JNI-obfuscating R8 passes while retaining final AAPT and mapped reachability rules. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copy the shared trimmable manifest into each inner build before seed manifest merging, and validate final R8 output through its configured public mapping path. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Allow blank records when validating generated reachability manifests, and resolve the final AAPT rules through their explicit configuration provenance instead of filesystem name uniqueness. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Convert manifest-style JNI paths to the native directory separator at the filesystem copy boundary. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
simonrozsival
force-pushed
the
simonrozsival-coreclr-r8-jni-integration
branch
from
September 3, 2026 05:00
15c4b79 to
6a05a22
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related to #12535
Depends on #12631
Layer 5 of 6 in the replacement stack for #12575. This layer adds the shared two-pass R8 seed/final mapping machinery and enables opt-in JNI name obfuscation for trimmed CoreCLR builds. NativeAOT support follows in layer 6.
Testing:
Xamarin.Android.Build.Tasks.csprojand the completeXamarin.Android.Build.Tests.csproj.GenerateProguardConfiguration/R8task tests, including canonical LF manifest output for the Windows failure in build 1577218.NETSDK1147because the unrelatedwasm-toolsworkload is not installed.