Add basic OpenSSL support to Android (#35893)
authorEgor Bogatov <egorbo@gmail.com>
Wed, 6 May 2020 18:13:33 +0000 (21:13 +0300)
committerGitHub <noreply@github.com>
Wed, 6 May 2020 18:13:33 +0000 (20:13 +0200)
commit287a58a2cafbb9d07b2113b7921c89b44c3ca78e
tree9350338a9b89f2aa723335751a4516d2a5739cda
parent21e8298bfdeb833bdcd000ff2cf90a765c05a02a
Add basic OpenSSL support to Android (#35893)

Temp solution to enable `System.Security.Cryptography.Native` for Android while we figure out how to build/consume it properly.

#### Steps to enable:
1) Download and unzip `https://maven.google.com/com/android/ndk/thirdparty/openssl/1.1.1g-alpha-1/openssl-1.1.1g-alpha-1.aar`
2) Set these env variables:
```
export AndroidOpenSslHeaders="/Users/egorbo/prj/openssl-1.1.1g-alpha-1.aar/prefab/modules/ssl/include"
export AndroidOpenSslCryptoLib="/Users/egorbo/prj/openssl-1.1.1g-alpha-1.aar/prefab/modules/crypto/libs/android.x86_64/libcrypto.so"
export AndroidOpenSslLib="/Users/egorbo/prj/openssl-1.1.1g-alpha-1.aar/prefab/modules/ssl/libs/android.x86_64/libssl.so"
```
(make sure you use the right ABI in the paths, e.g. `android.x86_64` for `-arch x64` or `android.arm64-v8a` for `-arch arm64`)

3) build repo normally, e.g.
```
./build.sh -os Android -subset Mono+Libs
```

I am preparing a PR to update the docs and will include these temp hints.
eng/testing/tests.targets
src/libraries/Native/Unix/CMakeLists.txt
src/libraries/Native/Unix/System.Security.Cryptography.Native/CMakeLists.txt
src/libraries/System.Security.Cryptography.Algorithms/src/System.Security.Cryptography.Algorithms.csproj
src/mono/netcore/sample/Android/Program.csproj