From d80a243878bebcbdd212a057d6b172c5a703e111 Mon Sep 17 00:00:00 2001 From: dichgrem Date: Thu, 20 Nov 2025 14:18:37 +0800 Subject: [PATCH] add:linux_android --- content/linux-3-android-dev.md | 182 +++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 content/linux-3-android-dev.md diff --git a/content/linux-3-android-dev.md b/content/linux-3-android-dev.md new file mode 100644 index 0000000..dab186b --- /dev/null +++ b/content/linux-3-android-dev.md @@ -0,0 +1,182 @@ ++++ +title = "Linux-Android开发环境部署" +date = 2025-11-20 + +[taxonomies] +tags = ["Linux"] ++++ + +前言 本文记录Android命令行开发环境在Linux上的部署,用以替代Android-studio。 + + + +## Ubuntu方案 + +- 首先安装依赖包: + +```bash +sudo apt install openjdk-17-jdk nodejs +``` + +- 安装Command-tools: + +```bash +mkdir -p ~/Android/cmdline-tools/latest +## 下载链接:https://developer.android.com/studio?hl=zh-cn#command-tools +cd ~/Android/cmdline-tools/latest +wget https://dl.google.com/android/repository/commandlinetools-linux-13114758_latest.zip +unzip ./commandlinetools-linux-13114758_latest.zip +``` + +- 使用官方脚本安装Sdkman包管理器: + +```bash +curl -s "https://get.sdkman.io" | bash +source "$HOME/.sdkman/bin/sdkman-init.sh" +``` + +- 随后使用Sdkman下载并安装gradle/kotlin: + +```bash +sdk install gradle +sdk install kotlin +``` + +- 设置环境变量: +```bash +export ANDROID_HOME=$HOME/Android +export PATH=$PATH:$ANDROID_HOME/emulator +export PATH=$PATH:$ANDROID_HOME/platform-tools +export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin +export PATH=$PATH:$ANDROID_HOME/build-tools/34.0.0 +source ~/.bashrc +``` + +- 继续下载一些SDK平台与构建工具: + +```bash +sdkmanager "platforms;android-34" "build-tools;34.0.0" "platform-tools" +sdkmanager "emulator" //虚拟机中调试 +``` + +- 查看版本 + +```bash +(base) dich@uos:~$ sdk version + +SDKMAN! +script: 5.20.0 +native: 0.7.14 (linux x86_64) + +(base) dich@uos:~$ gradle -v + +------------------------------------------------------------ +Gradle 8.10.2 +------------------------------------------------------------ + +Build time: 2024-09-23 21:28:39 UTC +Revision: 415adb9e06a516c44b391edff552fd42139443f7 + +Kotlin: 1.9.24 +Groovy: 3.0.22 +Ant: Apache Ant(TM) version 1.10.14 compiled on August 16 2023 +Launcher JVM: 17.0.16 (Ubuntu 17.0.16+8-Ubuntu-0ubuntu124.04.1) +Daemon JVM: /usr/lib/jvm/java-17-openjdk-amd64 (no JDK specified, using current Java home) +OS: Linux 6.14.0-35-generic amd64 + +(base) dich@uos:~/Git/android-templates$ kotlin -version +Kotlin version 1.6.21-release-334 (JRE 21.0.8+9-Ubuntu-0ubuntu124.04.1) +(base) dich@uos:~/Git/android-templates/template-compose$ kscript -v +Copyright : 2022 Holger Brandl +License : MIT +Version : v4.0.3 +Website : https://github.com/holgerbrandl/kscript +A new version (v4.2.0) of kscript is available. +Kotlin : 2.1.10-release-473 +Java : JRE 17.0.16+8 +``` + +## Key方案 + +构建Release包需要密钥签名验证,可以使用传统的明文配置或者使用密钥管理器. + +### 相同部分 + +- 生成密钥 +```bash +keytool -genkey -v \ + -keystore ~/.android/jetlagged-release.keystore \ + -alias jetlagged \ + -keyalg RSA \ + -keysize 2048 \ + -validity 10000 +``` + +- 修改app/build.gradle.kts +```bash + signingConfigs { + create("release") { + storeFile = System.getenv("KEYSTORE_FILE")?.let { file(it) } + storePassword = System.getenv("KEYSTORE_PASSWORD") + keyAlias = System.getenv("KEY_ALIAS") + keyPassword = System.getenv("KEY_PASSWORD") + } + } + + buildTypes { + release { + signingConfig = signingConfigs.getByName("release") // 添加这行 + isMinifyEnabled = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } +``` +### 传统方法 + +- 创建配置文件 +```bash +cat > ~/.android-signing-secrets << 'EOF' +export KEYSTORE_FILE="$HOME/.android/jetlagged-release.keystore" +export KEYSTORE_PASSWORD="你的keystore密码" +export KEY_ALIAS="jetlagged" +export KEY_PASSWORD="你的key密码" +EOF + +# 设置权限 +chmod 600 ~/.android-signing-secrets + +# 添加到 gitignore (全局) +echo ".android-signing-secrets" >> ~/.gitignore_global +``` + +- flake配置 + +```bash +# Auto load Key +if [ -f "$HOME/.android-signing-secrets" ]; then + source "$HOME/.android-signing-secrets" + echo "KeyOK" +fi +``` + +### 现代方法 + +- 安装libsecret包 +- keepassxc新建Android群组,添加条目``android_key_password``和``android_keystore_password``; +- 设置密码,和上面生成的相同; +- 在条目的高级-属性中添加``name/android_key_password``和``name/android_keystore_password``; +- 打开设置-保密服务集成,公开Android文件夹 +- flake中写 + +```bash +# Release Key +export KEYSTORE_FILE="$HOME/.android/jetlagged-release.keystore" +export KEY_ALIAS="jetlagged" +export KEYSTORE_PASSWORD="$(secret-tool lookup name android_keystore_password)" +export KEY_PASSWORD="$(secret-tool lookup name android_key_password)" +``` +--- +**Done.** \ No newline at end of file