Skip to content
This repository was archived by the owner on Nov 10, 2023. It is now read-only.

Commit 4ef8e96

Browse files
Sergey Tyurinfacebook-github-bot
Sergey Tyurin
authored andcommitted
Make default CPU ABIs depend on the NDK version
Summary: `armeabi` and MIPS* were removed from NDK 17: https://developer.android.com/ndk/downloads/revision_history This change modifies the logic to not use `arm` by default when building with NDK 17. Reviewed By: bobyangyf fbshipit-source-id: 1cb08d6
1 parent d9d6c6f commit 4ef8e96

31 files changed

+279
-63
lines changed

src/com/facebook/buck/android/AndroidBuckConfig.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import java.nio.file.Path;
3232
import java.nio.file.Paths;
3333
import java.util.Optional;
34-
import java.util.Set;
3534

3635
public class AndroidBuckConfig {
3736

@@ -78,7 +77,7 @@ public Optional<String> getNdkAppPlatform() {
7877
return delegate.getValue("ndk", "app_platform");
7978
}
8079

81-
public Optional<Set<String>> getNdkCpuAbis() {
80+
public Optional<ImmutableSet<String>> getNdkCpuAbis() {
8281
return delegate.getOptionalListWithoutComments("ndk", "cpu_abis").map(ImmutableSet::copyOf);
8382
}
8483

src/com/facebook/buck/android/toolchain/ndk/impl/NdkCxxPlatforms.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,6 @@ public class NdkCxxPlatforms {
8888

8989
public static final NdkCompilerType DEFAULT_COMPILER_TYPE = NdkCompilerType.GCC;
9090
public static final String DEFAULT_TARGET_APP_PLATFORM = "android-16";
91-
public static final ImmutableSet<String> DEFAULT_CPU_ABIS =
92-
ImmutableSet.of("arm", "armv7", "x86");
9391
public static final NdkCxxRuntime DEFAULT_CXX_RUNTIME = NdkCxxRuntime.GNUSTL;
9492

9593
private static final ImmutableMap<Platform, Host> BUILD_PLATFORMS =
@@ -228,10 +226,20 @@ public static ImmutableMap<TargetCpuType, NdkCxxPlatform> getPlatforms(
228226
androidConfig.getNdkCxxRuntime().orElse(NdkCxxPlatforms.DEFAULT_CXX_RUNTIME),
229227
androidConfig.getNdkCxxRuntimeType().orElse(NdkCxxRuntimeType.DYNAMIC),
230228
androidConfig.getNdkAppPlatform().orElse(NdkCxxPlatforms.DEFAULT_TARGET_APP_PLATFORM),
231-
androidConfig.getNdkCpuAbis().orElse(NdkCxxPlatforms.DEFAULT_CPU_ABIS),
229+
androidConfig.getNdkCpuAbis().orElseGet(() -> getDefaultCpuAbis(ndkVersion)),
232230
platform);
233231
}
234232

233+
@VisibleForTesting
234+
static ImmutableSet<String> getDefaultCpuAbis(String ndkVersion) {
235+
int ndkMajorVersion = getNdkMajorVersion(ndkVersion);
236+
if (ndkMajorVersion > 16) {
237+
return ImmutableSet.of("armv7", "x86");
238+
} else {
239+
return ImmutableSet.of("arm", "armv7", "x86");
240+
}
241+
}
242+
235243
@VisibleForTesting
236244
public static ImmutableMap<TargetCpuType, NdkCxxPlatform> getPlatforms(
237245
CxxBuckConfig config,

test/com/facebook/buck/android/AndroidAarIntegrationTest.java

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -226,8 +226,10 @@ public void testCxxLibraryDependent() throws InterruptedException, IOException {
226226
zipInspector.assertFileExists("classes.jar");
227227
zipInspector.assertFileExists("R.txt");
228228
zipInspector.assertFileExists("res/");
229-
zipInspector.assertFileExists("jni/armeabi/libdep.so");
230-
zipInspector.assertFileExists("jni/armeabi/libnative.so");
229+
if (AssumeAndroidPlatform.isArmAvailable()) {
230+
zipInspector.assertFileExists("jni/armeabi/libdep.so");
231+
zipInspector.assertFileExists("jni/armeabi/libnative.so");
232+
}
231233
zipInspector.assertFileExists("jni/armeabi-v7a/libdep.so");
232234
zipInspector.assertFileExists("jni/armeabi-v7a/libnative.so");
233235
zipInspector.assertFileExists("jni/x86/libdep.so");
@@ -254,10 +256,37 @@ public void testNativeLibraryDependent() throws InterruptedException, IOExceptio
254256
zipInspector.assertFileExists("classes.jar");
255257
zipInspector.assertFileExists("R.txt");
256258
zipInspector.assertFileExists("res/");
257-
zipInspector.assertFileExists("assets/lib/armeabi/libfoo.so");
258259
zipInspector.assertFileExists("assets/lib/armeabi-v7a/libfoo.so");
259260
zipInspector.assertFileExists("assets/lib/x86/libfoo.so");
261+
zipInspector.assertFileExists("jni/armeabi-v7a/libbar.so");
262+
zipInspector.assertFileExists("jni/x86/libbar.so");
263+
}
264+
265+
@Test
266+
public void testNativeLibraryDependentWithNDKPrior17() throws IOException {
267+
AssumeAndroidPlatform.assumeNdkIsAvailable();
268+
AssumeAndroidPlatform.assumeArmIsAvailable();
269+
ProjectWorkspace workspace =
270+
TestDataHelper.createProjectWorkspaceForScenario(
271+
this, "android_aar_native_deps/ndk_deps", tmp);
272+
workspace.setKnownBuildRuleTypesFactoryFactory(DefaultKnownBuildRuleTypesFactory::of);
273+
workspace.setUp();
274+
String target = "//:app-16";
275+
workspace.runBuckBuild(target).assertSuccess();
276+
277+
Path aar =
278+
workspace.getPath(
279+
BuildTargets.getGenPath(
280+
filesystem, BuildTargetFactory.newInstance(target), AndroidAar.AAR_FORMAT));
281+
ZipInspector zipInspector = new ZipInspector(aar);
282+
zipInspector.assertFileExists("AndroidManifest.xml");
283+
zipInspector.assertFileExists("classes.jar");
284+
zipInspector.assertFileExists("R.txt");
285+
zipInspector.assertFileExists("res/");
286+
zipInspector.assertFileExists("assets/lib/armeabi/libfoo.so");
260287
zipInspector.assertFileExists("jni/armeabi/libbar.so");
288+
zipInspector.assertFileExists("assets/lib/armeabi-v7a/libfoo.so");
289+
zipInspector.assertFileExists("assets/lib/x86/libfoo.so");
261290
zipInspector.assertFileExists("jni/armeabi-v7a/libbar.so");
262291
zipInspector.assertFileExists("jni/x86/libbar.so");
263292
}

test/com/facebook/buck/android/AndroidBinaryCxxIntegrationTest.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,6 @@ public void testCxxLibraryDep() throws IOException {
9090
workspace.getPath(
9191
BuildTargets.getGenPath(
9292
filesystem, BuildTargetFactory.newInstance(target), "%s.apk")));
93-
zipInspector.assertFileExists("lib/armeabi/libnative_cxx_lib.so");
94-
zipInspector.assertFileExists("lib/armeabi/libgnustl_shared.so");
9593
zipInspector.assertFileExists("lib/armeabi-v7a/libnative_cxx_lib.so");
9694
zipInspector.assertFileExists("lib/armeabi-v7a/libgnustl_shared.so");
9795
zipInspector.assertFileExists("lib/x86/libnative_cxx_lib.so");
@@ -108,8 +106,6 @@ public void testCxxLibraryDepStaticRuntime() throws IOException {
108106
workspace.getPath(
109107
BuildTargets.getGenPath(
110108
filesystem, BuildTargetFactory.newInstance(target), "%s.apk")));
111-
zipInspector.assertFileExists("lib/armeabi/libnative_cxx_lib.so");
112-
zipInspector.assertFileDoesNotExist("lib/armeabi/libgnustl_shared.so");
113109
zipInspector.assertFileExists("lib/armeabi-v7a/libnative_cxx_lib.so");
114110
zipInspector.assertFileDoesNotExist("lib/armeabi-v7a/libgnustl_shared.so");
115111
zipInspector.assertFileExists("lib/x86/libnative_cxx_lib.so");
@@ -126,8 +122,6 @@ public void testCxxLibraryDepModular() throws IOException {
126122
workspace.getPath(
127123
BuildTargets.getGenPath(
128124
filesystem, BuildTargetFactory.newInstance(target), "%s.apk")));
129-
zipInspector.assertFileDoesNotExist("lib/armeabi/libnative_cxx_lib.so");
130-
zipInspector.assertFileExists("lib/armeabi/libgnustl_shared.so");
131125
zipInspector.assertFileDoesNotExist("lib/armeabi-v7a/libnative_cxx_lib.so");
132126
zipInspector.assertFileExists("lib/armeabi-v7a/libgnustl_shared.so");
133127
zipInspector.assertFileDoesNotExist("lib/x86/libnative_cxx_lib.so");
@@ -149,8 +143,6 @@ public void testCxxLibraryDepClang() throws IOException {
149143
workspace.getPath(
150144
BuildTargets.getGenPath(
151145
filesystem, BuildTargetFactory.newInstance(target), "%s.apk")));
152-
zipInspector.assertFileExists("lib/armeabi/libnative_cxx_lib.so");
153-
zipInspector.assertFileExists("lib/armeabi/libc++_shared.so");
154146
zipInspector.assertFileExists("lib/armeabi-v7a/libnative_cxx_lib.so");
155147
zipInspector.assertFileExists("lib/armeabi-v7a/libc++_shared.so");
156148
zipInspector.assertFileExists("lib/x86/libnative_cxx_lib.so");
@@ -167,7 +159,9 @@ public void testCxxLibraryDepWithNoFilters() throws IOException {
167159
workspace.getPath(
168160
BuildTargets.getGenPath(
169161
filesystem, BuildTargetFactory.newInstance(target), "%s.apk")));
170-
zipInspector.assertFileExists("lib/armeabi/libnative_cxx_lib.so");
162+
if (AssumeAndroidPlatform.isArmAvailable()) {
163+
zipInspector.assertFileExists("lib/armeabi/libnative_cxx_lib.so");
164+
}
171165
zipInspector.assertFileExists("lib/armeabi-v7a/libnative_cxx_lib.so");
172166
zipInspector.assertFileExists("lib/x86/libnative_cxx_lib.so");
173167
}
@@ -182,7 +176,6 @@ public void testNoCxxDepsDoesNotIncludeNdkRuntime() throws IOException {
182176
workspace.getPath(
183177
BuildTargets.getGenPath(
184178
filesystem, BuildTargetFactory.newInstance(target), "%s.apk")));
185-
zipInspector.assertFileDoesNotExist("lib/armeabi/libgnustl_shared.so");
186179
zipInspector.assertFileDoesNotExist("lib/armeabi-v7a/libgnustl_shared.so");
187180
zipInspector.assertFileDoesNotExist("lib/x86/libgnustl_shared.so");
188181
}

test/com/facebook/buck/android/AndroidBinaryIntegrationTest.java

Lines changed: 69 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,11 @@ public void testNonExopackageHasSecondary() throws IOException {
109109
zipInspector.assertFileDoesNotExist("classes2.dex");
110110

111111
zipInspector.assertFileExists("classes.dex");
112-
zipInspector.assertFileExists("lib/armeabi/libnative_cxx_lib.so");
112+
if (AssumeAndroidPlatform.isArmAvailable()) {
113+
zipInspector.assertFileExists("lib/armeabi/libnative_cxx_lib.so");
114+
}
115+
zipInspector.assertFileExists("lib/armeabi-v7a/libnative_cxx_lib.so");
116+
zipInspector.assertFileExists("lib/x86/libnative_cxx_lib.so");
113117
}
114118

115119
@Test
@@ -124,7 +128,11 @@ public void testProguardBuild() throws IOException {
124128
zipInspector.assertFileDoesNotExist("classes2.dex");
125129

126130
zipInspector.assertFileExists("classes.dex");
127-
zipInspector.assertFileExists("lib/armeabi/libnative_cxx_lib.so");
131+
if (AssumeAndroidPlatform.isArmAvailable()) {
132+
zipInspector.assertFileExists("lib/armeabi/libnative_cxx_lib.so");
133+
}
134+
zipInspector.assertFileExists("lib/armeabi-v7a/libnative_cxx_lib.so");
135+
zipInspector.assertFileExists("lib/x86/libnative_cxx_lib.so");
128136
}
129137

130138
@Test
@@ -143,29 +151,56 @@ public void testRawSplitDexHasSecondary() throws IOException {
143151
zipInspector.assertFileExists("classes2.dex");
144152

145153
zipInspector.assertFileExists("classes.dex");
146-
zipInspector.assertFileExists("lib/armeabi/libnative_cxx_lib.so");
154+
if (AssumeAndroidPlatform.isArmAvailable()) {
155+
zipInspector.assertFileExists("lib/armeabi/libnative_cxx_lib.so");
156+
}
157+
zipInspector.assertFileExists("lib/armeabi-v7a/libnative_cxx_lib.so");
158+
zipInspector.assertFileExists("lib/x86/libnative_cxx_lib.so");
159+
}
160+
161+
@Test
162+
public void testDisguisedExecutableIsRenamedWithNDKPrior17() throws IOException {
163+
AssumeAndroidPlatform.assumeArmIsAvailable();
164+
Path output = workspace.buildAndReturnOutput("//apps/sample:app_with_disguised_exe-16");
165+
ZipInspector zipInspector = new ZipInspector(output);
166+
zipInspector.assertFileExists("lib/armeabi/libmybinary.so");
167+
zipInspector.assertFileExists("lib/armeabi-v7a/libmybinary.so");
168+
zipInspector.assertFileExists("lib/x86/libmybinary.so");
147169
}
148170

149171
@Test
150172
public void testDisguisedExecutableIsRenamed() throws IOException {
151173
Path output = workspace.buildAndReturnOutput("//apps/sample:app_with_disguised_exe");
152174
ZipInspector zipInspector = new ZipInspector(output);
153-
zipInspector.assertFileExists("lib/armeabi/libmybinary.so");
175+
zipInspector.assertFileExists("lib/armeabi-v7a/libmybinary.so");
176+
zipInspector.assertFileExists("lib/x86/libmybinary.so");
177+
}
178+
179+
@Test
180+
public void testNdkLibraryIsIncludedWithNdkPrior17() throws IOException {
181+
AssumeAndroidPlatform.assumeArmIsAvailable();
182+
Path output = workspace.buildAndReturnOutput("//apps/sample:app_with_ndk_library-16");
183+
ZipInspector zipInspector = new ZipInspector(output);
184+
zipInspector.assertFileExists("lib/armeabi/libfakenative.so");
185+
zipInspector.assertFileExists("lib/armeabi-v7a/libfakenative.so");
186+
zipInspector.assertFileExists("lib/mips/libfakenative.so");
187+
zipInspector.assertFileExists("lib/x86/libfakenative.so");
154188
}
155189

156190
@Test
157191
public void testNdkLibraryIsIncluded() throws IOException {
158192
Path output = workspace.buildAndReturnOutput("//apps/sample:app_with_ndk_library");
159193
ZipInspector zipInspector = new ZipInspector(output);
160-
zipInspector.assertFileExists("lib/armeabi/libfakenative.so");
194+
zipInspector.assertFileExists("lib/armeabi-v7a/libfakenative.so");
195+
zipInspector.assertFileExists("lib/x86/libfakenative.so");
161196
}
162197

163198
@Test
164199
public void testEditingNdkLibraryForcesRebuild() throws IOException, InterruptedException {
165200
String apkWithNdkLibrary = "//apps/sample:app_with_ndk_library";
166201
Path output = workspace.buildAndReturnOutput(apkWithNdkLibrary);
167202
ZipInspector zipInspector = new ZipInspector(output);
168-
zipInspector.assertFileExists("lib/armeabi/libfakenative.so");
203+
zipInspector.assertFileExists("lib/armeabi-v7a/libfakenative.so");
169204

170205
// Sleep 1 second (plus another half to be super duper safe) to make sure that
171206
// fakesystem.c gets a later timestamp than the fakesystem.o that was produced
@@ -472,6 +507,34 @@ public void testApkEmptyResDirectoriesBuildsCorrectly() throws IOException {
472507
workspace.runBuckBuild("//apps/sample:app_with_aar_and_no_res").assertSuccess();
473508
}
474509

510+
@Test
511+
public void testNativeLibGeneratedProguardConfigIsUsedByProguardWithNdkPrior17()
512+
throws IOException {
513+
AssumeAndroidPlatform.assumeArmIsAvailable();
514+
String target = "//apps/sample:app_with_native_lib_proguard-16";
515+
workspace.runBuckBuild(target).assertSuccess();
516+
517+
Path generatedConfig =
518+
workspace.getPath(
519+
BuildTargets.getGenPath(
520+
filesystem,
521+
BuildTargetFactory.newInstance(target)
522+
.withFlavors(AndroidBinaryGraphEnhancer.NATIVE_LIBRARY_PROGUARD_FLAVOR),
523+
NativeLibraryProguardGenerator.OUTPUT_FORMAT));
524+
525+
Path proguardDir =
526+
workspace.getPath(
527+
BuildTargets.getGenPath(
528+
filesystem, BuildTargetFactory.newInstance(target), "%s/proguard"));
529+
530+
Path proguardCommandLine = proguardDir.resolve("command-line.txt");
531+
// Check that the proguard command line references the native lib proguard config.
532+
assertTrue(workspace.getFileContents(proguardCommandLine).contains(generatedConfig.toString()));
533+
assertEquals(
534+
workspace.getFileContents("native/proguard_gen/expected-16.pro"),
535+
workspace.getFileContents(generatedConfig));
536+
}
537+
475538
@Test
476539
public void testNativeLibGeneratedProguardConfigIsUsedByProguard() throws IOException {
477540
String target = "//apps/sample:app_with_native_lib_proguard";

test/com/facebook/buck/android/AndroidExopackageBinaryIntegrationTest.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public void testDexExopackageHasNoSecondary() throws IOException {
9090
zipInspector.assertFileDoesNotExist("classes2.dex");
9191

9292
zipInspector.assertFileExists("classes.dex");
93-
zipInspector.assertFileExists("lib/armeabi/libnative_cxx_lib.so");
93+
zipInspector.assertFileExists("lib/armeabi-v7a/libnative_cxx_lib.so");
9494

9595
// It would be better if we could call getExopackageInfo on the app rule.
9696
Path secondaryDir =
@@ -130,7 +130,7 @@ public void testNativeExopackageHasNoNativeLibraries() throws IOException {
130130

131131
zipInspector.assertFileExists("classes.dex");
132132

133-
zipInspector.assertFileDoesNotExist("lib/armeabi/libnative_cxx_lib.so");
133+
zipInspector.assertFileDoesNotExist("lib/armeabi-v7a/libnative_cxx_lib.so");
134134
}
135135

136136
@Test
@@ -145,7 +145,7 @@ public void testDexAndNativeExopackageHasNeitherSecondaryNorNativeLibraries() th
145145

146146
zipInspector.assertFileDoesNotExist("assets/secondary-program-dex-jars/metadata.txt");
147147
zipInspector.assertFileDoesNotExist("classes2.dex");
148-
zipInspector.assertFileDoesNotExist("lib/armeabi/libnative_cxx_lib.so");
148+
zipInspector.assertFileDoesNotExist("lib/armeabi-v7a/libnative_cxx_lib.so");
149149

150150
zipInspector.assertFileExists("classes.dex");
151151
}
@@ -226,8 +226,8 @@ public void testEditingNativeForcesRebuild() throws IOException {
226226
workspace.getBuildLog().assertTargetBuiltLocally(DEX_EXOPACKAGE_TARGET);
227227
zipInspector =
228228
new ZipInspector(workspace.getPath("buck-out/gen/apps/multidex/app-dex-exo.apk"));
229-
zipInspector.assertFileExists("lib/armeabi/libnative_cxx_lib.so");
230-
zipInspector.assertFileDoesNotExist("assets/lib/armeabi/libnative_cxx_lib.so");
229+
zipInspector.assertFileExists("lib/armeabi-v7a/libnative_cxx_lib.so");
230+
zipInspector.assertFileDoesNotExist("assets/lib/armeabi-v7a/libnative_cxx_lib.so");
231231

232232
// Now convert it into an asset native library and ensure that we re-run apkbuilder.
233233
workspace.replaceFileContents(
@@ -239,8 +239,8 @@ public void testEditingNativeForcesRebuild() throws IOException {
239239
workspace.getBuildLog().assertTargetBuiltLocally(DEX_EXOPACKAGE_TARGET);
240240
zipInspector =
241241
new ZipInspector(workspace.getPath("buck-out/gen/apps/multidex/app-dex-exo.apk"));
242-
zipInspector.assertFileDoesNotExist("lib/armeabi/libnative_cxx_lib.so");
243-
zipInspector.assertFileExists("assets/lib/armeabi/libnative_cxx_lib.so");
242+
zipInspector.assertFileDoesNotExist("lib/armeabi-v7a/libnative_cxx_lib.so");
243+
zipInspector.assertFileExists("assets/lib/armeabi-v7a/libnative_cxx_lib.so");
244244

245245
// Now edit it again and make sure we re-run apkbuilder.
246246
workspace.replaceFileContents("native/cxx/lib.cpp", "return 4", "return 5");
@@ -254,8 +254,8 @@ public void testEditingNativeForcesRebuild() throws IOException {
254254
workspace.getPath(
255255
BuildTargets.getGenPath(
256256
filesystem, BuildTargetFactory.newInstance(DEX_EXOPACKAGE_TARGET), "%s.apk")));
257-
zipInspector.assertFileDoesNotExist("lib/armeabi/libnative_cxx_lib.so");
258-
zipInspector.assertFileExists("assets/lib/armeabi/libnative_cxx_lib.so");
257+
zipInspector.assertFileDoesNotExist("lib/armeabi-v7a/libnative_cxx_lib.so");
258+
zipInspector.assertFileExists("assets/lib/armeabi-v7a/libnative_cxx_lib.so");
259259
}
260260

261261
@Test

test/com/facebook/buck/android/AndroidFullExopackageBinaryIntegrationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public void testApkHasABunchOfThingsNotIncluded() throws IOException {
6060

6161
zipInspector.assertFileDoesNotExist("assets/secondary-program-dex-jars/metadata.txt");
6262
zipInspector.assertFileDoesNotExist("classes2.dex");
63-
zipInspector.assertFileDoesNotExist("lib/armeabi/libnative_cxx_lib.so");
63+
zipInspector.assertFileDoesNotExist("lib/armeabi-v7a/libnative_cxx_lib.so");
6464
zipInspector.assertFileDoesNotExist("assets/hilarity.txt");
6565

6666
zipInspector.assertFileExists("classes.dex");

test/com/facebook/buck/android/AndroidInstrumentationApkIntegrationTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,10 @@ public void testCxxLibraryDep() throws InterruptedException, IOException {
5454
workspace.getPath(
5555
BuildTargets.getGenPath(
5656
filesystem, BuildTargetFactory.newInstance(target), "%s.apk")));
57-
zipInspector.assertFileExists("lib/armeabi/libcxx.so");
58-
zipInspector.assertFileExists("lib/armeabi/libgnustl_shared.so");
57+
if (AssumeAndroidPlatform.isArmAvailable()) {
58+
zipInspector.assertFileExists("lib/armeabi/libcxx.so");
59+
zipInspector.assertFileExists("lib/armeabi/libgnustl_shared.so");
60+
}
5961
zipInspector.assertFileExists("lib/armeabi-v7a/libcxx.so");
6062
zipInspector.assertFileExists("lib/armeabi-v7a/libgnustl_shared.so");
6163
zipInspector.assertFileExists("lib/x86/libcxx.so");

test/com/facebook/buck/android/AssumeAndroidPlatform.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,22 +46,22 @@ public static void assumeNdkIsAvailable() {
4646
assumeTrue(androidNdk.isPresent());
4747
}
4848

49-
public static void assumeArchIsAvailable(String arch) {
50-
if ("arm".equals(arch)) {
51-
assumeArmIsAvailable();
52-
}
49+
public static void assumeArmIsAvailable() {
50+
assumeTrue(isArmAvailable());
5351
}
5452

55-
public static void assumeArmIsAvailable() {
53+
public static boolean isArmAvailable() {
5654
ProjectFilesystem projectFilesystem =
5755
TestProjectFilesystems.createProjectFilesystem(Paths.get(".").toAbsolutePath());
5856
Optional<AndroidNdk> androidNdk = AndroidNdkHelper.detectAndroidNdk(projectFilesystem);
5957

60-
assumeTrue(androidNdk.isPresent());
58+
if (!androidNdk.isPresent()) {
59+
return false;
60+
}
6161

6262
VersionStringComparator comparator = new VersionStringComparator();
6363

64-
assumeTrue(comparator.compare(androidNdk.get().getNdkVersion(), "17") < 0);
64+
return comparator.compare(androidNdk.get().getNdkVersion(), "17") < 0;
6565
}
6666

6767
public static void assumeUnifiedHeadersAvailable() {

0 commit comments

Comments
 (0)