From a94a053fd9aca40a063422b2798ee75db5eac538 Mon Sep 17 00:00:00 2001 From: renjianbo <18691577328@163.com> Date: Tue, 20 Jan 2026 14:15:13 +0800 Subject: [PATCH] appdemo --- ...)项目编译Debug版本和Release版本apk的方法.txt | 155 ++++++++++++++++++ androidExampleDemo/app/build.gradle | 4 +- .../com/example/agentclient/MainActivity.java | 24 ++- androidExampleDemo/build.gradle | 19 +-- androidExampleDemo/gradle/libs.versions.toml | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 3 +- 6 files changed, 186 insertions(+), 21 deletions(-) create mode 100644 androidExampleDemo/(红头)项目编译Debug版本和Release版本apk的方法.txt diff --git a/androidExampleDemo/(红头)项目编译Debug版本和Release版本apk的方法.txt b/androidExampleDemo/(红头)项目编译Debug版本和Release版本apk的方法.txt new file mode 100644 index 0000000..8f47e29 --- /dev/null +++ b/androidExampleDemo/(红头)项目编译Debug版本和Release版本apk的方法.txt @@ -0,0 +1,155 @@ +# Android 项目编译 Debug 和 Release 版本 APK 的方法 + +## 项目信息 +- **项目名称**: com.xunpaisoft.social +- **项目路径**: D:\zhini\android-im +- **JDK 要求**: Java 11 或更高版本 +- **推荐 JDK**: Android Studio 内置 JDK 21 + +## 环境准备 + +### 1. 检查 Java 版本 +```bash +java -version +``` +**注意**: 如果系统只有 Java 8,需要使用 Android Studio 的 JDK 21 + +### 2. 设置环境变量 +```powershell +# 设置 Android Studio JDK 路径 +$env:JAVA_HOME="C:\Program Files\Android\Android Studio1\jbr" + +# 设置 Android SDK 路径 +$env:ANDROID_HOME="C:\Users\$env:USERNAME\AppData\Local\Android\Sdk" +``` + +## 编译方法 + +### 方法一:使用 Gradle Wrapper(推荐) + +#### 1. Debug 版本编译 +```bash +# 设置环境变量并编译 Debug 版本 +$env:JAVA_HOME="C:\Program Files\Android\Android Studio1\jbr"; $env:ANDROID_HOME="C:\Users\$env:USERNAME\AppData\Local\Android\Sdk"; .\gradlew.bat assembleDebug +``` + +**编译结果**: +- ✅ 编译状态: BUILD SUCCESSFUL +- ⏱️ 编译时间: 约 34 秒 +- 📁 APK 位置: `app\build\outputs\apk\debug\app-debug.apk` + +#### 2. Release 版本编译 +```bash +# 设置环境变量并编译 Release 版本 +$env:JAVA_HOME="C:\Program Files\Android\Android Studio1\jbr"; $env:ANDROID_HOME="C:\Users\$env:USERNAME\AppData\Local\Android\Sdk"; .\gradlew.bat assembleRelease +``` + +**编译结果**: +- ✅ 编译状态: BUILD SUCCESSFUL +- ⏱️ 编译时间: 约 3分48秒 +- 📁 APK 位置: `app\build\outputs\apk\release\app-release.apk` + +### 方法二:使用 Android Studio(最简单) + +1. **打开 Android Studio** +2. **导入项目**: 选择 `D:\zhini\android-im` 目录 +3. **等待 Gradle 同步完成** +4. **编译项目**: + - **Debug 版本**: `Build` → `Build Bundle(s) / APK(s)` → `Build APK(s)` + - **Release 版本**: `Build` → `Generate Signed Bundle / APK` → `APK` + +## 安装 APK 到设备 + +### 安装 Debug 版本 +```bash +adb install -r app\build\outputs\apk\debug\app-debug.apk +``` + +### 安装 Release 版本 +```bash +adb install -r app\build\outputs\apk\release\app-release.apk +``` + +## 版本对比 + +| 特性 | Debug 版本 | Release 版本 | +|------|------------|--------------| +| **编译时间** | 约 34 秒 | 约 3分48秒 | +| **APK 大小** | 较大 | 较小(优化后) | +| **代码混淆** | 否 | 是(ProGuard) | +| **调试信息** | 包含 | 移除 | +| **性能** | 较慢 | 较快 | +| **用途** | 开发测试 | 正式发布 | + +## 常见问题解决 + +### 问题1: Java 版本不兼容 +**错误信息**: `Dependency requires at least JVM runtime version 11. This build uses a Java 8 JVM.` + +**解决方案**: +```bash +# 停止现有 Gradle daemon +.\gradlew.bat --stop + +# 使用 Android Studio JDK 编译 +$env:JAVA_HOME="C:\Program Files\Android\Android Studio1\jbr"; .\gradlew.bat assembleDebug +``` + +### 问题2: Gradle Wrapper 不存在 +**解决方案**: 项目已包含 `gradlew.bat` 文件,如果缺失可以重新创建。 + +### 问题3: 权限重复警告 +**现象**: 编译时出现权限重复警告 +**影响**: 不影响编译,但建议清理重复权限声明 + +## 编译命令总结 + +### 一键编译脚本 +```powershell +# Debug 版本一键编译 +$env:JAVA_HOME="C:\Program Files\Android\Android Studio1\jbr"; $env:ANDROID_HOME="C:\Users\$env:USERNAME\AppData\Local\Android\Sdk"; .\gradlew.bat assembleDebug + +# Release 版本一键编译 +$env:JAVA_HOME="C:\Program Files\Android\Android Studio1\jbr"; $env:ANDROID_HOME="C:\Users\$env:USERNAME\AppData\Local\Android\Sdk"; .\gradlew.bat assembleRelease +``` + +### 清理和重新编译 +```bash +# 清理项目 +.\gradlew.bat clean + +# 重新编译 Debug 版本 +.\gradlew.bat assembleDebug + +# 重新编译 Release 版本 +.\gradlew.bat assembleRelease +``` + +## 注意事项 + +1. **JDK 版本**: 必须使用 Java 11 或更高版本 +2. **环境变量**: 每次编译前需要设置正确的 JAVA_HOME +3. **签名配置**: Release 版本需要配置签名文件 +4. **混淆规则**: Release 版本会应用 ProGuard 混淆规则 +5. **资源优化**: Release 版本会进行资源压缩和优化 + +## 文件位置 + +- **Debug APK**: `app\build\outputs\apk\debug\app-debug.apk` +- **Release APK**: `app\build\outputs\apk\release\app-release.apk` +- **Gradle Wrapper**: `gradlew.bat` +- **构建配置**: `app\build.gradle` + +## 成功标志 + +编译成功后会显示: +``` +BUILD SUCCESSFUL in [时间] +[数量] actionable tasks: [执行数量] executed, [跳过数量] up-to-date +``` + +--- + +**最后更新**: 2025年10月29日 +**适用版本**: Android Gradle Plugin 8.7.3 +**JDK 版本**: Android Studio JDK 21 diff --git a/androidExampleDemo/app/build.gradle b/androidExampleDemo/app/build.gradle index a369e63..5f96f69 100644 --- a/androidExampleDemo/app/build.gradle +++ b/androidExampleDemo/app/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'com.android.application' + alias(libs.plugins.android.application) } android { @@ -8,7 +8,7 @@ android { defaultConfig { applicationId "com.example.agentclient" - minSdk 24 + minSdk 26 targetSdk 34 versionCode 1 versionName "1.0" diff --git a/androidExampleDemo/app/src/main/java/com/example/agentclient/MainActivity.java b/androidExampleDemo/app/src/main/java/com/example/agentclient/MainActivity.java index 483fe94..9033e02 100644 --- a/androidExampleDemo/app/src/main/java/com/example/agentclient/MainActivity.java +++ b/androidExampleDemo/app/src/main/java/com/example/agentclient/MainActivity.java @@ -58,9 +58,11 @@ public class MainActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - initViews(); + // 先初始化 Handler,因为 initViews() 中会使用它 mainHandler = new Handler(Looper.getMainLooper()); + initViews(); + // 启动时自动登录 login(); } @@ -403,6 +405,13 @@ public class MainActivity extends AppCompatActivity { * 更新状态栏 */ private void updateStatus(String status) { + if (mainHandler == null) { + // 如果 Handler 还未初始化,直接在主线程更新 + if (tvStatus != null) { + tvStatus.setText("状态: " + status); + } + return; + } mainHandler.post(() -> { if (tvStatus != null) { tvStatus.setText("状态: " + status); @@ -414,6 +423,19 @@ public class MainActivity extends AppCompatActivity { * 添加消息到消息列表 */ private void addMessage(String sender, String message) { + if (mainHandler == null) { + // 如果 Handler 还未初始化,直接在主线程更新 + if (tvMessages != null) { + String newMessage = String.format("[%s] %s\n\n", sender, message); + tvMessages.append(newMessage); + + // 自动滚动到底部 + if (scrollView != null) { + scrollView.post(() -> scrollView.fullScroll(View.FOCUS_DOWN)); + } + } + return; + } mainHandler.post(() -> { if (tvMessages != null) { String currentText = tvMessages.getText().toString(); diff --git a/androidExampleDemo/build.gradle b/androidExampleDemo/build.gradle index b84d244..836bf3c 100644 --- a/androidExampleDemo/build.gradle +++ b/androidExampleDemo/build.gradle @@ -1,20 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. -buildscript { - repositories { - google() - mavenCentral() - } - dependencies { - classpath 'com.android.tools.build:gradle:8.1.0' - classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0' - } -} - -allprojects { - repositories { - google() - mavenCentral() - } +plugins { + alias(libs.plugins.android.application) apply false + id 'org.jetbrains.kotlin.android' version '1.9.0' apply false } task clean(type: Delete) { diff --git a/androidExampleDemo/gradle/libs.versions.toml b/androidExampleDemo/gradle/libs.versions.toml index f463287..e53f6a9 100644 --- a/androidExampleDemo/gradle/libs.versions.toml +++ b/androidExampleDemo/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -agp = "8.7.2" +agp = "8.7.3" junit = "4.13.2" junitVersion = "1.1.5" espressoCore = "3.5.1" diff --git a/androidExampleDemo/gradle/wrapper/gradle-wrapper.properties b/androidExampleDemo/gradle/wrapper/gradle-wrapper.properties index 42defcc..55d956f 100644 --- a/androidExampleDemo/gradle/wrapper/gradle-wrapper.properties +++ b/androidExampleDemo/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ +#Tue Jan 20 13:02:26 CST 2026 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists