index9090
index9090

Reputation: 141

Install build tools on arm64 doesn't work

I've been trying to install sdkmanager "build-tools;30.0.2" on an arm64 processor (ampere CPU).

But every time I get this:

Warning: Dependant package with key emulator not found!                         
Warning: Unable to compute a complete list of dependencies.

I'm trying to build an app and I get this error:

Failed to install the following SDK components:
      build-tools;30.0.2 Android SDK Build-Tools 30.0.2

Edit: I think the problem is the package emulator isn't available. I tried downloading it from here but sdkmanager didn't recognize it.

Upvotes: 14

Views: 10470

Answers (3)

Nifemi
Nifemi

Reputation: 21

If you are facing this issue due to arm64 incompatibility, you can try doing exactly what I did.

  1. First you'll need to update your android/build.gradle file
  • Increase the buildToolsVersion to 32 or higher for example
   buildscript {
   ext {
      buildToolsVersion = "33.0.1"
   }
}
  1. If you're using dependencies in your project that explicitly specify build tools version 30, gradle will still attempt to download it and that will cause an error. To prevent that, you can force all dependencies to use the buildToolsVersion of the main project. It might cause some issues, but if you are lucky, there will be none. This is how to implement that
buildscript {
   subprojects { subproject ->
      afterEvaluate{      if((subproject.plugins.hasPlugin("android") || subproject.plugins.hasPlugin("android-library"))) {
                android {
                    compileSdkVersion rootProject.ext.compileSdkVersion
                    buildToolsVersion rootProject.ext.buildToolsVersion
                }
            }
        }
    }
}
  1. The binaries in the build and platform tools that sdkmanager will download are for x86_64 so the gradle build will still fail. To solve this problem, you'll need to either build those tools yourself or download them. After a long search I found these https://github.com/lzhiyong/android-sdk-tools/releases/download/33.0.3/android-sdk-tools-static-aarch64.zip All thanks to https://github.com/lzhiyong for building these tools and making them available. Other releases are here https://github.com/lzhiyong/android-sdk-tools/releases After downloading the tools, you should delete the binaries in your android sdk folder and symlink the paths to the downloaded binaries.

The binaries I symlinked in my case are,

Build Tools

aapt aapt2 aidl apksigner zipalign split-select dexdump

Platform Tools

fastboot adb dmtracedump e2fsdroid etc1tool hprof-conv make_f2fs make_f2fs_casefold mke2fs sload_f2fs sqlite3

Most of them won't be used though, but just to be safe.

  1. Gradle might still download the x86_64 aapt2 version and attempt to use it. To ensure that such doesn't happen, You can add this line to your android/gradle.properties file
android.aapt2FromMavenOverride=/path-to-downloaded-aapt2-binary

Good luck

Upvotes: 1

Tomasz Pupiec
Tomasz Pupiec

Reputation: 1

I was able to install build-tools using sdkmanager on arm64 by copying to the sdk dir emulator from https://chromium.googlesource.com/android_tools/+/refs/heads/main/sdk/emulator/

Unfortunately the installed packages seem to be not compiled for arm64 and are not working.

Upvotes: 0

true-mt
true-mt

Reputation: 347

(Assumption: CMD Line Tools are installed)

SDK manager package "emulator" is missing on ARM

Workaround:

  1. Download emulator from Google for Linux: https://developer.android.com/studio/emulator_archive

  2. Extract it to $ANDROID_SDK_HOME/emulator

  3. You need a license file called "package.xml" which is automatically created when you download it via Android Studio UI SDK Manager, you copy that file to $ANDROID_SDK_HOME/emulator and change all version numbers related to the version you have downloaded:

    ... <revision><major>31</major><minor>1</minor><micro>4</micro></revision>...
    

Upvotes: 2

Related Questions