android多渠道jar包,Android Studio 多渠道打包

在日常开发中我们经常会有多渠道分发的需求,那么如果针对每个渠道都打包一次那简直是不舒服斯基到死,作为以“懒”作为标签的程序员群体,干这种重复性的工作,那感觉简直不要太酸爽,简直让人分分钟切腹。所以我们就会想能不能写个脚本文件,我只干一次打包的活,所有渠道的包都能生成好。很明显是可以的,要不然这不是打作者的脸吗!为了不被打脸——我转载引用一下各位前辈大神的博客(谢谢各位前辈和大神为了不让我被打脸所做出的突出贡献,谢谢!)

62b4aa04bd80

由于项目是游戏的,要在各大手机商店上线,以上命名就是各大手机品牌命名(xiaomi、华为、vivo...之类)

ok,这就一定程度上解决了我们多渠道打包的需求,但是现在我有一个新的需求:针对不同的渠道需要使用不同的包名,加载不同的资源,源码使用差异化的实现。

有得童鞋可能就要说了,你这包名都不一致,还需要加载不同的资源,源码还需要差异化实现,这简直就是不同的App了。那我们就用不同的项目来处理这个需求就好了。但是我们仔细想一想,这种方式只适合于不做迭代升级的“一锤子买卖”,如果需要迭代升级,那酸爽我想应该谁用谁知道。

好吧,有需求我们肯定得想办法去解决,那么今天我就跟大家聊聊,怎么在一个项目中实现Android多渠道打包,而且这些渠道的资源和源码实现上还存在一定差异化(说到这里,可能有些朋友又想到了一个新方案,将共有部分提取出来作为一个SDK而存在,每个渠道都去引用这个SDK ,这可能在一定程度能解决我们存在的问题,但是有点杀鸡用牛刀。我们姑且不谈)。

我们先来看看设置多渠道后的效果:

我们在app的build.gradle文件中加入如下代码:

62b4aa04bd80

gradle.build

1、applicationId:指定包名,这里就可以为不同渠道配置不同包名。可以在AndroidManifest.xml里面使用这个占位符

62b4aa04bd80

AndroidManifest.xml

2、manifestPlaceholders:映射AndroidManifest 也就是清单文件里面的声明的字段,这里CHANNEL_NAME对应下面:

62b4aa04bd80

AndroidManifest.xml

在AndroidManifest.xml声明一个,name为CHANNEL_NAME(name不是固定的,根据自己定义),value这里是一个

占位符,我这里命名为${CHANNEL_NAME},那么对应的manifestPlaceholders也是与清单文件里面声明的要一致。

62b4aa04bd80

gradle.build

value根据自己命名就可以了,如果AndroidManifest.xml里面叫AAA,那么对应的也是AAA

62b4aa04bd80

AndroidManifest.xml

62b4aa04bd80

gradle.build

AndroidManifest.xml里面声明了多个占位符,对应的manifestPlaceholders 看上面oppo渠道就是由APP_KEY这个值。这里就不多阐述了

62b4aa04bd80

这里可能有人问了,每个渠道的SDK都有对应jar包,不知道怎么依赖。继续看

62b4aa04bd80

为什么要这样依赖呢?我们在切换分支时,比如切换到oppo分支,这时你看一下libs目录只加载oppo的一个jar包,其他的jar都没有编译。

也就是说你切换到哪个分支,它才会编译哪个分支下依赖的jar包。

62b4aa04bd80

这样构建之后再看看左下角的Build Variant就会生成各个渠道的debug和release两个版本。这里就是切换分支

62b4aa04bd80

完事收工。

如有疑问QQ交流:928309709。

第一次写多多关照。我这篇文章里没有提及维度,可能下次会写多渠道打包的维度问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Android Studio打包jar文件,可以按照以下步骤操作: 1. 在项目的build.gradle文件中添加以下代码: ``` android { ... } // 添加以下代码 task createJar(type: Copy) { from('build/intermediates/bundles/release/') into('release/') include('classes.jar') rename('classes.jar', 'your_jar_name.jar') } // 添加以下代码 artifacts { archives createJar } ``` 2. 点击菜单栏中的Build -> Make Project,等待编译完成。 3. 在项目根目录下会生成一个release文件夹,里面包含了生成的jar文件。 4. 如果想要修改生成的jar文件名字,可以在build.gradle文件中修改rename('classes.jar', 'your_jar_name.jar')中的your_jar_name为自己想要的名字。 希望对你有帮助! ### 回答2: Android Studio 是一款非常流行的 Android 应用程序开发工具,其内置了许多有用的工具和功能,其中包括打包 JAR 文件的功能。下面是打包 JAR 的详细步骤。 步骤 1:创建 Java Library Module 在 Android Studio 中创建一个新项目或打开现有项目并使用以下步骤创建一个 Java Library Module: 1. 选择 File -> New -> New Module。 2. 在弹出窗口中,选择 Java Library,并单击 Next。 3. 输入模块名称,例如 mylibrary,并单击 Finish。 这将创建一个名为 mylibrary 的新 Java Library Module。 步骤 2:编写 Java 代码 在 mylibrary 模块中编写您的 Java 代码。请确保类和方法公开,以便使用该库时可以从您的应用程序中调用。 步骤 3:配置 Gradle 1. 在 Project 面板中,打开 build.gradle(Module: mylibrary)文件。 2. 将以下代码添加到文件的末尾: ``` task createJar(type: Jar) { from('build/classes/main/') archiveName = "mylibrary.jar" } ``` 此代码指定 Gradle 任务,该任务将创建名为 mylibrary.jar 的 JAR 文件,并将其保存在 build/libs 目录下。 3. 在菜单栏中,选择 Build -> Build Module 'mylibrary'以将项目编译为 JAR 文件。 步骤 4:使用您的 JAR 文件 1. 打开您的 Android 应用程序项目。 2. 将生成的 mylibrary.jar 文件复制到您的应用程序项目的 libs 目录中。 3. 在 Project 面板中,右键单击您的应用程序项目,并选择 Open Module Settings。 4. 在左侧面板中,选择您的应用程序模块。 5. 在右侧面板中,选择 Dependencies 标签。 6. 单击加号图标,然后选择 File dependency。 7. 选择您刚刚复制到 libs 目录的 mylibrary.jar 文件,并单击 OK。 8. 现在,您可以使用您的 JAR 文件中定义的任何类和方法来开发您的 Android 应用程序了。 总结 使用 Android Studio 打包 JAR 文件非常简单,只需要创建一个 Java Library Module、编写您的 Java 代码、配置 Gradle 和使用您的 JAR 文件。遵循上面的步骤,您可以轻松地将自己的库添加到 Android 应用程序中。 ### 回答3: Android Studio 是一个基于 IntelliJ IDEA 的 Android 应用程序开发工具,它提供了一系列的工具,用于方便应用程序的开发、测试和部署。Android Studio 可以打包.jar 文件。 打包.jar 是为了把编写的 Java 代码作为一个独立并可重用的代码库发布并运行在不同的平台上。而jar包具有高的可重用性和可扩展性,会出现在很多项目中。下面介绍如何在 Android Studio打包.jar: 第一步,配置 build.gradle。在 app 目录下,打开 build.gradle 文件,配置以下代码: ``` apply plugin: 'com.android.library' android { compileSdkVersion 26 defaultConfig { minSdkVersion 17 targetSdkVersion 26 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) } task deleteOldJar(type: Delete) { delete 'libs/your_project.jar' } task exportJar(type: Exec) { workingDir "${project.buildDir}/intermediates/classes/release/"//.class 文件所在目录 def jarName = "your_project.jar" // Jar 包名称 commandLine 'jar', 'cvf', "../../../../../libs/'$jarName'", "."//manifest 和 class 所在目录,"."意为当前目录 } exportJar.dependsOn(deleteOldJar, build) ``` 其中, apply plugin: 'com.android.library' 这句话意味着当前工程看做一个 library,而不是一个 application。 dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) } 这句话意味着查找 libs 文件夹中的所有.jar 文件,并引用其中的类。 task deleteOldJar(type: Delete) { delete 'libs/your_project.jar' } 这里的任务名叫做 deleteOldJar,它的作用是在执行 exportJar 任务之前,删除之前的 Jar 包,避免重复。 task exportJar(type: Exec) { workingDir "${project.buildDir}/intermediates/classes/release/" def jarName = "your_project.jar" commandLine 'jar', 'cvf', "../../../../../libs/'$jarName'", "." } 这里的任务名叫做 exportJar,它的作用是在将编译后的.class 文件打包成 Jar 包,具体实现关键在于 commandLine、workingDir 和 jarName。其中: commandLine 表示之后要执行的命令,'jar' 表示要打包成 Jar 包,'cvf' 表示创建新文件、给文件注释、打成压缩包的格式。 workingDir 表示在执行命令之前,切换到的目录。这里是指切换到编译好的.class 文件所在的目录。 jarName 表示要生成的 Jar 文件名称。 第二步,执行任务。这时,在 Android Studio 中,打开 Terminal(快捷键为 Alt + F12),然后执行以下命令: ``` ./gradlew exportJar ``` 运行完成后,在 app 目录下的 libs 文件夹中,就可以看到生成的.jar 文件。 总结一下,以上就是在 Android Studio打包.jar 的全部步骤,如需更多细节请阅读 Configuring Gradle Builds 文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值