


前言
本文基于一套短剧短视频聚合广告平台源码展开,项目支持对接穿山甲、腾讯优量汇、灰鲸等多家广告渠道,完整实现短剧 SDK 渲染、多类型广告加载、服务端回调校验、收益统计、邀请裂变、用户激励整套业务能力。
很多开发者拿到源码压缩包之后,频繁遇到 SDK 初始化失败、短剧广告不展示、服务端回调失效、Android 打包签名报错、Nginx 反向代理异常等各类问题。源码包内已经将 APPID、广告位 ID、密钥、域名、数据库密码等全部敏感信息替换为占位符,无法直接运行,必须完成全量参数替换。本文完整梳理项目架构、参数配置、编译打包、问题排查、容器上线全流程。
项目架构说明
整套项目分为三大核心模块,模块之间参数强耦合,任意一端参数不一致,都会直接造成广告不加载、回调异常、业务逻辑失效。
- Android 客户端(qianduan/app):业务载体,集成穿山甲短剧 SDK、腾讯广告 SDK,负责广告渲染、深链接唤起、业务接口上报;
- SpringBoot 后端(houduan):业务服务中枢,MySQL 数据持久化、JWT 接口鉴权、广告回调签名校验、邀请下载逻辑、广告数据统计;
- Vue 管理后台(admin):可视化管理面板,完成广告数据、用户数据查看与管理。
项目配套 Nginx 反向代理,同时提供docker‑compose容器化部署方案,适配生产环境快速交付。
一、占位符参数提前梳理
源码中所有敏感信息统一使用XXX------XXXX占位标记,部署前务必整理好全部真实参数,下表为参数来源说明:
表格
| 占位符 | 含义 | 获取 / 生成途径 |
|---|---|---|
| app 包名 ------XXXXX | Android 应用包名 | 自定义,广告平台后台注册应用必须和该包名保持一致 |
| APPID------XXXX | 穿山甲 / 灰鲸应用 ID | 广告平台开发者后台‑应用管理 |
| 站点 ID------XXXX | 穿山甲短剧 SDK 站点 ID | 穿山甲后台短剧 SDK 模块 |
| 广告位 ID------XXXX | 各个广告代码位 ID | 广告后台代码位管理页面 |
| 安全密钥 ------XXXX | 聚合广告服务端回调密钥 | 穿山甲聚合广告位‑服务端回调配置 |
| 安全密钥 D------XXXX | 短剧 SDK secure_key_d | 穿山甲短剧 SDK 初始化配置 |
| 后端域名 ------XXXX | 后端服务域名 | 已备案域名,作为接口访问地址 |
| 主域名 / 备用域名 ------XXXX | App 深链接域名 | 使用备案域名,主域名尽量和后端域名一致 |
| app 自定义 scheme------XXXX | APP 唤起协议 | 自定义,用于网页、邀请链接拉起 App |
| APP 来源标识 ------XXXX | 后端区分多 App 标识 | 自定义,多应用场景用来隔离业务数据 |
| 数据库名 / 用户名 / 密码 ------XXXX | MySQL 数据库信息 | 服务器 MySQL 实例自行创建配置 |
| JWT 密钥 ------XXXX | JWT 签名密钥 | 随机生成,至少 256 位字符 |
| 签名相关密码 / 别名 | Android jks 签名文件参数 | 使用 keytool 工具本地生成 |
| 许可证签名、许可证 base64 内容 | 短剧 SDK 授权凭证 | 穿山甲后台下载许可证文件提取 |
⚠️重点提醒:Android 端、后端、广告平台三方关键参数必须完全匹配,是广告正常展示、回调生效的核心前提。
二、Android 客户端配置
项目目录:qianduan/app
1、build.gradle.kts 包名与签名配置
namespace = "app包名------XXXXX"
applicationId = "app包名------XXXXX"
//签名配置
storePassword = "签名密钥库密码------XXXX"
keyAlias = "签名别名------XXXX"
keyPassword = "签名密钥密码------XXXX"
生成 jks 签名文件命令:
keytool -genkeypair -v -keystore coin_app.jks -keyalg RSA -keysize 2048 \
-validity 36500 -alias 你的别名
将生成的coin_app.jks放到qianduan/app/目录下。
2、接口地址与应用来源标识
文件路径:src/main/java/com/txy/gamehtxyzs/kh/sp/api/ApiRetrofit.kt
const val BASE_URL = "https://后端域名------XXXX/"
const val APP_SOURCE = "APP来源标识------XXXX"
APP 来源标识作用:后端通过该字段区分不同 App 上报的数据;单 App 部署可以随便填写字符串,但是后端配置必须和客户端保持一模一样。
3、AndroidManifest.xml 深链接与 Scheme
<data android:scheme="app自定义scheme------XXXX" android:host="invite" />
<data android:scheme="https" android:host="主域名------XXXX" android:pathPrefix="/invite" />
<data android:scheme="https" android:host="备用域名------XXXX" android:pathPrefix="/invite" />
用于邀请页面、网页跳转唤起 App,广告跳转场景强依赖该配置。
4、穿山甲短剧 SDK json 配置
assets 目录下SDK_Setting_*.json为 SDK 初始化配置文件。
{
"init": {
"site_id": "站点ID------XXXX",
"app_id": "APPID------XXXX",
"partner": "pangle_APPID------XXXX",
"secure_key": "安全密钥------XXXX",
"secure_key_d": "安全密钥D------XXXX"
},
"feed": {
"news_draw_ad_code_id": "广告位ID------XXXX"
},
"license_config": [{
"PackageName": "app包名------XXXXX",
"BundleId": "app包名------XXXXX",
"Signature": "许可证签名------XXXX",
"Content": "许可证内容(base64)------XXXX"
}]
}
坑点:
PackageName、BundleId必须和 applicationId 完全一致,否则短剧 SDK 直接初始化失败,广告无法加载。许可证签名和 base64 内容全部来自穿山甲后台下载的许可证文件。
5、腾讯 & 灰鲸广告配置(可选)
项目预留腾讯优量汇、灰鲸聚合广告接入能力,修改HjAdDemo_46820/目录下ConfigInfo.java以及 assets 配置文件,替换包名、APPID、广告位 ID 为广告后台申请的参数。
三、SpringBoot 后端配置
项目目录:houduan
1、application.yml 核心配置
src/main/resources/application.yml
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/数据库名------XXXX?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: 数据库用户名------XXXX
password: 数据库密码------XXXX
jwt:
secret: JWT密钥------XXXX(至少256位的随机字符串)
ad:
security-key: 安全密钥------XXXX
invite:
download-url: https://后端域名------XXXX/invite/download
JWT 密钥生成命令:
# Linux/Mac
openssl rand -base64 48
注意:
JwtUtils.java里面有 jwt.secret 默认兜底值,生产环境不要依赖默认值,务必写在 yml 配置文件中。
2、数据库脚本初始化
执行src/main/resources/schema.sql,替换脚本内部数据库名称,完成业务数据表初始化。 sql/sport_app_master.sql为整合版脚本,sql/migration_*.sql为增量迁移脚本,部署时统一替换库名、账号密码占位符。
3、全局域名统一替换
InviteController.java、AdCallbackController.java、WebMvcConfig.java中域名注释、默认参数全部替换为业务域名,保证广告回调、邀请下载链接正常。
四、Vue 管理后台配置
1、全局请求地址 src/api/request.js
baseURL: window.location.hostname === 'localhost' ? '' : 'https://后端域名------XXXX',
2、开发环境代理 vite.config.js
proxy: {
'/api': { target: 'http://后端域名------XXXX:8081', changeOrigin: true },
'/admin': { target: 'http://后端域名------XXXX:8081', changeOrigin: true }
}
3、打包构建
cd admin
npm install
npm run build
打包产物 dist 目录,直接交由 Nginx 部署。
五、Nginx 反向代理配置
server {
server_name 后端域名------XXXX;
listen 80;
listen 443 ssl;
ssl_certificate 你的ssl证书.pem;
ssl_certificate_key 你的ssl证书.key;
location /api/ { proxy_pass http://127.0.0.1:8080/api/; }
location /admin/ { proxy_pass http://127.0.0.1:8080/admin/; }
location /invite/{ proxy_pass http://127.0.0.1:8080/invite/; }
}
六、Docker Compose 容器部署
修改houduan/docker-compose.yml数据库环境变量
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://MySQL服务器IP:3306/数据库名------XXXX?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
- SPRING_DATASOURCE_USERNAME=数据库用户名------XXXX
- SPRING_DATASOURCE_PASSWORD=数据库密码------XXXX
部署命令
cd houduan
mvn clean package -DskipTests
docker-compose up -d
七、部署检查清单
Android 端
- build.gradle.kts 包名、签名配置完成,jks 签名文件放置正确
- ApiRetrofit.kt 后端域名、APP_SOURCE 标识配置完成
- AndroidManifest.xml Scheme、深链接域名替换完毕
- SDK_Setting_*.json 全部 ID、密钥、许可证参数替换,包名与 applicationId 保持一致
后端
- application.yml 数据库、JWT、广告 security-key 配置
- SQL 脚本执行完成,数据表创建成功
- 后端服务正常启动,端口监听正常
管理后台
- request.js 线上域名、vite 代理配置正确
- npm run build 打包成功
Nginx 与广告回调
- 域名解析、SSL 证书、反向代理路由配置无误
- 广告平台配置回调地址:
https://你的域名/api/ad/callback
八、标准上线顺序
- 穿山甲、腾讯广告后台创建应用、广告位,获取全部 ID、密钥、短剧许可证
- MySQL 执行数据库初始化脚本
- SpringBoot 后端配置完成,启动服务
- Android 替换全部参数,生成签名 APK
- Vue 管理后台打包部署
- Nginx 重载配置,域名代理生效
- 广告平台配置服务端回调地址,完成整体对接
九、常见问题排错
- 短剧 SDK 初始化失败 :优先核对
PackageName、许可证签名,包名必须和广告后台注册完全一致; - 广告回调无数据:检查 Nginx 是否开放外网访问、security‑key 密钥前后端是否一致、回调地址是否填写正确;
- Android 全部接口请求失败:检查 BASE_URL 域名,区分 http 与 https 协议;
- 管理后台接口 404:核对 vite 代理、Nginx 路由转发规则。
总结
这套短剧短视频聚合广告平台同时兼容穿山甲、腾讯等多广告源,具备短剧播放、多广告形态、用户激励、邀请裂变完整业务。项目代码复杂度并不高,绝大多数问题都来自多端参数不一致、占位符没有替换干净、域名路由配置错误。严格按照本文流程逐项配置校验,就可以完成整套项目快速部署上线。