用Android studio运行海外极光推送engagelab安卓的SDK打apk安装包
背景
由于海外极光推送engagelab没有国内这种可以直接下载demo的安装包,需要我们用Android studio运行下载的SDK里面example项目文件打出安装包。
-
国内极光demo下载路径
-
海外极光推送engagelab安卓的SDK下载路径(登录平台->开通AppPush功能->新建应用)
运行项目
-
解压下载的sdk压缩包
-
打开Android studio选择导入example文件夹
-
等待Android studio识别到项目后同步gradle,项目同步会遇到很多问题,详见问题排坑
-
项目同步成功后如果能成功运行,那么就可以打apk包了,在 Android Studio 中点击 Build → Build Bundle(s) / APK(s) → Build APK(s) 后,生成的 APK 文件 默认存放路径在
<你的项目根目录>/app/build/outputs/apk/<构建变体>/
-
记得将包名和appkey改成你创建的应用对应的值
验证应用
-
将apk安装到测试机上,联网后打开app,将获取的注册id(rid)
-
将注册id填到创建的应用控制台中,创建推送通知信息
-
点击推送,app将会收到我们配置的信息
问题排坑
- java的jdk版本不一致,需要配置成正确的版本,我的是11
-
settings->build tools->gradle
-
模块级build.gradle文件中
- 由于网络问题导致 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
- 可能会遇到关于 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。