This commit is contained in:
renjianbo
2026-01-20 14:15:13 +08:00
parent 60cba7e373
commit a94a053fd9
6 changed files with 186 additions and 21 deletions

View File

@@ -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

View File

@@ -1,5 +1,5 @@
plugins { plugins {
id 'com.android.application' alias(libs.plugins.android.application)
} }
android { android {
@@ -8,7 +8,7 @@ android {
defaultConfig { defaultConfig {
applicationId "com.example.agentclient" applicationId "com.example.agentclient"
minSdk 24 minSdk 26
targetSdk 34 targetSdk 34
versionCode 1 versionCode 1
versionName "1.0" versionName "1.0"

View File

@@ -58,9 +58,11 @@ public class MainActivity extends AppCompatActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); setContentView(R.layout.activity_main);
initViews(); // 先初始化 Handler因为 initViews() 中会使用它
mainHandler = new Handler(Looper.getMainLooper()); mainHandler = new Handler(Looper.getMainLooper());
initViews();
// 启动时自动登录 // 启动时自动登录
login(); login();
} }
@@ -403,6 +405,13 @@ public class MainActivity extends AppCompatActivity {
* 更新状态栏 * 更新状态栏
*/ */
private void updateStatus(String status) { private void updateStatus(String status) {
if (mainHandler == null) {
// 如果 Handler 还未初始化,直接在主线程更新
if (tvStatus != null) {
tvStatus.setText("状态: " + status);
}
return;
}
mainHandler.post(() -> { mainHandler.post(() -> {
if (tvStatus != null) { if (tvStatus != null) {
tvStatus.setText("状态: " + status); tvStatus.setText("状态: " + status);
@@ -414,6 +423,19 @@ public class MainActivity extends AppCompatActivity {
* 添加消息到消息列表 * 添加消息到消息列表
*/ */
private void addMessage(String sender, String message) { 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(() -> { mainHandler.post(() -> {
if (tvMessages != null) { if (tvMessages != null) {
String currentText = tvMessages.getText().toString(); String currentText = tvMessages.getText().toString();

View File

@@ -1,20 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules. // Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript { plugins {
repositories { alias(libs.plugins.android.application) apply false
google() id 'org.jetbrains.kotlin.android' version '1.9.0' apply false
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()
}
} }
task clean(type: Delete) { task clean(type: Delete) {

View File

@@ -1,5 +1,5 @@
[versions] [versions]
agp = "8.7.2" agp = "8.7.3"
junit = "4.13.2" junit = "4.13.2"
junitVersion = "1.1.5" junitVersion = "1.1.5"
espressoCore = "3.5.1" espressoCore = "3.5.1"

View File

@@ -1,6 +1,7 @@
#Tue Jan 20 13:02:26 CST 2026
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists 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 networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists