Fix/anoncreds w3c ios build#45
Conversation
Signed-off-by: Carine Bertagnolli Bathaglini <cbbathaglini@gmail.com>
Signed-off-by: Carine Bertagnolli Bathaglini <cbbathaglini@gmail.com>
Signed-off-by: Carine Bertagnolli Bathaglini <cbbathaglini@gmail.com>
ccea89b to
4dba536
Compare
|
Looks good. I think we don't need to change README.md to explain this change. @TheTreek Could you review the changes in |
There was a problem hiding this comment.
Won't these changes break the 16kb page requirement for Google play?
There was a problem hiding this comment.
Thank you for the review! That's a valid concern. At the time of your comment (commit 4dba536), the anoncreds build.gradle.kts did not have the RUSTFLAGS for 16KB page size — you were right to call that out.
In the latest commits (f877234 and 10638f9/77acd20), we've addressed this:
- Added the 16KB page size flags to anoncreds's cargo.builds.android block — the same RUSTFLAGS that askar and indy-vdr already had.
- Updated NDK to 28.2.13676358 — matching askar and indy-vdr.
- The remaining changes are just aligning the project structure (unifying duplicate builds blocks, macos block for local dev, version catalog for dependencies) and don't affect Android.
The final result is that anoncreds now has the same Android build configuration as askar and indy-vdr, including the 16KB page size compatibility. No regression was introduced.
Signed-off-by: Carine Bertagnolli Bathaglini <cbbathaglini@gmail.com>
Signed-off-by: Carine Bertagnolli Bathaglini <cbbathaglini@gmail.com>
10638f9 to
77acd20
Compare
This PR updates the Swift bindings generated by UniFFI and adjusts the Swift tests to match the current method names exposed by the generated wrappers.
The main goal is to make the
anoncredsW3C APIs available from Swift/iOS while keeping the PR scope limited to the wrappers and the required build/test adjustments.What Changed
swift/Sources/Anoncreds/anoncreds_uniffi.swiftswift/Sources/Askar/askar_uniffi.swiftswift/Sources/IndyVdr/indy_vdr_uniffi.swiftanoncredsSwift binding to expose the W3C-related types and methods required from Swift/iOS, including:W3cCredentialW3cProcesspool.close()->pool.closePool()session.close()->session.closeSession()store.close()->store.closeStore()Tests
Kotlin/JVM
The Kotlin/JVM tests were executed successfully:
Result:
indyVDRTestThe
indyVDRtest inkotlin/indy-vdr/src/commonTest/kotlin/TestVDR.ktremains disabled because it depends on an external Indy ledger/pool defined by the BCovrin genesis file.When executed locally, it failed with:
This indicates that the external ledger nodes were unavailable or unreachable from the local environment. The failure is related to an external environment dependency, not to the main change in this PR.
Swift
Swift validation was attempted with locally rebuilt XCFrameworks:
./build-swift-framework.sh USE_LOCAL_XCFRAMEWORK=1 swift testThe generated Swift bindings compile against the local XCFrameworks. However, the full Swift test target does not start running because SwiftPM links the three Rust-based XCFrameworks into a single test executable.
Since the current packaging model uses static Rust libraries inside the frameworks, the linker reports duplicated Rust runtime symbols, such as:
This packaging model already exists in the upstream repository, so this PR does not change it in order to keep the scope limited.
Notes
The diff in the Swift files is large because they are generated by UniFFI. The main functional change is making the types and methods required to work with
anoncredsW3C credentials available from Swift/iOS.