@@ -6,7 +6,8 @@ import { Option } from "@commander-js/extra-typings";
66import {
77 createAndroidLibsDirectory ,
88 determineAndroidLibsFilename ,
9- AndroidTriplet as Target ,
9+ AndroidTriplet ,
10+ isAndroidTriplet ,
1011} from "react-native-node-api" ;
1112
1213import type { Platform } from "./types.js" ;
@@ -15,6 +16,8 @@ import chalk from "chalk";
1516import { getWeakNodeApiVariables } from "../weak-node-api.js" ;
1617import { toDeclarationArguments } from "../cmake.js" ;
1718
19+ type Target = `${AndroidTriplet } -reactnative`;
20+
1821// This should match https://github.com/react-native-community/template/blob/main/template/android/build.gradle#L7
1922const DEFAULT_NDK_VERSION = "27.1.12297006" ;
2023const DEFAULT_ANDROID_SDK_VERSION = "24" ;
@@ -26,7 +29,7 @@ export const ANDROID_ARCHITECTURES = {
2629 "aarch64-linux-android" : "arm64-v8a" ,
2730 "i686-linux-android" : "x86" ,
2831 "x86_64-linux-android" : "x86_64" ,
29- } satisfies Record < Target , AndroidArchitecture > ;
32+ } satisfies Record < AndroidTriplet , AndroidArchitecture > ;
3033
3134const ndkVersionOption = new Option (
3235 "--ndk-version <version>" ,
@@ -40,20 +43,26 @@ const androidSdkVersionOption = new Option(
4043
4144type AndroidOpts = { ndkVersion : string ; androidSdkVersion : string } ;
4245
46+ function tripletFromTarget ( target : Target ) : AndroidTriplet {
47+ const result = target . replaceAll ( / - r e a c t n a t i v e $ / g, "" ) as AndroidTriplet ;
48+ assert ( isAndroidTriplet ( result ) , `Invalid Android triplet: ${ target } ` ) ;
49+ return result ;
50+ }
51+
4352export const platform : Platform < Target [ ] , AndroidOpts > = {
4453 id : "android" ,
4554 name : "Android" ,
4655 targets : [
47- "aarch64-linux-android" ,
48- "armv7a-linux-androideabi" ,
49- "i686-linux-android" ,
50- "x86_64-linux-android" ,
56+ "aarch64-linux-android-reactnative " ,
57+ "armv7a-linux-androideabi-reactnative " ,
58+ "i686-linux-android-reactnative " ,
59+ "x86_64-linux-android-reactnative " ,
5160 ] ,
5261 defaultTargets ( ) {
5362 if ( process . arch === "arm64" ) {
54- return [ "aarch64-linux-android" ] ;
63+ return [ "aarch64-linux-android-reactnative " ] ;
5564 } else if ( process . arch === "x64" ) {
56- return [ "x86_64-linux-android" ] ;
65+ return [ "x86_64-linux-android-reactnative " ] ;
5766 } else {
5867 return [ ] ;
5968 }
@@ -88,6 +97,8 @@ export const platform: Platform<Target[], AndroidOpts> = {
8897 "build/cmake/android.toolchain.cmake" ,
8998 ) ;
9099
100+ const triplet = tripletFromTarget ( target ) ;
101+
91102 return [
92103 "-G" ,
93104 "Ninja" ,
@@ -100,12 +111,12 @@ export const platform: Platform<Target[], AndroidOpts> = {
100111 // "CMAKE_C_COMPILER_LAUNCHER": "ccache",
101112 // "CMAKE_CXX_COMPILER_LAUNCHER": "ccache",
102113 ANDROID_NDK : ndkPath ,
103- ANDROID_ABI : ANDROID_ARCHITECTURES [ target ] ,
114+ ANDROID_ABI : ANDROID_ARCHITECTURES [ triplet ] ,
104115 ANDROID_TOOLCHAIN : "clang" ,
105116 ANDROID_PLATFORM : androidSdkVersion ,
106117 // TODO: Make this configurable
107118 ANDROID_STL : "c++_shared" ,
108- ...( weakNodeApiLinkage ? getWeakNodeApiVariables ( target ) : { } ) ,
119+ ...( weakNodeApiLinkage ? getWeakNodeApiVariables ( triplet ) : { } ) ,
109120 } ) ,
110121 ] ;
111122 } ,
@@ -137,10 +148,11 @@ export const platform: Platform<Target[], AndroidOpts> = {
137148 )
138149 . map ( ( dirent ) => path . join ( dirent . parentPath , dirent . name ) ) ;
139150 assert . equal ( result . length , 1 , "Expected exactly one library file" ) ;
140- return [ target , result [ 0 ] ] as const ;
151+ const triplet = tripletFromTarget ( target ) ;
152+ return [ triplet , result [ 0 ] ] as const ;
141153 } ) ,
142154 ) ,
143- ) as Record < Target , string > ;
155+ ) as Record < AndroidTriplet , string > ;
144156 const androidLibsFilename = determineAndroidLibsFilename (
145157 Object . values ( libraryPathByTriplet ) ,
146158 ) ;
0 commit comments