Android studio中的target,同一个项目多种应用打包

本文介绍了如何在Android Studio中利用productFlavor特性,实现同一个项目生成不同应用版本的需求,无需修改manifest的packageName或代码,只需通过applicationId属性设置,甚至可以保持同一签名文件,简化多版本打包流程。

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

今天在思考整理应用架构部分的时候,想起几个月前做的一件事,我们项目当时有个需求,对同一个应用,部分修改后进行发布,在iOS中通过Xcode中的target可以非常方便使用。但是Android中,一般来说,包名的确定是通过applicaiton的packagename字段来确认,而由于Android开发中需要使用资源索引,即R.java文件的原因,更改起来非常麻烦,需要修改代码的包名之后,将各个错误的地方进行修改。


但其实我查找了一下,发现在Android studio中,其实有很多非常简单的做法,不需要做很多的事情,就可以做到一套代码来维护两个APK。就是利用productflavor中的applicationId属性,这样既不需要修改manifest的packageName,也不需要修改代码,直接使用这个属性就可以,甚至根据google官方所说,对于同一个公司的应用,非常推荐使用同一个签名文件,这样连签名文件都不需要修改即可。如果产品的productflavor不是很复杂,甚至也可以做到iOS中那样target一样方便,配置好之后,后续发包甚至可以同时构建不同的产品。


1. http://blog.robustastudio.com/mobile-development/android/building-multiple-editions-of-android-app-gradle/ 

2.http://tools.android.com/tech-docs/new-build-system/applicationid-vs-packagename

### 将 Android Studio 项目导出为 JAR 文件 为了将 Android Studio 项目打包成 JAR 文件,可以遵循一系列特定的操作流程来确保生成的 JAR 文件能够被其他应用程序顺利集成。以下是详细的说明: #### 创建一个新的 Android 库模块 首先,在 Android Studio 中创建一个新的工程,并在此基础上建立一个名为 `library` 的模块作为 Android Library 类库[^1]。 ```groovy // build.gradle (Module: library) apply plugin: 'com.android.library' android { compileSdkVersion 30 defaultConfig { minSdkVersion 21 targetSdkVersion 30 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } ``` #### 配置 Gradle 构建脚本以支持 JAR 输出 接着修改项目的构建配置文件 (`build.gradle`) 来指定如何处理编译后的 `.class` 文件并将其封装到最终的 JAR 文件中。对于较新的 Android Studio 版本,应该关注的是 `intermediates/packaged-classes/release/` 目录而不是旧版文档提到的 `bundles` 文件夹[^2]。 ```groovy task makeJar(type: Copy) { from('build/intermediates/packaged-classes/release/') into('build/libs/') include('classes.jar') rename('classes.jar', 'myLibrary.jar') } assembleRelease.finalizedBy(makeJar) ``` 这段代码定义了一个名为 `makeJar` 的任务,用于复制位于 `release` 下的已打包类文件至目标位置,并重命名其为更易识别的名字如 `myLibrary.jar`。最后一步通过设置依赖关系使得每次执行发布版本组装(`assembleRelease`)时自动触发此自定义的任务。 完成上述操作之后,只需运行命令或点击菜单栏中的相应按钮即可启动整个过程,等待片刻直至终端提示成功结束,则可以在指定路径找到所需的 JAR 文件了。 #### 测试与验证 建议在实际应用前先测试所生成的 JAR 是否正常工作。可以通过新建一个小的应用程序尝试引入刚刚制作好的 JAR 并调用其中的方法来进行简单的功能检验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值