app上线后,一般会在多个平台发布。为了方便管理,app开发完成后需统计在各个平台下载数量。
Android打包
此处贴上HBuilderX云打包方式(没特殊要求可直接用这种方式,相对比较简单)
在manifest.json【源码视图】中, 根节点增加channel_list字段,注意是根节点
{
"channel_list":[
{
"id":"",
"name":""
}
]
}
比如:
{
"channel_list":[
{
"id":"chuizi",
"name":"锤子应用市场"
},
{
"id":"meizu",
"name":"魅族应用市场"
}
]
}
配置后会在上面的云端打包界面显示自定义渠道,提交云端打包时需要勾选才能生效
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'
}
}
}
修改好后打包
具体需要那几个渠道可自由选择,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以上版本;
- 安装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
-
安装xcode,App Store中直接查找,需要Apple ID,然后有认证,地址啥的随便填也没事,最新版7G左右,时间又浪费在这里
-
下载iOS sdk环境 sdk环境官网下载 下载后安装tools将代码和sdk传进虚拟机,安装tools如果显示, 无法在更新服务器上找到组件。请联系 VMware 技术支持或您的系统管理员。 请勾选下图中的选项,并将路径设置为虚拟机安装文件中的darwin.iso(新版没有,可在官网下载http://softwareupdate.vmware.com/cds/vmw-desktop/fusion/)
-
将skd中的demo替换为我们的项目 先从HBuilder中生成离线打包资源,然后替到sdk中apps目录下(注意www的父级目录也要一起),然后打开sdk目录HBuilder-Hello, 双击“HBuilder-Hello.xcodeproj”文件打开工程,接下来按照官网进行配置相关信息即可 渠道配置跟Android离线打包相同,具体参考官网