• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android studio使用gradle动态构建APP(不同的包,不同的icon、label),androidgradle

Android studio使用gradle动态构建APP(不同的包,不同的icon、label),androidgradle

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了Android studio使用gradle动态构建APP(不同的包,不同的icon、label),androidgradle等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android studio使用gradle动态构建APP(不同的包,不同的icon、label),androidgradle


 

  最近有个需求,需要做两个功能相似的APP,大部分代码是一样的,只是界面不一样,以前要维护两套代码,比较麻烦,最近在网上找资料,发现可以用gradle使用同一套代码构建两个APP。下面介绍使用方法:

 

  首先要构建两个APP需要有两个APP图标、APP名字和AndroidManifest.xml。AndroidManifest放置目录如下:

 

 

gradle构建需要用的配置文件build.gradle。 要使用两个AndroidManifest需要在build.gradle文件中配置sourceSets

 1 sourceSets
 2             {
 3 
 4                 app1
 5                         {
 6                             manifest.srcFile 'src/main/manifest/AndroidManifest1.xml'
 7                         }
 8                 app2
 9                         {
10                             manifest.srcFile "src/main/manifest/AndroidManifest2.xml"
11                         }
12             }

 

同时需要修改AndroidManifest添加xmlns:tools和tools:replace如下:

 1 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     package="com.Example.app1">
 4 
 5 <application
 6         android:allowBackup="true"
 7         android:icon="@drawable/ic_launcher"
 8         android:label="@string/app_name"
 9         android:theme="@style/AppTheme"
10         tools:replace="android:icon,android:label">

android:icon,android:label表示需要使用不同的icon和label。

 

要使用两个不同的包名,需要在build.gradle文件中配置productFlavors

 1  productFlavors{
 2 
 3 
 4 
 5 
 6         app1
 7                 {
 8                     applicationId "com.Example.app1"
 9                     versionCode 37
10                     versionName "2.0.0"
11                     manifestPlaceholders = [APPNAME: "app1"]
12                 }
13         app2
14                 {
15                     applicationId "com.Example.app2"
16                     versionCode 5
17                     versionName "1.0.4"
18                     manifestPlaceholders = [APPNAME: "app2"]
19                 }
20 
21     }

productFlavors中配置了不同的包名和版本信息以及变量APPNAME。APPNAME的值可以用在AndroidManifest中:

<meta-data
        android:name="APPNAME"
        android:value="${APPNAME}" />

完整的build.gradle如下:

 1 apply plugin: 'com.android.application'
 2 
 3 android {
 4 
 5     compileSdkVersion 22
 6     buildToolsVersion '23.0.2'
 7 
 8     defaultConfig {
 9         minSdkVersion 19
10         targetSdkVersion 22
11 
12     }
13     buildTypes {
14         release {
15             minifyEnabled true
16             shrinkResources true
17             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
18         }
19         debug
20                 {
21                     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
22                 }
23     }
24 
25 
26     packagingOptions {
27         exclude 'META-INF/DEPENDENCIES.txt'
28         exclude 'META-INF/LICENSE.txt'
29         exclude 'META-INF/NOTICE.txt'
30         exclude 'META-INF/NOTICE'
31         exclude 'META-INF/LICENSE'
32         exclude 'META-INF/DEPENDENCIES'
33         exclude 'META-INF/notice.txt'
34         exclude 'META-INF/license.txt'
35         exclude 'META-INF/dependencies.txt'
36         exclude 'META-INF/LGPL2.1'
37     }
38     sourceSets
39             {
40 
41                 app1
42                         {
43                             manifest.srcFile 'src/main/manifest/AndroidManifest1.xml'
44                         }
45                 app2
46                         {
47                             manifest.srcFile "src/main/manifest/AndroidManifest2.xml"
48                         }
49             }
50 
51 
52     productFlavors{
53 
54 
55 
56 
57         app1
58                 {
59                     applicationId "com.Example.app1"
60                     versionCode 37
61                     versionName "2.0.0"
62                     manifestPlaceholders = [APPNAME: "app1"]
63                 }
64         app2
65                 {
66                     applicationId "com.Example.app2"
67                     versionCode 5
68                     versionName "1.0.4"
69                     manifestPlaceholders = [APPNAME: "app2"]
70                 }
71 
72     }
73 
74 }
75 
76 allprojects {
77     repositories {
78         maven { url "https://jitpack.io" }
79     }
80 }
81 
82 dependencies {



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android studio使用gradle动态构建APP(不同的包,不同的icon、label),androidgradle

相关文章

  • 2017-05-26Android开发技巧——大图裁剪
  • 2017-05-26Handler消息传递机制(二)Handler,Loop,Message,MessageQueue的工作原理
  • 2017-05-26Android自定义下拉刷新动画--仿百度外卖下拉刷新
  • 2017-05-26Android M以上运行时权限(Google官方出品),androidgoogle
  • 2017-05-26Android之HTTP网络通信--GET传递,android--get
  • 2017-05-26android studio 使用checkstyle全攻略
  • 2017-05-26Android Studio多渠道打包
  • 2017-05-26我的android学习经历11,android学习经历11
  • 2017-05-26Android音频开发之基础知识介绍
  • 2017-07-23WKWebView与js交互之完美解决方案

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android线程操作对象AsyncTask线程机制
    • android测试工具MonkeyRunner--google官网翻译
    • android Listview的自定义界面的使用
    • android全磁盘加密
    • 缓存之 ACache
    • 天兔监控服务器和mysql,redis等监控
    • Android 支持表情功能
    • Android自定义下拉刷新动画--仿百度外卖下拉刷新
    • android自定义圆角背景实现富文本标题展示
    • 关于Linux的core dump

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有