Skip to content

Commit 4e80f5e

Browse files
committed
build: upgrade the Android NDK version to support 16kb page size
1 parent 024c7ff commit 4e80f5e

File tree

9 files changed

+44
-34
lines changed

9 files changed

+44
-34
lines changed

.github/ISSUE_TEMPLATE/bug_report.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ body:
8888
label: "[Android Only] Android Build Tools and NDK Version"
8989
description: Required if the Target Platform is Android
9090
placeholder: |
91-
Build Tools: 30.0.2
92-
NDK: 21.4.7075529
91+
Build Tools: 35.0.0
92+
NDK: 28.2.13676358
9393
9494
- type: input
9595
id: ios_build_env

.github/ISSUE_TEMPLATE/build-install-issue.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,8 @@ body:
8181
label: "[Android Only] Android Build Tools and NDK Version"
8282
description: Required if the Target Platform is Android
8383
placeholder: |
84-
Build Tools: 30.0.2
85-
NDK: 21.4.7075529
84+
Build Tools: 35.0.0
85+
NDK: 28.2.13676358
8686
8787
- type: input
8888
id: ios_build_env

WORKSPACE

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,22 @@ http_archive(
5757
urls = ["https://github.com/abseil/abseil-cpp/archive//9687a8ea750bfcddf790372093245a1d041b21a3.tar.gz"],
5858
)
5959

60+
http_archive(
61+
name = "rules_android_ndk",
62+
sha256 = "d230a980e0d3a42b85d5fce2cb17ec3ac52b88d2cff5aaf86bae0f05b48adc55",
63+
strip_prefix = "rules_android_ndk-d5c9d46a471e8fcd80e7ec5521b78bb2df48f4e0",
64+
url = "https://github.com/bazelbuild/rules_android_ndk/archive/d5c9d46a471e8fcd80e7ec5521b78bb2df48f4e0.zip",
65+
)
66+
67+
load("@rules_android_ndk//:rules.bzl", "android_ndk_repository")
68+
6069
load("//third_party:android_configure.bzl", "android_configure")
6170

6271
android_configure(name = "local_config_android")
6372

6473
load("@local_config_android//:android_configure.bzl", "android_workspace")
6574

66-
android_workspace()
75+
android_workspace(android_ndk_repository)
6776

6877
http_archive(
6978
name = "build_bazel_rules_apple",
@@ -516,7 +525,7 @@ http_archive(
516525
build_file = "@mediapipe//third_party:opencv_android.BUILD",
517526
strip_prefix = "OpenCV-android-sdk",
518527
type = "zip",
519-
url = "https://github.com/opencv/opencv/releases/download/4.10.0/opencv-4.10.0-android-sdk.zip",
528+
url = "https://github.com/opencv/opencv/releases/download/4.12.0/opencv-4.12.0-android-sdk.zip",
520529
)
521530

522531
# After OpenCV 3.2.0, the pre-compiled opencv2.framework has google protobuf symbols, which will

docker/linux/x86_64/Dockerfile

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
ARG UID=1000
2-
ARG ANDROID_SDK_BUILD_TOOLS_VERSION=30.0.3
3-
ARG ANDROID_SDK_VERSION=30
4-
ARG ANDROID_NDK_VERSION=21.4.7075529
2+
ARG ANDROID_SDK_BUILD_TOOLS_VERSION=35.0.0
3+
ARG ANDROID_SDK_VERSION=36
4+
ARG ANDROID_NDK_VERSION=28.2.13676358
55

66
FROM ubuntu:20.04 AS base
77

@@ -22,7 +22,7 @@ RUN apt-get update && \
2222
mesa-common-dev \
2323
nasm \
2424
npm \
25-
openjdk-11-jdk \
25+
openjdk-17-jdk \
2626
pkg-config \
2727
software-properties-common \
2828
sudo \
@@ -74,10 +74,10 @@ ARG ANDROID_SDK_VERSION
7474
ARG ANDROID_NDK_VERSION
7575

7676
ENV COMMANDLINETOOLS_ZIP=commandlinetools.zip
77-
ENV COMMANDLINETOOLS_SHA256=124f2d5115eee365df6cf3228ffbca6fc3911d16f8025bebd5b1c6e2fcfa7faf
77+
ENV COMMANDLINETOOLS_SHA256=7ec965280a073311c339e571cd5de778b9975026cfcbe79f2b1cdcb1e15317ee
7878

7979

80-
RUN curl -L https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip -o ${COMMANDLINETOOLS_ZIP} && \
80+
RUN curl -L https://dl.google.com/android/repository/commandlinetools-linux-13114758_latest.zip -o ${COMMANDLINETOOLS_ZIP} && \
8181
(test "$(sha256sum ${COMMANDLINETOOLS_ZIP})" = "${COMMANDLINETOOLS_SHA256} ${COMMANDLINETOOLS_ZIP}" || { echo 'Checksum Failed'; exit 1; }) && \
8282
unzip ${COMMANDLINETOOLS_ZIP} -d /opt/android
8383

docker/windows/x86_64/Dockerfile

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
ARG NODE_VERSION=18.17.1
44
ARG PYTHON_VERSION=3.12.8
5-
ARG ANDROID_SDK_VERSION=30
6-
ARG ANDROID_NDK_VERSION=21.4.7075529
5+
ARG ANDROID_SDK_VERSION=36
6+
ARG ANDROID_NDK_VERSION=28.2.13676358
77

88
FROM mcr.microsoft.com/windows/servercore:ltsc2022 as base
99

@@ -80,21 +80,21 @@ FROM builder as android
8080
ARG ANDROID_SDK_VERSION
8181
ARG ANDROID_NDK_VERSION
8282

83-
ENV OPENJDK_ZIP OpenJDK11U-jdk_x64.zip
84-
ENV OPENJDK_SHA256 087d096032efe273d7e754a25c85d8e8cf44738a3e597ad86f55e0971acc3b8e
85-
ENV JAVA_HOME C:\Java\jdk-11.0.13+8
83+
ENV OPENJDK_ZIP OpenJDK17U-jdk_x64.zip
84+
ENV OPENJDK_SHA256 d1b2bb5a074ba33a0cf4e84aa558f7a563b827f999a71c8e47bdb0dd02af6b9c
85+
ENV JAVA_HOME C:\Java\jdk-17.0.9+9
8686

8787
# Install Java
88-
RUN curl -L --retry 4 --connect-timeout 10 https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.13%2B8/OpenJDK11U-jdk_x64_windows_hotspot_11.0.13_8.zip -o C:\TEMP\%OPENJDK_ZIP% && `
88+
RUN curl -L --retry 4 --connect-timeout 10 https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.9%2B9.1/OpenJDK17U-jdk_x64_windows_hotspot_17.0.9_9.zip -o C:\TEMP\%OPENJDK_ZIP% && `
8989
for /F %s in ('sha256sum /c/TEMP/%OPENJDK_ZIP%') do ((test "%s" = "%OPENJDK_SHA256%" || (echo %s 'Checksum Failed' && exit 1))) && `
9090
unzip C:\TEMP\%OPENJDK_ZIP% -d C:\Java && `
9191
del C:\TEMP\%OPENJDK_ZIP%
9292

9393
ENV COMMANDLINETOOLS_ZIP commandlinetools.zip
94-
ENV COMMANDLINETOOLS_SHA256 f9e6f91743bcb1cc6905648ca751bc33975b0dd11b50d691c2085d025514278c
94+
ENV COMMANDLINETOOLS_SHA256 98b565cb657b012dae6794cefc0f66ae1efb4690c699b78a614b4a6a3505b003
9595

9696
# Install Android SDK and NDK
97-
RUN curl -L --retry 4 --connect-timeout 10 https://dl.google.com/android/repository/commandlinetools-win-7583922_latest.zip -o C:\TEMP\%COMMANDLINETOOLS_ZIP% && `
97+
RUN curl -L --retry 4 --connect-timeout 10 https://dl.google.com/android/repository/commandlinetools-win-13114758_latest.zip -o C:\TEMP\%COMMANDLINETOOLS_ZIP% && `
9898
for /F %s in ('sha256sum /c/TEMP/%COMMANDLINETOOLS_ZIP%') do ((test "%s" = "%COMMANDLINETOOLS_SHA256%" || (echo 'Checksum Failed' && exit 1))) && `
9999
unzip C:\TEMP\%COMMANDLINETOOLS_ZIP% -d C:\Android && `
100100
del C:\TEMP\%COMMANDLINETOOLS_ZIP%
@@ -103,7 +103,7 @@ RUN curl -L --retry 4 --connect-timeout 10 https://dl.google.com/android/reposit
103103
RUN powershell -command "for($i=0;$i -lt 30;$i++) { $response += """y`n""" }; $response" | C:\Android\cmdline-tools\bin\sdkmanager --sdk_root=C:\Android --licenses && `
104104
C:\Android\cmdline-tools\bin\sdkmanager --sdk_root=C:\Android --install `
105105
"platforms;android-%ANDROID_SDK_VERSION%" `
106-
"build-tools;30.0.3" `
106+
"build-tools;35.0.0" `
107107
"ndk;%ANDROID_NDK_VERSION%"
108108

109109

@@ -115,7 +115,7 @@ ENV ANDROID_HOME C:\Android
115115
ENV ANDROID_NDK_HOME ${ANDROID_HOME}\ndk\${ANDROID_NDK_VERSION}
116116
ENV PYTHON_INSTALL_PATH=C:\Python
117117
ENV PYTHON_BIN_PATH=${PYTHON_INSTALL_PATH}\python.exe
118-
ENV HERMETIC_PYTHON_VERSION 3.9
118+
ENV HERMETIC_PYTHON_VERSION 3.12
119119

120120
# Install Bazel and NuGet
121121
RUN setx path "C:\bin;%PYTHON_INSTALL_PATH%;%PYTHON_INSTALL_PATH%\Scripts;%PATH%" && `

docs/Build.md

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -292,13 +292,6 @@ When building for Android (Linux/macOS), follow these additional steps:
292292

293293
1. Launch Android Studio, open **SDK Manager > SDK Tools**, and install Android SDK Build Tools and Android NDK
294294

295-
> :bell: Please note the following two points:
296-
>
297-
> - While Bazel automatically uses the latest installed Build Tools, versions 31.0.0 and above do not work properly, so you need to uncheck versions 31.0.0 and above.
298-
> - Since NDK versions r22 and above are not supported, please use NDK version 21.4.7075529 or lower.
299-
>
300-
> ![Android Studio (SDK Tools)](https://user-images.githubusercontent.com/4690128/144735652-21339ab0-5a45-4277-b7ee-39d106b5e1e6.png)
301-
302295
1. Set environment variables
303296

304297
```sh
@@ -307,7 +300,7 @@ When building for Android (Linux/macOS), follow these additional steps:
307300
export ANDROID_HOME=/path/to/SDK
308301

309302
# Set ANDROID_NDK_HOME
310-
# This is typically something like `$ANDROID_HOME/ndk/21.4.7075529`
303+
# This is typically something like `$ANDROID_HOME/ndk/28.2.13676358`
311304
export ANDROID_NDK_HOME=/path/to/NDK
312305
```
313306

mediapipe_api/BUILD

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,12 @@ cc_library(
194194
"//mediapipe_api/gpu:gpu_shared_data_internal",
195195
],
196196
}),
197+
linkopts = select({
198+
"@mediapipe//mediapipe:android_arm64": [
199+
"-Wl,-z,max-page-size=16384",
200+
],
201+
"//conditions:default": [],
202+
}),
197203
alwayslink = True,
198204
)
199205

mediapipe_api/java/com/google/mediapipe/mediapipe_aar.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Macro to generate AAR, including libmediapipe_jni.so
1414

1515
load("@build_bazel_rules_android//android:rules.bzl", "android_binary", "android_library")
1616

17-
def mediapipe_aar(name, package = "com.github.homuler.mediapipe", srcs = [], deps = [], jni_deps = [], assets = [], assets_dir = "", target_sdk_version = 34, min_sdk_version = 21):
17+
def mediapipe_aar(name, package = "com.github.homuler.mediapipe", srcs = [], deps = [], jni_deps = [], assets = [], assets_dir = "", target_sdk_version = 35, min_sdk_version = 21):
1818
"""Generate MediaPipeUnityPlugin AAR.
1919
2020
Args:

third_party/android_configure.bzl

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,10 @@ def _android_autoconf_impl(repository_ctx):
5454
ndk_rule = ""
5555
if ndk_home:
5656
if not ndk_api_level:
57-
ndk_rule = """native.android_ndk_repository(name="androidndk")"""
57+
ndk_rule = """android_ndk_repository(name="androidndk")"""
5858
else:
5959
ndk_rule = """
60-
native.android_ndk_repository(
60+
android_ndk_repository(
6161
name="androidndk",
6262
api_level={},
6363
)
@@ -68,9 +68,11 @@ def _android_autoconf_impl(repository_ctx):
6868

6969
repository_ctx.file("BUILD.bazel", "")
7070
repository_ctx.file("android_configure.bzl", """
71-
def android_workspace():
71+
def android_workspace(android_ndk_repository):
7272
{}
7373
{}
74+
# See https://github.com/bazelbuild/rules_android_ndk/issues/31#issuecomment-1396182185
75+
native.bind(name = "android/crosstool", actual = "@androidndk//:toolchain")
7476
""".format(sdk_rule, ndk_rule))
7577

7678
android_configure = repository_rule(

0 commit comments

Comments
 (0)