AndroidStudio Gradle基于友盟的多渠道打包方法

AndroidStudio由于使用了gradle的进行项目构建,使我们开发app方便很多,今天我就给大家列出几点是用gradle的方便之处。

一、AndroidStudio Gradle第三依赖统一管理
二、AndroidStudio Gradle基于友盟的多渠道打包
三、AndroidStudio安全管理签名文件keystroe和签名密码

好久没写博客了,今天写一篇关于多渠道打包的文章。
首先我们要下载友盟的jar包,然后照着文档配置即可。(这里就不过多讲解了,直接看我的代码)
文档地址:http://dev.umeng.com/analytics/android-doc/integration?spm=0.0.0.0.Szgw63

这是我的MainActivity

public class MainActivity extends AppCompatActivity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  // 场景类型设置接口,设置为普通统计场景类型
  MobclickAgent.setScenarioType(this, EScenarioType.E_UM_NORMAL);

  String appkey = "";
  String channal = "";
  try {
   appkey = PackageManagerUitls.getMateDataValue(this, "UMENG_APPKEY");
   channal = PackageManagerUitls.getMateDataValue(this, "UMENG_CHANNEL");
  } catch (PackageManager.NameNotFoundException e) {
   e.printStackTrace();
  }
  MobclickAgent.UMAnalyticsConfig config = new MobclickAgent.UMAnalyticsConfig(this, appkey, channal);

  MobclickAgent.startWithConfigure(config);

 }

 public void onResume() {
  super.onResume();
  MobclickAgent.onResume(this);
 }

 public void onPause() {
  super.onPause();
  MobclickAgent.onPause(this);
 }
}

这里写了一个工具类,获取清单文件的meta-data节点对应的值

/**
 * 作者:lcw 16-9-8
 * 博客:http://blog.csdn.net/lsyz0021/
 */
public class PackageManagerUitls {
 /**
  * 获取 AndroidManifest中application节点下meta-data节点的值
  *
  * @param context
  * @param key
  * @return
  * @throws PackageManager.NameNotFoundException
  */
 public static String getMateDataValue(Context context, String key) throws PackageManager.NameNotFoundException {

  ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);

  String msg = appInfo.metaData.getString(key);
  return msg;
 }

}

这是清单文件的配置

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.hfax.umeng">

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.READ_PHONE_STATE" />

 <application
  android:allowBackup="true"
  android:icon="@mipmap/ic_launcher"
  android:label="@string/app_name"
  android:supportsRtl="true"
  android:theme="@style/AppTheme">

  <meta-data
   android:name="UMENG_APPKEY"
   android:value="57d11e6467e58e9051000d7e" />
  <meta-data
   android:name="UMENG_CHANNEL"
   android:value="${UMENG_CHANNEL_VALUE}" />
  <meta-data
   android:name="BASE_URL"
   android:value="${BASE_URL}" />

  <activity android:name=".MainActivity">
   <intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
  </activity>
 </application>

</manifest>

下面是核心的gredle配置
这里是测环境的配置(可以不配置,不影响多渠道)

渠道配置

打包生成apk

安装测试
首先测试安装包到友盟官网的渠道列表中可以看了。

时间: 2017-08-31

Android Studio使用教程(六):Gradle多渠道打包

由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这再也不是事了. 友盟多渠道打包 废话不多说,以友盟统计为例,在AndroidManifest.xml里面会有这么一段: 复制代码 代码如下: <meta-data     android:name="UMENG_CHANNEL"     android:value="Channel_ID" /&g

为Android Studio编写自定义Gradle插件的教程

Google已经建议Android开发全部转向Android Studio开发,Android Studio 是使用gradle编译.打包的,那么问题来了,gradle可是有一堆东西...,为了彻底了解gradle,今天就来学习下如何写自己的gradle插件(当然插件源码是使用groovy写的),先看如下代码目录: 如上图所示,plugin目录是插件源码目录,sample是用来测试插件的. 1.在目录plugin/src/main/groovy/com/micky/gradle/下新建插件类My

Android Studio使用教程(四):Gradle基础

其实很早之前也写了一篇Gradle的基础博客,但是时间很久了,现在Gradle已经更新了很多,所以暂且结合Stduio 1.0正式版与最新的Gradle语法来详细讲解下,小伙伴们直接跟我一步步来学习吧. 什么是Gradle? Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言. 安装Gradle 在Android Studio系列教程一–下载与安装中新建项目成功后会下载Grad

Android Studio使用教程(五):Gradle命令详解和导入第三方包

Android Studio + Gradle的组合用起来非常方便,很多第三方开源项目也早都迁移到了Studio,为此今天就来介绍下查看.编译并导入第三方开源项目的方法. Sublime + Terminal编译并查看源码 首先来给大家介绍一种简便并且个人最喜欢的一种办法.很多时候我们在GitHub上看到一个不错的开源项目,一般有两种需求,阅读源码和查看运行效果,如果是单纯的查看源码我更喜欢用一些轻量级编辑器,如vim,sublime等,vim不是很熟练,所以个人一种都习惯用sublime来查看

详解如何使用Android Studio开发Gradle插件

缘由 首先说明一下为什么会有这篇文章.前段时间,插件化以及热修复的技术很热,Nuwa热修复的工具NuwaGradle,携程动态加载技术DynamicAPK,还有希望做最轻巧的插件化框架的Small.这三个App有一个共同的地方就是大量的使用了Gradle这个强大的构建工具,除了携程的框架外,另外两个都发布了独立的Gradle插件提供自动化构建插件,或者生成热修复的补丁.所以学习一下Gradle插件的编写还是一件十分有意义的事. 插件类型 Gradle的插件一般有这么几种: 一种是直接在项目中的g

AndroidStudio Gradle第三依赖统一管理的实现方法

AndroidStudio由于使用了gradle的进行项目构建,使我们开发app方便很多,今天我就给大家列出几点是用gradle的方便之处. 一.AndroidStudio Gradle第三依赖统一管理 二.AndroidStudio Gradle基于友盟的多渠道打包 三.AndroidStudio安全管理签名文件keystroe和签名密码 这三篇文章很好的讲解了gradle的在打包和项目依赖管理的优点,大家可以参考一下,来提高自己的开发效率,增强签名文件的安全性. 在很多时候我们使用Andro

Android Studio中统一管理版本号引用配置问题

方式一: 在gradle.properties中写入: #测试环境 ENV_TEST=test #开发环境 ENV_DEV=dev #生产环境 ENV_ONLINE=online APPLICATION_ID=com.xxx.xxxx COMPILE_SDK_VERSION=26 TARGET_SDK_VERSION=26 MIN_SDK_VERSION=15 SUPPORT_V4_SUPPORT=com.android.support:support-v4:26.1.0 SUPPORT_ANN

详解使用spring cloud config来统一管理配置文件

当一个系统中的配置文件发生改变的时候,我们需要重新启动该服务,才能使得新的配置文件生效,spring cloud config可以实现微服务中的所有系统的配置文件的统一管理,而且还可以实现当配置文件发生变化的时候,系统会自动更新获取新的配置. 其架构原理图大致如下: 我们将配置文件放入git或者svn等服务中,通过一个Config Server服务来获取git中的配置数据,而我们需要使用的到配置文件的Config Client系统可以通过Config Server来获取对应的配置. 下面我们通过

in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案

国外的像基于jQuery的RequireJs,YUI Loader,LabJs,RunJs,国内也有淘宝的SeaJs,豆瓣的DoJs等,这些都是一些十分优秀的模块加载器.但是本文将会向大家介绍一个新的开源的轻量级"多线程"异步模块加载器In.js,In的开发借鉴了Do的一些思路和使用习惯,在此期间感谢@kejun同我的耐心交流,In.js压缩后只有4.77k,不仅小巧而且十分好用. 优点: 按需加载 无阻塞加载 依赖关系管理 颗粒化模块管理 如何使用? A.引入In.js 复制代码 代

SpringBoot使用WebJars统一管理静态资源的方法

传统管理静态资源主要依赖于复制粘贴,不利于后期维护,为了让大家往后更舒心,让WebJars给静态资源来一次搬家革命吧!! 学习目标 简单两步!快速学会使用WebJars统一管理前端依赖. 快速查阅 源码下载:SpringBoot Webjars Learning 使用教程 一.引入相关依赖 在 WebJars官网找到项目中需要的依赖,例如在项目中引入jQuery.BootStrap前端组件等.例如: 版本定位工具:webjars-locator-core 前端组件:jquery .bootstr

vue axios封装及API统一管理的方法

在vue项目中,每次和后台交互的时候,经常用到的就是axios请求数据,它是基于promise的http库,可运行在浏览器端和node.js中.当项目越来越大的时候,接口的请求也会越来越多,怎么去管理这些接口?多人合作怎么处理?只有合理的规划,才能方便往后的维护以及修改, 安装 安装axios依赖包 cnpm install axios --save 引入 一般会我会在项目src中新建一个untils目录,其中base用于管理接口域名,http处理请求拦截和响应拦截,user.js负责接口文件(

Java使用JDK与Cglib动态代理技术统一管理日志记录

Java中动态代理主要有JDK和CGLIB两种方式. 区别主要是jdk是代理接口,而cglib是代理类. 优点:这种方式已经解决我们前面所有日记需要的问题.非常的灵活.而且可以方便的在后期进行维护和升级. 缺点:当然使用jdk动态代理,必需要有接口.如果没有接口.就无法使用jdk动态代理技术. 计算接口 Calculate.java public interface Calculate { /** * 加法运算 * @param num1 参数 1 * @param num2 参数 2 * @r

你应该知道的几类npm依赖包管理详解

前言 大家都知道在一个Node.js项目中,package.json几乎是一个必须的文件,它的主要作用就是管理项目中所使用到的外部依赖包,同时它也是npm命令的入口文件.下面话不多说了,来一起看看详细的介绍把. npm 目前支持以下几类依赖包管理: dependencies devDependencies peerDependencies optionalDependencies bundledDependencies / bundleDependencies 如果你想使用哪种依赖管理,那么你可

Javascript获取统一管理的提示语(message)

项目开发中,各个页面,各个业务操作都会使用提示语.面对这么多message,更好的方式是统一管理这些消息.这样在做国际化的时候进行统一处理也变的方便. 推荐方案使用数据库来管理所有提示语,在项目启动的时候将所有提示语加载到内存或缓存存储. 对于Java中如何实现,没有什么可说的,很简单.那么我们如何在Javascript中使用我们这些提示语呢,下面进行了简单封装,思路清晰,使用简单,供大家参考. 1.创建message.jsp,代码如下: <%-- <%@ page import="