离线打包设置隐私协议状态

如果离线打包需要自定义隐私协议,为了不影响SDK正常使用,需要用户在同意或拒绝隐私状态时同步到SDK。

  • SDK.setAgreePrivacy(Context context,boolean isAllow)

    设置SDK隐私协议的状态

    支持版本:3.3.1+

  • SDK.isAgreePrivacy(Context context)

    获取SDK隐私协议的状态

    支持版本:3.3.1+

Android 12 适配

离线打包如果将targetSdkVersion设置为31时,在Android 12设备上安装是可能会报如下错误信息

  1. adb: failed to install XXX.apk: Failure [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: Failed parse during installPackageLI: /data/base.apk (at Binary XML file line #173): XXX.XXX.XXX.TestActivity: Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present]

Android 12 中要求包含 intent-filter 的 activity 、 service 或 receiver 必须为这些应用组件显示声明 android:exported 属性,如下所示:

  1. <activity
  2. android:name="XXX.XXX.XXX.TestActivity"
  3. android:exported="true">
  4. <intent-filter>
  5. ......
  6. </intent-filter>
  7. </activity>

如果冲突的组件注册在aar的AndroidManifest.xml中,只需要将组件的注册信息拷贝到主项目,然后添加android:exported=”true”即可

注意:Android系统默认包含 intent-filter 的组件android:exported默认值为true,所以建议将android:exported设置为true

升级到3.2.5以上版本之后离线打包无法正常启动

3.2.5及以上版本支持了Java 8,集成时需要在项目的build.gradle添加如下配置

  1. android {
  2. compileOptions {
  3. sourceCompatibility JavaVersion.VERSION_1_8
  4. targetCompatibility JavaVersion.VERSION_1_8
  5. }
  6. }

3.2.5版本之后更新到AndroidX,老项目需要在gradle.properties添加如下配置

  1. android.useAndroidX=true
  2. android.enableJetifier=true

其余AndroidX依赖库配置可参考Android 原生工程配置

应用启动白屏或者提示打包时未添加ui模块

出现白屏或者提示打包时未添加ui模块时,大多数是因为build.gradle中配置了混淆。

如果您需要使用proguard混淆代码,需确保不要混淆SDK的代码。

混淆配置和混淆文件可以参考SDK中的UniPlugin-Hello-AS项目。

编译报错 style attribute ‘android:attr/forceDarkAllowed’ not found.

当运行原生SDK的时候提示 style attribute ‘android:attr/forceDarkAllowed’ not found. 需要将 compileSdkVersion 设置为 29 或以上

移动安全联盟

HBuilder X 3.1.0升级移动安全联盟SDK到1.0.25版本,集成时需将minSdkVersion调整为21。

gallery 冲突问题

HBuilder X 3.0.7及以上版本,gallery-dmcBig-release.aar相应代码被加入到lib.5plus.base-release.aar,使用时请删除gallery-dmcBig-release.aar库。

离线打包编译报错

如果离线打包编译时提示如下错误,请参考以下做法

  1. Execution failed for task ':hbuilder:checkDebugDuplicateClasses'.
  2. > 1 exception was raised by workers:
  3. java.lang.IllegalStateException: java.lang.IllegalStateException: Worker finished without being first started

将项目根目录下的build.gradle中的gradle插件版本升级到4.1.1

  1. buildscript {
  2. repositories {
  3. jcenter()
  4. google()
  5. }
  6. dependencies {
  7. classpath 'com.android.tools.build:gradle:4.1.1'
  8. }
  9. }

修改项目根目录 gradle/gradle-wrapper.properties 下的gradle的版本到6.5

  1. distributionBase=GRADLE_USER_HOME
  2. distributionPath=wrapper/dists
  3. zipStoreBase=GRADLE_USER_HOME
  4. zipStorePath=wrapper/dists
  5. distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip

离线打包无法调起应用安装界面

如果离线打包调用plus.runtime.install无法调起安装界面,需要在Androidmanifest.xml中添加如下内容

在manifest节点下添加安装应用的权限

  1. <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>

在application节点下添加provider节点

  1. <provider
  2. android:name="io.dcloud.common.util.DCloud_FileProvider"
  3. android:authorities="${apk.applicationId}.dc.fileprovider"
  4. android:exported="false"
  5. android:grantUriPermissions="true">
  6. <meta-data
  7. android:name="android.support.FILE_PROVIDER_PATHS"
  8. android:resource="@xml/dcloud_file_provider" />
  9. </provider>

${apk.applicationId}须替换成应用的包名。

离线打包Android 10上无法启动相机

在application节点下添加provider节点

  1. <provider
  2. android:name="io.dcloud.common.util.DCloud_FileProvider"
  3. android:authorities="${apk.applicationId}.dc.fileprovider"
  4. android:exported="false"
  5. android:grantUriPermissions="true">
  6. <meta-data
  7. android:name="android.support.FILE_PROVIDER_PATHS"
  8. android:resource="@xml/dcloud_file_provider" />
  9. </provider>

${apk.applicationId}须替换成应用的包名。

uni-AD业务状态异常

如果出现uni-AD业务状态异常提醒,如下图:

avatar

请删除掉未申请的平台的相关配置和aar,例如广告后台添加了穿山甲广告,但没有添加360和广点通的广告,请删除掉广点通和360的相关配置和aar。

x5配置

如果需要使用x5内核,将webview-x5-release.aar拷贝到libs目录下,直接运行即可。

uni-app将webview-x5-release.aar和weex_webview-x5-release.aar拷贝到libs目录下即可。

推送上传谷歌市场注意事项

Android离线SDK解决使用UniPush和个推推送违反谷歌应用商店(GooglePlay)个人和敏感信息政策的问题

高德地图上传谷歌市场注意事项

如需上传谷歌市场,将原来的amap-libs-release.aar替换成amap-gp-libs-release.aar即可。

uni-app离线打包注意事项

uni-app离线打包Android平台注意事项

重写application

如果集成离线SDK时需要重写application,必须继承自DCloudApplication,否则会导致SDK中业务逻辑无法正常运行。

将对应的application配置到Androidmanifest.xml中(如下),并添加tools:replace=”android:name”以防出现冲突。

  1. <application
  2. android:name="io.dcloud.test.TestApplication"
  3. android:icon="@drawable/icon"
  4. android:label="@string/app_name"
  5. tools:replace="android:name">
  6. </application>

添加so库

如果需要集成的第三方sdk存在so库文件,只需添加armeabi-v7a、arm64-v8a、x86三个文件夹即可,如果添加其他文件夹会导致在部分手机上无法运行。

打包aab运行白屏

请按以下配置修改:

1、原生项目主app的AndroidManifest.xml中。application节点配置android:extractNativeLibs=”true”。

2、原生项目根目录 gradle.properties 配置android.bundle.enableUncompressedNativeLibs=false

重新编译打包