frontend
uniapp开发常见问题汇总
2020/06/03 0

# 项目结构

┌─components            uni-app组件目录
│  └─comp-a.vue         可复用的a组件
├─hybrid                存放本地网页的目录
├─platforms             存放各平台专用页面的目录
├─pages                 业务页面文件存放的目录
│  ├─index
│  │  └─index.vue       index页面
│  └─list
│     └─list.vue        list页面
├─static                存放应用引用静态资源(如图片、视频等)的目录,注意:静态资源只能存放于此
├─wxcomponents          存放小程序组件的目录
├─main.js               Vue初始化入口文件
├─App.vue               应用配置,用来配置App全局样式以及监听 应用生命周期
├─manifest.json         配置应用名称、appid、logo、版本等打包信息
└─pages.json            配置页面路由、导航条、选项卡等页面类信息

# custom elements

  • a ==> navigator
  • div ===> view
  • span ===> text

# 常用设置

  • 隐藏顶部菜单

# 真机调试

  • usb 直接安装 apk 文件
# 切换到sdk目录
cd /path/to/sdk/platform-tools

# 使用adb命令安装apk
adb install /path/to/name.apk

# 命令行启动avd
android list avd
emulator -avd 模拟器名称

# 广告

uniad 分为基础广告和增强广告两类,其中基础广告没有限制可直接接入, 增强广告需要 app 上架应用市场

# 开通增强广告

# 生成自有证书(opens new window)

# 安装jdk
...
# 生成keystore文件
keytool -genkey -alias iamceo -keyalg RSA -keysize 2048 -validity 36500 -keystore iamceo.keystore
# 查看内容 (密码:iamceo)
keytool -list -v -keystore iamceo.keystore
查看包名
# 切换到aapt目录
cd path/to/sdk/build-tools/VERSION/
# aapt
aapt dump badging D:\__UNI__E958B35_0803094448.apk > D:\log.txt
# log.txt
package: name='uni.UNIE958B35' versionCode='100' versionName='1.0.0' platformBuildVersionName='1.0.0' compileSdkVersion='29' compileSdkVersionCodename='10'
sdkVersion:'19'
targetSdkVersion:'26'

# 上架应用市场

多数应用市场上架 app 需要著作权,其中不需要著作权的市场:

  1. 酷安市场:审核较慢。(只能用于广点通审核)。
  2. Google Play:开发者账号收费 25 美元。
  3. 豌豆荚:应用不涉及金融、贷款、医疗等特殊行业内容,可以暂时使用开发者声明代替。
  4. 安智:包含推广的上架服务,费用为 5000 元。

# 广告接入

# 应用内展示的广告组件

新建广告位后,会生成对应的广告位 ID,即 adpid,需等待广告位审核通过。不同平台广告位的审核速度不一样。 refs: https://ask.dcloud.net.cn/article/id-36769__page-5

<!-- App平台 示例 1 -->
<view class="ad-view">
  <ad
    adpid="1111111111"
    @load="onload"
    @close="onclose"
    @error="onerror"
    @downloadchange="ondownloadchange"
  ></ad>
</view>
// 1111111111 为测试adpid, 打包后不能使用

image

# 激励视频广告

  • 加载
<script>
    let rewardedVideoAd = null;
    export default {
        data() {
            return {
                title: 'createRewardedVideoAd'
            }
        },
        onReady() {
            if(uni.createRewardedVideoAd) {
                rewardedVideoAd = uni.createRewardedVideoAd({ adpid: '1507000689' }) // 仅用于HBuilder基座调试 adpid: '1507000689'
                rewardedVideoAd.onLoad(() => {
                    console.log('onLoad event')
                })
                rewardedVideoAd.onError((err) => {
                    console.log('onError event', err)
                })
                rewardedVideoAd.onClose((res) => {
                    console.log('onClose event', res)
                })
            }
        },
        methods: {
        }
    }
</script>
  • 显示
rewardedVideoAd.show()

# 通用启动界面

https://ask.dcloud.net.cn/article/37474

# 屏幕适配

设计尺寸 375x812 (iphone X)

# 原生 tabbar 遮挡问题

使用原生 view 增加遮罩 弹窗无法遮挡 tabbar(opens new window)