PageSourceSearch

https://flutterads.top/static/js/async/7615.70eca6fc.js

js flutterads.top collected 2026-10-05 07:00:00 UTC 10,192 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkrspress_doc_template=self.webpackChunkrspress_doc_template||[]).push([["7615"],{6946:function(e,s,n){n.r(s),n.d(s,{default:()=>d});var r=n(8663),i=n(3664),a=n(6305);function l(e){let s={a:"a",blockquote:"blockquote",code:"code",div:"div",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...(0,i.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(s.h1,{id:"-测试助手pro",children:[(0,r.jsx)(s.a,{className:"header-anchor","aria-hidden":"true",href:"#-测试助手pro",children:"#"}),"\uD83E\uDDEA 测试助手(Pro)"]}),"\n",(0,r.jsxs)(s.div,{className:"rspress-directive warning",children:[(0,r.jsx)(s.div,{className:"rspress-directive-title",children:"\uD83D\uDCA1 小提示"}),(0,r.jsx)(s.div,{className:"rspress-directive-content",children:(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:["测试助手一定不能在线上使用,请严格按照示例集成,仅在 ",(0,r.jsx)(s.code,{children:"debug"})," 模式下加载"]}),"\n",(0,r.jsx)(s.li,{children:"为了方便已最大限度的集成到插件中了,iOS 零配置,Android 仅需引入 aar 即可"}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"https://www.csjplatform.com/union/media/union/download/detail?id=142&docId=27626&osType=android",rel:"noopener noreferrer",target:"_blank",children:"参考官方文档"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.code,{children:"请使用真机测试,不要使用模拟器"})}),"\n",(0,r.jsx)(s.li,{children:"Pro 版客户,如有问题随时联系我,提供配置指导"}),"\n"]})})]}),"\n",(0,r.jsxs)(s.h2,{id:"强大作用",children:[(0,r.jsx)(s.a,{className:"header-anchor","aria-hidden":"true",href:"#强大作用",children:"#"}),"强大作用"]}),"\n",(0,r.jsx)(s.p,{children:"很多人会忽略这个功能,可视化测试助手主要有 2 个作用来保证你上线后广告没啥问题。"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsx)(s.li,{children:"GroMore 一般我们会集成多厂商,SDK 兼容性情况一目了然"}),"\n",(0,r.jsx)(s.li,{children:"每个广告位瀑布流中有多个代码位,一般测试展示价格最高的,很难精准控制测试,可视化测试可每个代码位进行测试"}),"\n"]}),"\n",(0,r.jsxs)(s.h2,{id:"演示视频",children:[(0,r.jsx)(s.a,{className:"header-anchor","aria-hidden":"true",href:"#演示视频",children:"#"}),"演示视频"]}),"\n",(0,r.jsx)("video",{src:(0,a.i6)("/imgs/view/video_test.mp4"),width:"260px",controls:!0}),"\n",(0,r.jsxs)(s.h2,{id:"android-配置",children:[(0,r.jsx)(s.a,{className:"header-anchor","aria-hidden":"true",href:"#android-配置",children:"#"}),"Android 配置"]}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsxs)(s.p,{children:["先将插件中依赖 ",(0,r.jsx)(s.code,{children:"android/libs/tools-release.aar"})," 复制到自己项目下的 ",(0,r.jsx)(s.code,{children:"android/app/libs/"})," 文件夹中,然后配置以下 ",(0,r.jsx)(s.code,{children:"debug"})," 模式下的依赖引用"]}),"\n"]}),"\n",(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(s.pre,{className:"shiki css-variables",style:{backgroundColor:"var(--shiki-background)",color:"var(--shiki-foreground)"},tabIndex:"0",title:"example/android/app/build.gradle",children:(0,r.jsxs)(s.code,{className:"language-dart",children:[(0,r.jsx)(s.span,{className:"line",children:(0,r.jsx)(s.span,{style:{color:"var(--shiki-foreground)"},children:"dependencies {"})}),"\n",(0,r.jsx)(s.span,{className:"line",children:(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-comment)"},children:"    // 测试工具(这里仅 debug 模式下引用,正式项目用这种模式)"})}),"\n",(0,r.jsxs)(s.span,{className:"line",children:[(0,r.jsx)(s.span,{style:{color:"var(--shiki-foreground)"},children:"    debugImplementation "}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"files"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-foreground)"},children:"("}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'libs/tools-release.aar'"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-foreground)"},children:")"})]}),"\n",(0,r.jsx)(s.span,{className:"line",children:(0,r.jsx)(s.span,{style:{color:"var(--shiki-foreground)"},children:"}"})})]})})}),"\n",(0,r.jsxs)(s.h2,{id:"ios-配置",children:[(0,r.jsx)(s.a,{className:"header-anchor","aria-hidden":"true",href:"#ios-配置",children:"#"}),"iOS 配置"]}),"\n",(0,r.jsx)(s.p,{children:"无需配置,插件中已默认开发模式下集成,上线不会增加安装包大小"}),"\n",(0,r.jsxs)(s.h2,{id:"启动可视化测试助手",children:[(0,r.jsx)(s.a,{className:"header-anchor","aria-hidden":"true",href:"#启动可视化测试助手",children:"#"}),"启动可视化测试助手"]}),"\n",(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(s.pre,{className:"shiki css-variables",style:{backgroundColor:"var(--shiki-background)",color:"var(--shiki-foreground)"},tabIndex:"0",title:"example/pages/home_page.dart",children:(0,r.jsx)(s.code,{className:"language-dart",children:(0,r.jsxs)(s.span,{className:"line",children:[(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"FlutterGromoreAds"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-foreground)"},children:"."}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"launchTestTools"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-foreground)"}
1,children:"();"})]})})})}),"\n",(0,r.jsxs)(s.h2,{id:"常见错误",children:[(0,r.jsx)(s.a,{className:"header-anchor","aria-hidden":"true",href:"#常见错误",children:"#"}),"常见错误"]}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsx)(s.li,{children:"组件冲突了"}),"\n"]}),"\n",(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(s.pre,{className:"shiki css-variables",style:{backgroundColor:"var(--shiki-background)",color:"var(--shiki-foreground)"},tabIndex:"0",children:(0,r.jsx)(s.code,{className:"language-java",children:(0,r.jsxs)(s.span,{className:"line",children:[(0,r.jsx)(s.span,{style:{color:"var(--shiki-foreground)"},children:"[INSTALL_FAILED_CONFLICTING_PRVIDER"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:":"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-foreground)"},children:" scaning Failed"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-punctuation)"},children:"."}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:":"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-foreground)"},children:" can"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'t install,sbecause provider name .ToolsProvider (in package xxx) is already used by com.flutterads.app]"})]})})})}),"\n",(0,r.jsxs)(s.blockquote,{children:["\n",(0,r.jsx)(s.p,{children:"卸载掉我的示例或者穿山甲示例 App 即可重新安装。"}),"\n"]}),"\n",(0,r.jsxs)(s.h2,{id:"常见问题",children:[(0,r.jsx)(s.a,{className:"header-anchor","aria-hidden":"true",href:"#常见问题",children:"#"}),"常见问题"]}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsx)(s.li,{children:"AAPT: statusBarBackgroun
1d not found"}),"\n"]}),"\n",(0,r.jsxs)(s.p,{children:["原因是 ",(0,r.jsx)(s.code,{children:"tools-release.aar"})," 有个属性错误,新版 AAPT 没通过检查,覆盖样式即可解决"]}),"\n",(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(s.pre,{className:"shiki css-variables",style:{backgroundColor:"var(--shiki-background)",color:"var(--shiki-foreground)"},tabIndex:"0",title:"example/android/src/main/res/values/themes.xml",children:(0,r.jsxs)(s.code,{className:"language-dart",children:[(0,r.jsx)(s.span,{className:"line"}),"\n",(0,r.jsxs)(s.span,{className:"line",children:[(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"\x3c!--"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-foreground)"},children:" 覆盖掉测试助手报错 statusBarBackground"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"' not found--\x3e"})]}),"\n",(0,r.jsx)(s.span,{className:"line",children:(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'<style name="BottomDialog">'})}),"\n",(0,r.jsx)(s.span,{className:"line",children:(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'    <item name="android:windowNoTitle">true</item>'})}),"\n",(0,r.jsx)(s.span,{className:"line",children:(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'    <item name="android:windowBackground">@android:color/transparent</item>'})}),"\n",(0,r.jsx)(s.span,{className:"line",children:(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'    <item name="android:windowIsFloating">false</item>'})}),"\n",(0,r.jsx)(s.span,{className:"line",children:(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"}
1,children:"    \x3c!-- Remove statusBarBackground --\x3e"})}),"\n",(0,r.jsx)(s.span,{className:"line",children:(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'    <item name="android:backgroundDimEnabled">true</item>'})}),"\n",(0,r.jsx)(s.span,{className:"line",children:(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'    <item name="android:windowTranslucentStatus">true</item>'})}),"\n",(0,r.jsx)(s.span,{className:"line",children:(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"</style>"})})]})})})]})}function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{wrapper:s}={...(0,i.a)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}d.__RSPRESS_PAGE_META={},d.__RSPRESS_PAGE_META["start%2Fguide%2Fgromore%2Ftest.mdx"]={toc:[{id:"强大作用",text:"强大作用",depth:2},{id:"演示视频",text:"演示视频",depth:2},{id:"android-配置",text:"Android 配置",depth:2},{id:"ios-配置",text:"iOS 配置",depth:2},{id:"启动可视化测试助手",text:"启动可视化测试助手",depth:2},{id:"常见错误",text:"常见错误",depth:2},{id:"常见问题",text:"常见问题",depth:2}],title:"\uD83E\uDDEA 测试助手(Pro)",headingTitle:"\uD83E\uDDEA 测试助手(Pro)",frontmatter:{}}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.