app上线后,一般会在多个平台发布。为了方便管理,app开发完成后需统计在各个平台下载数量。

Android打包

此处贴上HBuilderX云打包方式(没特殊要求可直接用这种方式,相对比较简单)

在manifest.json【源码视图】中, 根节点增加channel_list字段,注意是根节点

{  
    "channel_list":[  
        {  
            "id":"",  
            "name":""  
        }  
    ]  
}
比如:
{  
    "channel_list":[  
        {  
            "id":"chuizi",  
            "name":"锤子应用市场"  
        },  
               {  
            "id":"meizu",  
            "name":"魅族应用市场"  
        }  
    ]  
}
配置后会在上面的云端打包界面显示自定义渠道,提交云端打包时需要勾选才能生效

页面预览.png

app中使用plus.runtime.channel可获取具体渠道信息

由于此种存在代码泄密到其他平台问题,只能寻找Android Studio打包的方式,常见为使用Android Studio Gradle实现友盟多渠道打包。(谨慎使用,博主没成功,只是记录一下解决问题的过程以及收获)

首先下载Android开发环境使用的SDK,然后把前端代码复制进去,找到AndroidManifest.xml修改一下参数
<meta-data
    android:name="UMENG_APPKEY"
    android:value="xxxxxxxxxxxxxxxxxxx" /><!--友盟 Appkey 自己应用注册申请来的-->
    <meta-data
        android:name="UMENG_CHANNEL"
        android:value="${UMENG_CHANNEL_VALUE}" /> <!--渠道号,多渠道这里使用了占位符$-->

然后打开build.gradle(注意这里不是项目根目录那个)
在defaultConfig节点下添加默认渠道号
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "default_channel"]//添加一个默认渠道号

在defaultConfig同节点添加一个productFlavors节点,内容如下:
productFlavors {
    default_channel {}
    huawei {}
    oppo {}
    xiaomi {}
    yiyongbao {}
    vivo {}
    _360 {}
}

productFlavors.all { flavor ->
    flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}

如果不知道放在哪里看一下完整的

apply plugin: 'com.android.application'

android {
compileSdkVersion 26
buildToolsVersion "26.0.2"

defaultConfig {
    applicationId "com.dc.xydemo"
    minSdkVersion 23
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"

    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    manifestPlaceholders = [UMENG_CHANNEL_VALUE: "default_channel"]//添加一个默认渠道号

}
productFlavors {
    default_channel {}
    huawei {}
    oppo {}
    xiaomi {}
    yiyongbao {}
    vivo {}
    _360 {}
}

productFlavors.all { flavor ->
    flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

修改好后打包

页面预览.png

  具体需要那几个渠道可自由选择,v1,v2建议全选,初步了解是关于手机兼容的;

  坐等打包运行完成,然后可以在build-->outputs-->apk下边看看是否打包成功

  虽打包成功,但是并没获取到渠道信息。也许是plus.runtime.channel不适
合在这里使用;也可能是统计信息只能在友盟官网看。总之满足不了需求(需统计
后在自己开发的后台看)

最后这个方式才是适合我的

  使用HBuilderX离线打包的方式,之前也不是没想过,当时看到HBuilderX
打包里面有个离线打包的选项,直接点了一下然后生成本地资源,看了一下就
只是把代码复制了一份在资源路径,然后甲方明确标识尽量使用Android 
Studio,就没进一步研究了;当时研究了好几个星期,一直没找到合适的方
案,最后领导给最后一天时间,说实在不行的话就只能放弃这个需求了,然后
就去官网看了一下这个离线打包,结果一次成功了。。而且离线打包也是用
Android Studio打包,只是使用了HBuilderX生成资源。

具体步骤

下载最新的sdk,在Android项目的Androidmanifest.xml中的application节点下添加如下内容

<meta-data android:name="DCLOUD_STREAMAPP_CHANNEL" 
 android:value="{applicationId}|{appid}|{adid}|{channel}"/>

说明
.applicationId 包名,对应Android项目中build.gradle中的applicationId
.appid 应用标识,对应5+或uni-app项目manifest.json中appid
.adid DCloud的广告标识,开通广告后可在dev.dcloud.net.cn获取,如果没有
  开通广告,设置值为即可
.channel 渠道标识

例如:
<meta-data  
        android:name="DCLOUD_STREAMAPP_CHANNEL"  
    android:value="io.dcloud.HBuilder|HBuilder|0123456789|google" />

参照上一种方案打包(打包时没渠道信息选择,每次只能配置一种渠道),然后使用plus.runtime.channel获取渠道信息

IOS打包

打完Android的包后就开始着手iOS的包了,这次学聪明了,先看[官方文档] (https://ask.dcloud.net.cn/article/41),发现需要几个条件:iOS开发环境(mac系统,Apple ID,苹果手机或者虚拟机)、XCode 7.2以上版本;

  1. 安装mac系统; 条件有限只能使用虚拟机,mac的大佬请忽略; 参考教程虚拟机VMware 15安装Mac Os10.14教程 以下是可能遇到的坑,分享下解决方案:
  • 显示不可恢复错误 原因是选择的硬件版本不对,应选10.x 虚拟机

  • 系统安装没有安装盘,需在mac系统工具里面抹除一下分配的虚拟磁盘空间(相当于格式化吧),然后就可以安装了。

  • 无法连网(NAT模式),安装插件时关闭了5个服务,后面启动虚拟机只启动了3个,另外两个手动启一下就好;如果主机和虚拟机能互相ping通还不能上网则重启电脑和虚拟机

  • 如果安装后卡在mac实用工具(第一次会显示,正确安装重启后是会进入系统的,如果一直卡在这就可能是这个问题),尝试更新到vm15并更新插件新版vm以及插件

    (这里记录一下博主解决问题的整个过程:刚开始找的教程比较老,然后安装了低版本的mac系统,App Store中获取的Xcode软件显示系统版本不匹配,需要10.14.4以上版本,博主按照百度直接装了个10.8,先不管这个,然后开始寻找高版本系统,首先百度上全是dmg系统,不要相信用转换工具将dmg转ISO或者cdr文件或者有的说先用7z解压然后转,不然就蓝屏显示boot manager;找了好久没有,然后就找找有没有其他转换的办法,得知mac系统可直接用终端命令转,我不是安装10.8成功了吗,就用它试试;然后下载dmg格式的系统文件,安装tools传进去,问题来了,mac系统安装软件需要系统管理员,我的账号密码没用,只有一个普通用户,搞半天行不通;重新回来找现成的cdr文件,几天下来只有csdn50积分或者极限苹果几百大洋的vip才能下;最终找到一个博客VMware15安装mac10.14里面附带了10.14的系统)

    回想起来大部分时间浪费在下载和安装系统上,几个G或者十几G的系统,开百度云会员都下了半天,还一直有问题,百度上的资源需谨慎使用 整理了一下虚拟机安装mac用到的资源 链接:https://pan.baidu.com/s/1yMyrZp8-I20BRRK1k2h0vQ 提取码:qss6

  1. Apple ID 直接https://support.apple.com/zh-cn/apple-id注册,免费的

  2. 安装xcode,App Store中直接查找,需要Apple ID,然后有认证,地址啥的随便填也没事,最新版7G左右,时间又浪费在这里

  3. 下载iOS sdk环境 sdk环境官网下载 下载后安装tools将代码和sdk传进虚拟机,安装tools如果显示, 无法在更新服务器上找到组件。请联系 VMware 技术支持或您的系统管理员。 请勾选下图中的选项,并将路径设置为虚拟机安装文件中的darwin.iso(新版没有,可在官网下载http://softwareupdate.vmware.com/cds/vmw-desktop/fusion/) cd

  4. 将skd中的demo替换为我们的项目 先从HBuilder中生成离线打包资源,然后替到sdk中apps目录下(注意www的父级目录也要一起),然后打开sdk目录HBuilder-Hello, 双击“HBuilder-Hello.xcodeproj”文件打开工程,接下来按照官网进行配置相关信息即可 渠道配置跟Android离线打包相同,具体参考官网