* added android triplets * added android support to vcpkg * added export directories to git ignore * fix libraries naming * added vckpg sources to visual studio project files * rename file location * issue with std::string fs:path copy initialization * format path on VStudio * fix checks format cannot work on fs::path * support header only libraries * support using architecture instead of triplets * added prefab support * added debug logs and prefab debug flag * added support for empty packages i.e openssl
5.4 KiB
Exporting to Android Archives (AAR files)
Vcpkg current supports exporting to android archive files(AAR files). Once the archive is created it can imported in Android Studio as a native dependent. The archive is automatically consumed using android studio's prefab tool. For more information on Prefab checkout the following article "Native Dependencies in Android Studio 4.0" and the documentation on how to use prefab on https://google.github.io/prefab/.
To support export to android the following tools should be available;
maven <optional>
ndk <required>
7zip <required on windows>
orzip <required on linux>
Android triplets that support the following architectures arm64-v8a, armeabi-v7a, x86_64 x86 must be present
An example of a triplet configuration targeting android would be
set(VCPKG_TARGET_ARCHITECTURE arm64)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE dynamic)
set(VCPKG_CMAKE_SYSTEM_NAME Android)
The following table outlines the mapping from vcpkg architectures to android architectures
vcpkg architecture | android architecture |
---|---|
arm64 | arm64-v8a |
arm | armeabi-v7a |
x64 | x86_64 |
x86 | x86 |
Please note the four architectures are required. If any is missing the export will fail
To export the following environment ANDROID_NDK_HOME
variable is required for exporting
Example exporting [jsoncpp]
The --prefab-maven
flag is option. Only call it when you have maven installed
./vcpkg export --triplet x64-android jsoncpp --prefab --prefab-maven
The following packages are already built and will be exported:
jsoncpp:x86-android
Exporting package jsoncpp...
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] --- maven-install-plugin:2.4:install-file (default-cli) @ standalone-pom ---
[INFO] Installing<root>/prefab/jsoncpp/jsoncpp-1.9.2.aar to /.m2/repository/com/vcpkg/ndk/support/jsoncpp/1.9.2/jsoncpp-1.9.2.aar
[INFO] Installing <vcpkg_root>/prefab/jsoncpp/pom.xml to /.m2/repository/com/vcpkg/ndk/support/jsoncpp/1.9.2/jsoncpp-1.9.2.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.301 s
[INFO] Finished at: 2020-03-01T10:18:15Z
[INFO] ------------------------------------------------------------------------
In app/build.gradle
com.vcpkg.ndk.support:jsoncpp:1.9.2
And cmake flags
externalNativeBuild {
cmake {
arguments '-DANDROID_STL=c++_shared'
cppFlags "-std=c++17"
}
}
In gradle.properties
android.enablePrefab=true
android.enableParallelJsonGen=false
android.prefabVersion=${prefab.version}
Successfuly exported jsoncpp. Checkout <vcpkg_root>/prefab/jsoncpp/aar
The output directory after export
prefab
└── jsoncpp
├── aar
│ ├── AndroidManifest.xml
│ ├── META-INF
│ │ └── LICENCE
│ └── prefab
│ ├── modules
│ │ └── jsoncpp
│ │ ├── include
│ │ │ └── json
│ │ │ ├── allocator.h
│ │ │ ├── assertions.h
│ │ │ ├── autolink.h
│ │ │ ├── config.h
│ │ │ ├── forwards.h
│ │ │ ├── json.h
│ │ │ ├── json_features.h
│ │ │ ├── reader.h
│ │ │ ├── value.h
│ │ │ ├── version.h
│ │ │ └── writer.h
│ │ ├── libs
│ │ │ ├── android.arm64-v8a
│ │ │ │ ├── abi.json
│ │ │ │ └── libjsoncpp.so
│ │ │ ├── android.armeabi-v7a
│ │ │ │ ├── abi.json
│ │ │ │ └── libjsoncpp.so
│ │ │ ├── android.x86
│ │ │ │ ├── abi.json
│ │ │ │ └── libjsoncpp.so
│ │ │ └── android.x86_64
│ │ │ ├── abi.json
│ │ │ └── libjsoncpp.so
│ │ └── module.json
│ └── prefab.json
├── jsoncpp-1.9.2.aar
└── pom.xml
13 directories, 25 files