Issue
Specifications:
- Android Studio Version: Android Bumblebee
- Android Build SDK Build-Tool : 30.0.3
- Android SDK Command-line Tools: 7.0
I am trying to sign apk using apksigner. I am using this command in my Android Studio Terminal
apksigner sign --ks release.jks app.apk
I am following the official documentation but I am getting this error
bash: apksigner: command not found
When I dig further I found that Android/sdk/cmdline-tools/7.0/bin does not have apksigner it has following command line tools
What am I missing here?
I tried downloading cmdline-tools/6.0
and 3.0
but I don't see apksigner there.
Solution
You need to add path variable in bash profile
I have written this answer based on the discussion with Commansware and Pierre on Commansware answer.
Let's discuss these questions to fix the command not found issue on Android Studio.
Where is apksigner?
You can find apksigner at Android/sdk/build-tools/30.0.3
How to use apksigner using terminal?
$ ~/Library/Android/sdk/build-tools/30.0.3/apksigner verify ~/Desktop/app-release.apk
Notice how you have to write that long absolute path of apksigner everytime you have to run an apksigner
command. But you can make it short by setting path variable for apksigner
in your bash profile.
How to set path variable?
Add this in your bash profile
export PATH="$PATH:$HOME/Library/Android/sdk/build-tools/30.0.3"
Now you should be able to run $ apksigner verify ~/Desktop/app-release.apk
anywhere even inside Android Studio terminal.
Still can't run the command on Android Studio?
In my case I was not able run apksigner
command even after setting path variable. So wrote export PATH="$PATH:$HOME/Library/Android/sdk/build-tools/30.0.3"
on Android Studio terminal. And it worked!
Extra discussion
apksigner is part of Android Studio CLI tools. But I found that other Android Studio CLI tools (d8, avdmanager, aapt etc) command work by default except for apksigner. I don't know if it was just me or it happens with others too.
Answered By - Rohit Singh
Answer Checked By - David Goodson (JavaFixing Volunteer)