命令行打包 Android APK

  • 注意
  • 安裝軟件包管理器
    • 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章