当前位置: 首页 > backend >正文

用Android studio运行海外极光推送engagelab安卓的SDK打apk安装包

背景

由于海外极光推送engagelab没有国内这种可以直接下载demo的安装包,需要我们用Android studio运行下载的SDK里面example项目文件打出安装包。

  • 国内极光demo下载路径
    在这里插入图片描述

  • 海外极光推送engagelab安卓的SDK下载路径(登录平台->开通AppPush功能->新建应用)
    在这里插入图片描述

运行项目

  1. 解压下载的sdk压缩包

  2. 打开Android studio选择导入example文件夹
    在这里插入图片描述

  3. 等待Android studio识别到项目后同步gradle,项目同步会遇到很多问题,详见问题排坑

  4. 项目同步成功后如果能成功运行,那么就可以打apk包了,在 Android Studio 中点击 Build → Build Bundle(s) / APK(s) → Build APK(s) 后,生成的 APK 文件 默认存放路径在<你的项目根目录>/app/build/outputs/apk/<构建变体>/

  5. 记得将包名和appkey改成你创建的应用对应的值
    在这里插入图片描述

验证应用

  1. 将apk安装到测试机上,联网后打开app,将获取的注册id(rid)
    在这里插入图片描述

  2. 将注册id填到创建的应用控制台中,创建推送通知信息
    在这里插入图片描述

  3. 点击推送,app将会收到我们配置的信息
    在这里插入图片描述

问题排坑

  1. java的jdk版本不一致,需要配置成正确的版本,我的是11
  • settings->build tools->gradle
    在这里插入图片描述

  • 模块级build.gradle文件中
    在这里插入图片描述

  1. 由于网络问题导致 Gradle 从官方源和 Maven 官方仓库下载依赖包。下载失败,国内访问官方源经常会出现连接超时的情况。需要在项目级build.gradle文件和全局配置文件gradle-wrapper.properties中换阿里镜像。
  • 报错信息
Could not install Gradle distribution from 'https://services.gradle.org/distributions/gradle-6.5-all.zip'.
Reason: java.net.SocketTimeoutException: Connect timed out
  • 打开你项目根目录下的 build.gradle(项目级),找到 repositories 配置,添加或替换为国内镜像源:
    在这里插入图片描述
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {repositories {// 使用阿里云镜像maven { url 'https://maven.aliyun.com/repository/central' }maven { url 'https://maven.aliyun.com/repository/google' }google()mavenCentral()// huawei push needmaven { url 'https://developer.huawei.com/repo/' }}dependencies {classpath 'com.android.tools.build:gradle:7.4.2'// google push need,and google push need AndroidXclasspath 'com.google.gms:google-services:4.3.15'// huawei push needclasspath 'com.huawei.agconnect:agcp:1.6.0.300'}
}allprojects {repositories {maven { url 'https://maven.aliyun.com/repository/central' }maven { url 'https://maven.aliyun.com/repository/google' }google()mavenCentral()// huawei push needmaven { url 'https://developer.huawei.com/repo/' }}
}
  • 打开项目根目录下的文件:gradle/wrapper/gradle-wrapper.properties,将其修改为国内镜像地址
    在这里插入图片描述
#Mon Dec 07 16:34:01 CST 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-7.6.1-all.zip
#distributionUrl=https\://srvices.gradle.org/distributions/gradle-6.5-all.zip
  1. 可能会遇到关于 R8(代码混淆) 的报错,R8(代码混淆) 的配置或依赖未正确解析时,会导致任务创建失败。因为sdk中用的是 Gradle 6.5,这个版本较旧,可能与我的jdk11不兼容,需要升级,需要修改Gradle为7.6.1和Android Gradle Plugin (AGP)为7.4.2
  • 报错信息
Could not resolve all dependencies for configuration ':app:debugRuntimeClasspath'.
Could not create task ':app:minifyDebugWithR8'.
Cannot query the value of this provider because it has no value available.
Could not resolve all dependencies for configuration ':app:debugRuntimeClasspath'.
Could not create task ':app:minifyReleaseWithR8'.
Cannot query the value of this provider because it has no value available.
  • 修改 gradle/wrapper/gradle-wrapper.properties:
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-7.6.1-all.zip

在这里插入图片描述

  • 修改项目根目录 build.gradle:
classpath 'com.android.tools.build:gradle:7.4.2'

在这里插入图片描述
总是就是你的jdk,Gradle和Android Gradle Plugin (AGP)三者的版本需要兼容
6. Failed to find Platform SDK with path: platforms;android-30,这个错误的意思是:当前项目把 compileSdkVersion 设成了 30,但你的电脑里并没有下载 Android 30(即 Android 11)对应的 Platform SDK,所以编译器找不到 android-30 的 android.jar。
解决方法
(1)打开 Android Studio。
(2)点击菜单栏 Tools → SDK Manager(或 File → Settings → Appearance & Behavior → System Settings → Android SDK)。
(3)进入 SDK Platforms 标签页。
(4)勾选右侧 Show Package Details。
(5)在列表中找到 Android 11.0 ®,勾选 Android 11.0 ® → Android SDK Platform 30。
(6)点击 Apply 或 OK,等待下载完成即可 。
在这里插入图片描述
7. 解决完问题,同步并重新构建项目

  • 回到 Android Studio,点击 File → Sync Project with Gradle Files。
  • 然后再执行 Build → Rebuild Project。
http://www.xdnf.cn/news/20270.html

相关文章:

  • Ribbon和LoadBalance-负载均衡
  • 从Java全栈到前端框架:一次真实面试的深度复盘
  • 验证平台中所有的组件应该派生自UVM中的类
  • 设计艺术~缓存结构设计
  • 【Go项目基建】GORM框架实现SQL校验拦截器(完整源码+详解)
  • C++和OpenGL实现3D游戏编程【连载30】——文字的多行显示
  • MySQL集群——主从复制进阶
  • 2025年上海市星光计划第十一届职业院校技能大赛高职组“信息安全管理与评估”赛项交换部分前6题详解(仅供参考)
  • FlashAttention:突破Transformer内存瓶颈的IO感知革命
  • Web漏洞挖掘篇(二)—信息收集
  • 浪潮CD1000-移动云电脑-RK3528芯片-2+32G-安卓9-2种开启ADB ROOT刷机教程方法
  • Chat with RTX-NVIDIA推出的本地AI聊天机器人
  • .NET Core 应用部署深度解析:从 IIS 到 Docker+Kestrel 的迁移与性能优化实战
  • 电脑音频录制 | 系统麦克混录 / 系统声卡直录 | 方法汇总 / 常见问题
  • Unity与硬件交互终极指南:从Arduino到自定义USB设备
  • 零基础Linux操作基础小白快速掌握Shell脚本--流程控制和循环(二)
  • CAD:注释
  • PPTist,一个完全免费的 AI 生成 PPT 在线网站
  • 贪心算法应用:流行病干预策略问题详解
  • redis的数据类型:Hash
  • 【数据结构】带哨兵位双向循环链表
  • 50系显卡训练深度学习YOLO等算法报错的解决方法
  • 《动手学深度学习v2》学习笔记 | 2.4 微积分 2.5 自动微分
  • 深度学习——PyTorch保存模型与调用模型
  • JUC之并发编程
  • MyBatis入门到精通:CRUD实战指南
  • 使用UniApp实现下拉框和表格组件页面
  • Android Kotlin 动态注册 Broadcast 的完整封装方案
  • uv教程 虚拟环境
  • kotlin - 2个Fragment实现左右显示,左边列表,右边详情,平板横、竖屏切换