标签: uni-app

  • uni-app跨平台开发app,用Hbuilderx打包安卓应用程序到上架google play 完成l流程

    uni-app跨平台开发app,用Hbuilderx打包安卓应用程序到上架google play 完成l流程

    1 说明

          此文章介绍uni-app跨平台开发时关于安卓的打包到上架的完成流程,同时也会列举在整个过程中的注意事项,阅读文章的前提是是建立在你已经有共可打包的代码和已付费的google play的账号,

    2 uni-app 安卓打包流程

       1  打开项目中manifest.json, 此文件为整个app的配置文件,位于项目的根目录。如下图

    uni-app跨平台开发app,用Hbuilderx打包安卓应用程序到上架google play 完成l流程

     2  对打开左边的选项菜单做简单的介绍,并提供一些注意事项。

         a  基础配置  填写选项信息,appid 是app的唯一标识符至始至终不要去随意改变,应用版本名称和应用版本号在每次正式打包之前的值要比上一个高,否则在上传的时候会出现冲突。

        b  填写即可 , 注意在安卓应用中不要出现有圆角的图标,不然在上架后在手机上会出现黑色填充圆角的情况,如果同一个账号要上传多个app 时图标不能一样,不然审核无法通过。

       c 源码视图  此选项其实就是上选所有选项的代码集合,详细参考https://uniapp.dcloud.io/collocation/manifest

       说明  其他一些选项配置实际上是在开发过程中已经根据需求配置好的,此处省咯,由于google上架时的审核不想ios那么严格,所以一般情况下在完成上面配置和实际开发中的配置都不会存在特别严重的问题,但是涉及到支付时还会涉及到一些其他配置。

    3 点击发行—— 云打包 会出现如下对话框

    uni-app跨平台开发app,用Hbuilderx打包安卓应用程序到上架google play 完成l流程

    关于打包证书的说明, 打包证书可以当前hbuilderx自带的也可以选择自制的,这个不影响上架,区别在于自带的不需要填写任何选项直接编译打包即可,而自制的需要填写当前选项,如果在某些场景下需要app的签名建议使用自制的证书,因为可以直接通过java jdk提供的工具可以从中读取到一个36位的加密字符串的签名.完成上述操作后就可以点击打包了,在打包之前会经过编译的过程,若果代码中出现如document等则会编译失败,因为app不能出现h5的语法,在实际开发注意。

     3  上传

        1  打开https://support.google.com

    uni-app跨平台开发app,用Hbuilderx打包安卓应用程序到上架google play 完成l流程

    2 向下滑动 点击

    uni-app跨平台开发app,用Hbuilderx打包安卓应用程序到上架google play 完成l流程

    3 点击

    uni-app跨平台开发app,用Hbuilderx打包安卓应用程序到上架google play 完成l流程

    4 进入

    uni-app跨平台开发app,用Hbuilderx打包安卓应用程序到上架google play 完成l流程

    5  点击

    uni-app跨平台开发app,用Hbuilderx打包安卓应用程序到上架google play 完成l流程

    说明  最好阅读一下本章内容

    6 点击申请创建

    uni-app跨平台开发app,用Hbuilderx打包安卓应用程序到上架google play 完成l流程6

    7 填写信息 ,注意选择的语言和实际填写的语言,边填写边保存

    uni-app跨平台开发app,用Hbuilderx打包安卓应用程序到上架google play 完成l流程

    8  填写完成后跳转应用发布,箭头所标都是要填写的选项

    uni-app跨平台开发app,用Hbuilderx打包安卓应用程序到上架google play 完成l流程

    说明 如果出现如下报错

    uni-app跨平台开发app,用Hbuilderx打包安卓应用程序到上架google play 完成l流程

    需要修改打包配置文件的

    uni-app跨平台开发app,用Hbuilderx打包安卓应用程序到上架google play 完成l流程

    9  完成上面的配置后 ,直接发布生产版本

    uni-app跨平台开发app,用Hbuilderx打包安卓应用程序到上架google play 完成l流程d

    说明 到此基本上已经完成发布,在发布之前如果出现警告可以忽略,直接发布即可。

    https://www.likecs.com/show-203550407.html

  • uni-app云打包上架谷歌市场

    uni-app云打包上架谷歌市场

    谷歌市场(Google Play)上架的app安装包需要64位,且证书年限需要至少50年以上。要求HBuilderX2.1.5+

    1、修改配置文件

    依次点击“mainifest.json->App常用其他设置->支持CPU类型”,选择上armeabi-v7a、arm64-v8a两个类型。

    对三种类型做一下简单介绍:

    • armeabi-v7a:第7代及以上的ARM处理器(ARM32位),市面上大多数手机使用此CPU类型
    • arm64-v8a:第8代、64位ARM处理器(ARM64位),最近两年新发的设备使用此CPU类型
    • x86:少部分平板使用x86,as模拟器中选了intel x86时也是这种情况。(雷电夜神等三方模拟器模拟的是arm架构,不是x86)

    参考文档:

    Android平台配置支持的CPU类型(64位):https://ask.dcloud.net.cn/article/36195

    2、云打包

    依次点击“发行->原生App-云打包”,在渠道包中选择GooglePlay,生成谷歌可用的64位包,若不勾选或者选择其他渠道包则不能生成符合谷歌的安装包。

    3、等待打包成功生成apk的包即可。

    Google Play 上架

    务必确保将HBulider X升级到3.2.15+版本。离线打包需要将离线打包SDK升级到3.2.15+版本

    App提交云端打包时请务必勾选“GooglePlay(AAB)”渠道

    Google Play上架审核要求比较严格,应用中不能存在以下行为:

    • 不能直接下载apk方式安装应用,需引导用户到Google Play安装
    • 不能存在动态加载代码行为

    uni-app中部分功能模块不符合Google Play审核要求,请仔细阅读下面章节。

    必须适配Android11

    “App常用其它设置”中需要将targetSdkVersion设置值大于等于30

    注意:务必在Android11设备上进行测试,确保应用所有功能可以正常运行

    不能包含安装应用权限

    在App权限配置中不要勾选 android.permission.INSTALL_PACKAGES、android.permission.REQUEST_INSTALL_PACKAGES 权限

    离线打包:

    1. 更新SDK3.2.15+版本
    2. 请查看原生项目中的AndroidManifest.xml。如果包含以下权限请手动删除:
    <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

    注意:如果使用了uni原生插件,可能会添加安装应用权限,请联系uni原生插件作者确认

    不要使用QQ登录、QQ分享模块

    使用QQ登录、分享功能时,如果当前设备上没有安装QQ应用时,会引导用户下载安装,不符合Google Play的审核要求,因此提交到Google Play时不要勾选QQ登录及QQ分享模块

    离线打包:

    请不要集成qq_mta-sdk-xxx.jar,qq_sdk_vxxx.jar等SDK。如果有请删除

    不要使用国内增强广告SDK

    uni-AD国内增强广告(如穿山甲、广点通、快手等SDK)显示的广告落地页可能会引导用户下载安装apk,不符合Google Play的审核要求,因此提交到Google Play时不要勾选增强广告SDK

    注意:uni-AD 广告基础功能不受影响

    离线打包:

    请不要集成国内增强广告相关依赖库 ks_adsdk-ad.aar、windAd.aar、GDTSDK.unionNormal.aar,open_ad_sdk.aar,torch-adcore-xx.aar。如有请删除

    不要使用X5内核

    腾讯TBS(X5)内核在Android平台解决了很多适配问题(详情可参考:https://ask.dcloud.net.cn/article/36806),但它使用了动态热更新技术,不符合Google Play的审核要求,因此提交Google Play时不要勾选使用“Android X5 Webview(腾讯TBS)”模块

    离线打包:

    请不要集成X5相依赖库webview-x5-release.aar,如有请删除

    其它相关问题

    uni-app 提交 aab 版本到 Google Play 提示 API 级别过低的解决办法

    发现问题
    近日准备发布新版本上架到 Google Play 上时,突然出现了 Change your app’s target API level to at least 31 的提示。

    在查阅相关资料后,得知 新应用必须以 Android 12(API 级别 31)或更高版本为目标平台;Wear OS 应用除外,此类应用必须以 Android 11(API 级别 30)或更高版本为目标平台。自 2023 年 1 月起,应用更新必须以 Android 12 或更高版本为目标平台,并针对 Android 12 中的行为变更进行调整;Wear OS 应用除外,此类应用必须以 Android 11 或更高版本为目标平台。

    详情请看: 符合 Google Play 的目标 API 级别要求 。

    解决问题
    此时只需要将应用配置文件 manifest.json 中的 App常用其他设置 的 targetSdkVersion 设置成 31 ,然后重新提交到云打包,将打包好的 aab 再次去提交到 Google Play 就不会再报错了。

    填好 App 必要信息,提交去审核,大概两个工作日左右就可以上架到 Google Play 了(前提是你的App不违规喔~)。

  • uni-app 页面应用内跳转与应用外跳转的实现方式

    uni-app 页面应用内跳转与应用外跳转的实现方式

    我们在用 uni-app 开发前端应用时,页面跳转是必不可少的。页面跳转主要包含应用内跳转(站内跳转)和应用外跳转(外部跳转)。下面我们一起来看看具体实现方式。

    站内跳转

    站内跳转主要有两种实现方式,可以通过组件和 API 接口方式实现。

    采用 navigator 组件

    <template>
        <view>
            <navigator url="/pages/view/view?id=1" open-type="navigate">
                <button type="default">跳转到新页面</button>
            </navigator>
        </view>
    </template>

    采用 API 接口

    <template>
        <view>
            <button type="default" @tap="toView">跳转到新页面</button>
        </view>
    </template>
    
    <script>
        export default {
            methods: {
                toView () {
                    uni.navigateTo({
                        url: '/pages/view/view?id=1'
                    })
                }
            }
        }
    </script>

    open-type 主要有效值与 API 的对应关系

    值对应 API说明
    navigateuni.navigateTo保留当前页面,跳转到应用内的某个页面
    redirectuni.redirectTo关闭当前页面,跳转到应用内的某个页面
    switchTabuni.switchTab跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
    reLaunchuni.reLaunch关闭所有页面,打开到应用内的某个页面
    navigateBackuni.navigateBack关闭当前页面,返回上一页面或多级页面

    更多规则可查看:官方文档

    目标页面参数接收:

    <script>
        export default {
            onLoad: function (option) { // option为object类型,会序列化上个页面传递的参数
                console.log(option.id) // 打印出上个页面传递的参数。
            }
        }
    </script>

    外部跳转

    外部跳转直接可以使用 web-view 组件,会自动铺满整个页面。

    步骤1:在项目根路径下的 pages 目录下,新建一个页面,用于专门放置外部网站

    <template>
        <web-view :src="url"></web-view>
    </template>
     
    <script>
        export default {
            data() {
                return {
                    url: null  //要打开的外部链接
                }
            },
            onLoad: function (option) {
                this.url = option.url
            }
        }
    </script>

    步骤2:配置 pages.json

    {
        "pages": [
            ……,
            {
                "path": "pages/web-view/web-view",
                    "style": {
                        "navigationBarTitleText": "页面标题"
                    }
                }
            }
        ]
    }

    步骤3:在需要跳转的页面,通过 navigator 组件或 API 进行跳转

    <template>
        <view>
            <navigator url="/pages/web-view/web-view?url=https://www.baidu.com/">访问百度</navigator>
        </view>
    </template>