android友盟多渠道打包,超详细的那种!

来源:互联网 发布:linux tomcat线程挂起 编辑:程序博客网 时间:2024/05/22 17:25

          app要上线,需要进行多渠道打包,关于多渠道打包的概念以及理由,我会简单的讲一下我的个人理解。打包的过程中可能会遇到的一些问题,可能看到我这篇文章的开发者也许也会遇到这样的问题吧。所以我这里就单纯的讲解如何使用友盟进行多渠道打包了。

          什么是多渠道?为什么要多渠道打包?

          多渠道就是你项目完成后,需要发布到各个不同的平台,你需要批量生成不同名称的apk文件,同时方便后台检测你的app从哪个平台下载安装的,有利于分析app的安装情况,通过这些分析会让你的app的运营之路越来越好。理解了以上两个问题后,接下来就是如何利用友盟来进行apk的多渠道打包了

          一、获取友盟的SDK

          首先,访问友盟的官网,http://www.umeng.com/(百度第一条就可以看到),进行用户注册什么的。注册完成后,进入个人中心,点击U-App。

         

          接下来就会进入到下面的页面,然后点击立即使用,旁边有demo和SDK文档,觉得我将的不够详细的小伙伴可以参考一下demo和SDK,那里讲的也许比我好。

         

          点击添加新应用,填好相关信息后,提交后获取一个appkey。填写的信息并不是很重要,跟你的app并无多大关系,描述得差不多就可以了,重要的是提交申请得到的appkey,那才是至关重要的。

         

          嗯,到这里关于友盟的注册也差不多了,开发者们可以到友盟的开发者中心去查看相关的sdk文档,接下来就是将在android studio中的配置了(不要问我Eclipse怎么搞,我不用eclipse的)

          二、android studio中配置友盟。

          第一步,在gradle中添加友盟的依赖

          

dependencies {   compile 'com.umeng.analytics:analytics:latest.integration'}

         

           第二步、在androidManifest添加两条meta以及一些权限。

          

<application    android:allowBackup="true"    android:icon="@drawable/shell_sf"    android:label="@string/app_name"    android:supportsRtl="true"    android:theme="@style/Theme.AppCompat.Light.NoActionBar">    <meta-data android:name="UMENG_APPKEY" android:value="58d3084f07fe6541cc001ab0"></meta-data>    <meta-data android:name="UMENT_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}"></meta-data>


          以上两条meta的name属性照着写就可以了,appkey写的是刚刚我们从友盟获取的appkey。第二条meta的value值也可以照着写。

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

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

         好了,关于在AndroidManifest中的配置,就这些了。接下来就是配置app的gradle文件。

          第三步、配置app的gradle文件

          1.在defaultConfig块下添加两行代码,如下所示

        

    defaultConfig {//ChumFuchiu        applicationId "com.ustb.shellbox.shelllife"        minSdkVersion 14        targetSdkVersion 23        versionCode 1        versionName "1.0"        multiDexEnabled true        manifestPlaceholders=[UMENG_CHANNAL:"umeng"]    }


         2.在跟defaultConfig下添加如下代码块。有人可能会问这个是什么,这个就是你打包apk的签名文件,都是你自己设定的。怎么生成这个签名文件呢?Build->Generate signed APK。在弹出来的对话框中自己设置一下一下就好了。

        

    signingConfigs{        release{            storeFile file("*******.jks")            storePassword "******"            keyAlias "xxxxxx"            keyPassword "******"        }    }


        3.在buildTypes中的release中添加如下代码。

        

buildTypes {        release {            //不显示Log            buildConfigField "boolean","LOG_DEBUG","false"            //不启用混淆代码的功能,这里可以设置为true,为了防止反编译的,其实也没有多大用,加壳加固得用第三方,想去了解的自行去了结就好了            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'            //以下被注释掉的代码本来是用来移除无用的资源文件的,用于减小apk的体积倒是一个不错的办法,但是有这一句话,多渠道打包就会包找不到制定资源文件    //的错误,这个也是我后来发现的,一直找不出来,怕小伙伴们遇到这个坑,所以还是贴出来填坑。//            shrinkResources true            multiDexEnabled true            signingConfig signingConfigs.release        }    }


        4.创建一个productFlavors代码块,与buildTypes同级。这里其实还有另一种写法,但是代码我就不贴了,这样我觉得反倒觉得简洁明了。这里值得注意的是像91、360这样以数字开头的,前面要加上下划线,不然可能会GG。

         

    productFlavors{        wandoujia {            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]        }        _91{            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "_91"]        }        _360{            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "_360"]        }        google{            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "google"]        }        kuan{            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "kuan"]        }    }


        5.最后就是添加下面这一行代码块了,这代码块的作用是生成apk的名字,他会按照注解中的信息生成相对应的apk名称,有能力的开发者可以自己再加上时间日期或者别的东西什么的,不会的照着抄就ok了。

         

    applicationVariants.all { variant ->        variant.outputs.each { output ->            def outputFile = output.outputFile            if (variant.buildType.name.equals('release')) {                //生成apk名字的格式:Channel1.0_****.apk                //可自定义自己想要生成的格式                def fileName = "Channel${defaultConfig.versionName} _${variant.productFlavors[0].name}.apk"                output.outputFile = new File(outputFile.parent, fileName)            }        }    }


          6.以上操作结束之后,可以同步一下看看有没有什么错误,有错误就及时修改。

          第四步、打包批量生成apk。

          利用Build->Generate signed APK生成批量的apk就好了,签名文件之前已经生成过了,直接拿来用就可以了。接下来就是图形界面操作,点击next-finish完成就可以了。不过在finish的那一步,会有一个炫着V1-V2的选项,看你自己个人需求,如果不适配7.0以上的话,V2是不用勾选的,单纯勾选V1就可以了。

         

         

1 0
原创粉丝点击