7

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.

index9090
  • 71
  • 1
  • 3
  • did you check this link https://stackoverflow.com/questions/42732684/error-dependent-package-with-key-emulator-not-found-while-updating-android-sdk – Yodgorbek Komilov Mar 20 '22 at 08:43
  • Yes, But I'm not using the studio, Also, `./sdkmanager --channel=3 emulator` didn't work – index9090 Mar 20 '22 at 08:44
  • have you installed necessary api level using sdk manager ? – Yodgorbek Komilov Mar 20 '22 at 08:53
  • Yeah, I already installed `platform-tools` & `platforms;android-29` but I can't install the build-tools – index9090 Mar 20 '22 at 08:55
  • 1
    The problem is, I think, the emulator package isn't available for arm64. When I try `sdkmanager --list` and look for emulator, I can't find it. – index9090 Mar 20 '22 at 09:20
  • @index9090 yes, I see the same thing. I would like some confirmation on it. Android command line tools for linux seem to only be available for amd64. However, having said that I was able to install some other packages using sdkmanager. – ykonda Apr 25 '22 at 03:03

3 Answers3

2

(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>...
    
true-mt
  • 347
  • 3
  • 12
0

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.

0

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

Nifemi
  • 11
  • 1
  • 2