- 注意
- 安裝軟件包管理器
- MAC 電腦
- Windows 電腦
- cmd.exe 中安裝
- PowerShell.exe 中安裝
- 安裝 JDK8
- Mac os
- Windows
- 安裝 Gradle
- Mac os
- Windows
- 安裝 Android SDK
- Mac os
- Windows
- 安裝 androd build-tools
- 構建調試 APK
- 構建發佈版本 APK
- 生層私鑰
- 配置Gradle來構建應用
- 不使用 Gradle 配置使用命令行
- 構建未簽名的 apk
- 使用 zipalign 對齊未簽名的 APK
- 通過 apksigner 使用您的私鑰爲 APK 簽名
- 驗證簽名
- 環境變量的配置
- Mac
- Windows
- 查看 APK 簽名命令
注意
版本的不同,安裝目錄也會有所變化。
安裝軟件包管理器
MAC 電腦
Iterm 中安裝 Homebrew:
https://brew.sh/index_zh-cn
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Windows 電腦
安裝 Choco:
https://chocolatey.org/docs/installation#non-administrative-install
cmd.exe 中安裝
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command " [System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
PowerShell.exe 中安裝
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
安裝 JDK8
Mac os
brew tap adoptopenjdk/openjdk
brew cask install adoptopenjdk8
Windows
choco install jdk8
安裝 Gradle
Mac os
brew install gradle
安裝路徑:/usr/local/Cellar/gradle/5.0/bin
Windows
choco install gradle
安裝路徑:C:\ProgramData\chocolatey\lib-bkp\gradle\tools\gradle-6.3\bin
安裝 Android SDK
這裏會提示安裝 jdk,可以跳過安裝jkd。
Mac os
brew cask install android-sdk
安裝路徑:/usr/local/Caskroom/android-sdk
Windows
choco install android-sdk
安裝路徑:C:\Android\android-sdk
安裝 androd build-tools
windows sdkmanager 在路徑 C:\Android\android-sdk\tools\bin
中。
mac sdkmanager 在路徑 /usr/local/Caskroom/android-sdk/4333796/tools
中。
sdkmanager "platforms;android-28"
或指定詳細版本:
sdkmanager "build-tools;29.0.1"
Windows 安裝路徑:C:\Android\android-sdk\build-tools\29.0.1
Mac 安裝路徑: /usr/local/Caskroom/android-sdk/4333796/build-tools/29.0.1
構建調試 APK
在此之前你需要修改 local.properties
文件中的 sdk 路徑。
請打開命令行,然後轉到項目的根目錄:
gradlew assembleDebug
將在 project_name/module_name/build/outputs/apk/ 中創建一個名爲 module_name-debug.apk 的 APK。 該文件已使用調試密鑰進行簽名並使用 zipalign 對齊,因此您可以立即將其安裝到設備上。
構建 APK 並立即在運行的模擬器或連接的設備上安裝:
gradlew installDebug
構建發佈版本 APK
在此之前你需要修改 local.properties
文件中的 sdk 路徑。
生層私鑰
keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias
生成一個名爲 my-release-key.jks 的密鑰庫文件,並將其保存在當前目錄中。
配置Gradle來構建應用
android {
...
defaultConfig { ... }
signingConfigs {
release {
// You need to specify either an absolute path or include the
// keystore file in the same directory as the build.gradle file.
storeFile file("my-release-key.jks")
storePassword "password"
keyAlias "my-alias"
keyPassword "password"
}
}
buildTypes {
release {
signingConfig signingConfigs.release
debuggable false
zipAlignEnabled true
shrinkResources true
minifyEnabled true
...
}
}
}
構建 apk:
gradlew assembleRelease
當您通過調用 Gradle 任務來構建您的應用時,Gradle 會爲您的應用簽名(並運行 zipalign)。
不使用 Gradle 配置使用命令行
下面使用的 zipalign
apksigner
在 build-tools 目錄下。
構建未簽名的 apk
gradlew assembleRelease
使用 zipalign 對齊未簽名的 APK
zipalign -v -p 4 my-app-unsigned.apk my-app-unsigned-aligned.apk
zipalign 可以確保所有未壓縮數據的開頭均相對於文件開頭執行特定的字節對齊,從而減少應用佔用的 RAM 量。
通過 apksigner 使用您的私鑰爲 APK 簽名
apksigner sign --ks my-release-key.jks --out my-app-release.apk my-app-unsigned-aligned.apk
用存儲在單個密鑰庫文件 my-release-key.jks 中的私鑰和證書爲 APK 簽名後,將以 my-app-release.apk 的形式輸出已簽名的 APK。
驗證簽名
apksigner verify my-app-release.apk
環境變量的配置
Mac
在 ~/.bash_profile
(如果使用iterm則是~/.zshrc
)文件中添加:
export ANDROID_HOME=/usr/local/Caskroom/android-sdk
export PATH=$PATH:$ANDROID_HOME/4333796/tools
export PATH=$PATH:$ANDROID_HOME/4333796/build-tools/29.0.1
export GRADLE_HOME=/usr/local/Cellar/gradle
export PATH=$GRADLE_HOME/5.0/bin
Windows
C:\Android\android-sdk\tools\bin
C:\Android\android-sdk\build-tools\29.0.1
C:\ProgramData\chocolatey\lib-bkp\gradle\tools\gradle-6.3\bin
查看 APK 簽名命令
keytool -list -printcert -jarfile app-relase-.apk