Android Studio 生成正式签名apk(app-release.apk)的两种方式

本文介绍两种生成Android应用正式版APK的方法:一是通过Android Studio直接生成;二是利用Gradle脚本自动化签名。前者适合初学者快速发布应用,后者适用于团队协作和持续集成环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

20170824 14:18:14

阅读数:5015

方式一:使用Android Studio生成

1.点击Build->Generate,首次点击可能会提示输入操作系统密码

 

2.弹出如下对话框,因为我们还没有生成过keystore ,所以点击Create new,新建keystore

http://i.imgur.com/fr8hP1u.png

3.填写相关内容

Key store path keystore的存放路径
Alias 是别名,填写APP名称即可,别的名称你记得住的也行

validity 是有效期限。
两种密码结合上一幅图看

填写完成后点击ok
(记得备份,因为以后这个apk的新版本都是用这个keystore了)
http://i.imgur.com/MIDlgJW.png

4.弹出此窗口,自动填充好了这密码和别名,Next

如果点击了Remember passwords 可能需要输入操作系统密码。

http://i.imgur.com/9jSZzXA.png
5.填写路径,选择签名版本,点击Finish

V2Android 7.0出现的更安全更快速的签名方式。
http://i.imgur.com/K3OfSUL.jpg

http://i.imgur.com/DFeZydg.png

点击ShowInExplore,或者自己打开路径,就可以看到app-release.apk

方式二:使用Gradle 生成

1.编辑 根目录文件 gradle.properties

添加如下内容:

KEY_PATH=D:/Android/test1.jks
KEY_PASS=12345678
ALIAS_NAME=test
ALIAS_PASS=12345678

2.编辑 app/build.gradle 读取指定的路径密码

android 闭包中添加signingConfigs闭包:

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {
        applicationId "com.example.test"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
signingConfigs {
    config {
        storeFile file(KEY_PATH)
        storePassword KEY_PASS
        keyAlias ALIAS_NAME
        keyPassword ALIAS_PASS
    }
}

buildTypes release 闭包中添加 signingConfig signingConfigs.config 应用前面的签名配置(ps:signingConfigs闭包必须在buildTypes闭包前)

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
        }
    }

 

3.点击右侧工具栏的Gradle->项目名->:app->Tasks->build

assemble 用于生成测试版和正式版的apk

assembleDebug 用于生成测试版apk

assembleRelease 用于生成正式版apk

http://i.imgur.com/LmJLqyI.png

点击assembleRelease ,这里提示BUILD SUCCESSFUL,说明生成成功
http://i.imgur.com/vs99DJC.png

apk自动生成在app/build/outputs/apk目录

http://i.imgur.com/Ylc2cRh.png

 

<think>问题分析:用户提到在构建Android项目时出现`/aar/app-release.aar`文件不存在的错误。这通常发生在尝试手动获取或编译PaddleOCR的Android库时。以下是系统化的解决方案: ### 可能原因: 1. **未成功编译项目**:Android Studio构建过程可能失败。 2. **输出路径变更**:新版本Android Gradle插件可能改变了默认输出路径。 3. **构建变体未切换**:未选择`release`构建变体。 4. **Gradle配置问题**:模块的`build.gradle`中未正确配置输出。 --- ### 解决方案: #### 1. **确认构建成功** -Android Studio中执行: **Build > Make Project** (确保无错误) - 终端执行: ```bash ./gradlew :app:assembleRelease ``` #### 2. **检查输出路径(新Gradle版本)** 新版本Android Studio(Gradle 7.0+)的输出路径改为: `app/build/outputs/aar/app-release.aar` → 现在可能是: `app/build/outputs/aar/app-release/` 目录下的 `.aar` 文件 **解决方法**: ```bash # 在项目根目录查找 find . -name "*.aar" ``` #### 3. **确保构建变体为Release** -Android Studio底部栏找到 **Build Variants** ![Build Variants位置](https://i.imgur.com/8GkY4dP.png) - 将 `app` 模块的构建变体改为 **release** #### 4. 手动指定输出(Gradle配置) 在 `app/build.gradle` 中添加: ```groovy android { applicationVariants.all { variant -> variant.outputs.all { outputFileName = "paddleocr-release.aar" } } } ``` > 注意:仅适用于旧Gradle插件(4.x以下)。新版本需用以下方式: **Gradle 7.0+ 的正确配置**: ```groovy android { buildTypes { release { // 启用代码优化 minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } // 确保release构建类型被应用 } ``` #### 5. 强制重新生成(终极方案) ```bash # 清理构建缓存 ./gradlew clean ./gradlew :app:assembleRelease --stacktrace ``` 生成的文件路径: `app/build/outputs/aar/app-release.aar`(或类似路径) --- ### 完整构建流程示例: ```bash # 1. 进入项目目录 cd /path/to/PaddleOCR/deploy/android_demo/ # 2. 清理历史构建 ./gradlew clean # 3. 生成release版aar(跳过测试) ./gradlew :app:assembleRelease -x test # 4. 查找aar文件 ls app/build/outputs/aar/app-release.aar # 旧路径 ls app/build/outputs/aar/app-release/ # 新路径 ``` --- ### 若仍不存在怎么办? 1. **检查构建日志**: `./gradlew assembleRelease --stacktrace | grep "error"` 2. **确认模块类型**: `android_demo` 默认是应用模块(APK),如需aar需改为库模块: ```groovy // app/build.gradle apply plugin: 'com.android.library' // 替换 application ``` 3. **升级Gradle版本**: 修改 `gradle-wrapper.properties`: ```properties distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip ``` --- §§相关问题§§: 1. 如何将Android应用模块(APK)改为库模块(AAR)? 2. Gradle 7.0+ 版本中AAR文件的输出路径规则是什么? 3. 解决Android构建错误 `Could not determine the dependencies of task ':app:minifyReleaseWithR8'` 4. 如何为PaddleOCR的Android库启用ProGuard代码混淆?</think>### 问题分析:`/aar/app-release.aar`文件不存在 当 Android 项目构建后找不到 `app-release.aar` 文件时,通常由以下原因导致: 1. 构建未成功完成 2. 构建变体(Build Variant)未设置为 release 3. Gradle 配置问题 4. 新版本 Android Gradle 插件改变了输出路径 --- ### 解决方案: #### 1. **确保构建成功** 在终端执行构建命令: ```bash ./gradlew clean ./gradlew :app:assembleRelease ``` 检查构建日志是否有错误: ``` BUILD SUCCESSFUL in 1m 30s ``` #### 2. **检查构建变体** 在 Android Studio 中: 1. 打开左下角 **Build Variants** 面板 2. 将 `app` 模块的构建变体改为 **release** #### 3. **检查输出路径(Gradle 7.0+)** 新版本 Gradle 的输出路径已更改: ```bash # 新路径(Gradle 7.0+) app/build/outputs/aar/app-release.aar # 旧路径(Gradle 4.x) app/build/outputs/aar/ ``` #### 4. **手动指定输出路径** 在 `app/build.gradle` 中添加配置: ```groovy android { applicationVariants.all { variant -> variant.outputs.all { outputFileName = "paddleocr-release.aar" } } } ``` #### 5. **强制生成 AAR 文件** 在模块级 `build.gradle` 中添加: ```groovy // 添加到 android 块内 buildTypes { release { // 确保开启 minify minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } // 添加到 dependencies 块外 tasks.whenTaskAdded { task -> if (task.name == 'assembleRelease') { task.doLast { copy { from 'build/outputs/aar' into 'aar' // 创建自定义输出目录 include '*.aar' } } } } ``` #### 6. **完整生成流程** ```bash # 清理项目 ./gradlew clean # 生成 Release AAR ./gradlew :app:assembleRelease # 查找文件 (Linux/Mac) find . -name "*.aar" # 查找文件 (Windows) dir /s /b *.aar ``` --- ### 常见错误处理: **错误:`Task 'assembleRelease' not found`** ```gradle // 在模块的 build.gradle 中确保有: android { buildTypes { release { ... } } } ``` **错误:`Could not find :app:release`** ```bash # 确保启用发布构建 ./gradlew assembleRelease ``` --- ### 文件生成位置示意图: ``` 项目根目录 ├── app │ ├── build │ │ └── outputs │ │ └── aar │ │ └── app-release.aar # 目标文件 │ └── build.gradle └── settings.gradle ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值