Appearance
接入指南
概述
本页主要介绍工程配置注册事项
1. Gradle 依赖
在 App 的 build.gradle 文件中加入对应的依赖
java
implementation 'io.github.adgocompany:unad_cn:2.6.9.4'
2. 配置 maven
java
maven {
url "https://s01.oss.sonatype.org/content/repositories/releases/"
}
maven {
url "https://jfrog.takuad.com/artifactory/china_sdk"
}
maven {
url "https://artifact.bytedance.com/repository/pangle"
}
maven {
url "https://maven.aliyun.com/repository/public"
}
maven {
url "https://repos.xiaomi.com/maven"
credentials {
username 'mimo-developer'
password 'AKCp8ih1PFG9tV8qaLyws67dLGZi8udFM39SfsHgihN15cgsiRvHuxj8JzFmuZjaViVeNawaA'
}
}
maven {
url "https://jitpack.io"
}
maven {
url "https://developer.huawei.com/repo/"
}
maven {
url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_support"
}
mavenCentral()
google()
3. 初始化 SDK
注意:在 Application 的 onCreate
方法中调用初始化方法,传入 UNAD 的 appid
单进程进行初始化
测试 TEST_APPID 应用上线时请替换为正式的 applicationId
java
请主线程中初始化unad,参考DEMO
UNAD.initialize(new UNADConfig.Builder()
// true-屏蔽个性化推荐广告(关闭)
//false-不屏蔽个性化推荐广告(打开)
//默认false
.disablePersonalRecommand(false)
.setDebug(true).build(),
"TEST_APPID", this, new UNAD.InitCallback() {
@Override
public void onSuccess() {
Log.e("unadsdk", "UI:onSuccess");
}
@Override
public void onError(UnadError error) {
Log.e("unadsdk", "UI:onError");
}
});
4. 修改 AndroidManifest.xml 文件, 添加必要权限
添加访问权限
在 AndroidManifest.xml 文件中添加
SDK 不强制校验下列权限(即:无下面权限 sdk 也可正常工作),但建议开发者申请下面权限,尤其是 READ_PHONE_STATE 权限 READ_PHONE_STATE 权限用于允许 SDK 获取用户标识
xml
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<!--获取设备标识IMEI。⽤于标识⽤户-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 如果需要精确定位的话请加上此权限 不强制要求-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 如果视频广告使用textureView播放,请务必添加,否则黑屏 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- 此权限在Android R系统上判定广告对应的应用是否在用户的app上安装,避免投放错误的广告,以此提高用户的广告体验。若添加此权限,需要在您的用户隐私文档中声明! -->
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
<!--获取MAC地址,⽤于标识⽤户-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--SDK内自定义的权限,与下载相关,aar中已经申请 快手需要-->
<permission
android:name="${applicationId}.permission.KW_SDK_BROADCAST"
android:protectionLevel="signature" />
<uses-permission android:name="${applicationId}.permission.KW_SDK_BROADCAST" />
添加 APPLICATION_ID 配置
在 AndroidManifest.xml 文件的 application 节点下添加以下文件,其对应的 xml 文件可在 demo 中获取。
注意 applicationId 应该与您的应用包名一样,不一致可能会闪退
xml
<uses-library android:name="org.apache.http.legacy" android:required="false" />
<uses-sdk tools:overrideLibrary="com.octopus.ad" />
<!-- source file: china/network_sdk/gdt/4.630.1500/AndroidManifest.xml -->
<provider
android:name="com.qq.e.comm.GDTFileProvider"
android:authorities="${applicationId}.gdt.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/gdt_file_path" />
</provider>
<!-- source file: china/network_sdk/csj/6.7.0.7/AndroidManifest.xml -->
<provider
android:name="com.bytedance.sdk.openadsdk.TTFileProvider"
android:authorities="${applicationId}.TTFileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/adgo_file_paths" />
</provider>
<provider
android:name="com.bytedance.sdk.openadsdk.multipro.TTMultiProvider"
android:authorities="${applicationId}.TTMultiProvider"
android:exported="false" />
<!-- source file: china/network_sdk/sigmob/4.21.1/AndroidManifest.xml -->
<provider
android:name="com.sigmob.sdk.SigmobFileV4Provider"
android:authorities="${applicationId}.sigprovider"
android:exported="false"
android:initOrder="200"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/sigmob_file_path"/>
</provider>
<!-- source file: china/network_sdk/klevin/2.11.0.3/AndroidManifest.xml -->
<provider
android:name="com.tencent.klevin.utils.FileProvider"
android:authorities="${applicationId}.klevin.fileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/klevin_file_path"/>
</provider>
<!-- h5广告入口 -->
<activity
android:name="com.unad.sdk.GameAdActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="stateHidden|stateAlwaysHidden"
>
</activity>
build.gradle 添加 Java 1.8 兼容性
java
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
packagingOptions {
exclude 'META-INF/io.netty.versions.properties' // will not include LICENSE file
exclude 'META-INF/INDEX.LIST' // will not include INDEX.LIST file
}
5. 混淆
如果需要混淆,添加下面配置
-ignorewarnings
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
#unad
-keep class com.unad.sdk.** {*;}
#aliyun
-keep class com.aliyun.sls.android.producer.* { *; }
-keep interface com.aliyun.sls.android.producer.* { *; }
-dontwarn com.androidquery.**
-keep class com.androidquery.** { *;}
-dontwarn tv.danmaku.**
-keep class tv.danmaku.** { *;}
-dontwarn androidx.**
#tbs版本的sdk需要进行以下配置
-keep class com.tencent.smtt.** { *; }
-dontwarn dalvik.**
-dontwarn com.tencent.smtt.**
-keep class com.tencent.mm.opensdk.** {
*;
}
-keep class com.tencent.wxop.** {
*;
}
-keep class com.tencent.mm.sdk.** {
*;
}
# 穿山甲
-keep class com.pgl.sys.ces.** {*;}
-keep class com.bytedance.embed_dr.** {*;}
-keep class com.bytedance.embedapplog.** {*;}
-keep class com.bytedance.sdk.openadsdk.** { *; }
-keep class com.androidquery.callback.** {*;}
-keep public interface com.bytedance.sdk.openadsdk.downloadnew.** {*;}
-keep class com.ss.sys.ces.* {*;}
-dontwarn com.ss.android.socialbase.downloader.**
-dontwarn com.ss.android.crash.log.**
# MTG
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.mintegral.** {*; }
-keep interface com.mintegral.** {*; }
-keep class android.support.v4.** { *; }
-dontwarn com.mintegral.**
-keep class **.R$* { public static final int mintegral*; }
-keep class com.alphab.** {*; }
-keep interface com.alphab.** {*; }
# 快手
-keep class org.chromium.** {*;}
-keep class org.chromium.** { *; }
-keep class aegon.chrome.** { *; }
-keep class com.kwai.**{ *; }
-dontwarn com.kwai.**
-dontwarn com.kwad.**
-dontwarn com.ksad.**
-dontwarn aegon.chrome.**
-keep class com.kwad.sdk.** { *;}
-keep class com.ksad.download.** { *;}
-keep class com.kwai.filedownloader.** { *;}
# qapm 平台
-keep class com.tencent.qapmsdk.**{*;}
-dontwarn com.tencent.qapmsdk.**
-dontnote com.tencent.qapmsdk.**
-ignorewarnings
#klevin
-keep class com.tencent.tgpa.lite.**{*;}
-keep class com.ihoc.mgpa.deviceid.**{*;}
-keep class com.tencent.klevin.**{*;}
#baidu
-dontwarn com.baidu.mobads.sdk.api.**
-keep class com.baidu.ad.magic.flute.** {*;}
-keep class com.baidu.mobstat.forbes.** {*;}
-keep class com.baidu.mobads.** { *; }
########### 移动安全联盟 OAID 混淆要求 begin ########
-keep class XI.CA.XI.**{*;}
-keep class XI.K0.XI.**{*;}
-keep class XI.XI.K0.**{*;}
-keep class XI.vs.K0.**{*;}
-keep class XI.xo.XI.XI.**{*;}
-keep class com.asus.msa.SupplementaryDID.**{*;}
-keep class com.asus.msa.sdid.**{*;}
-keep class com.bun.lib.**{*;}
-keep class com.bun.miitmdid.**{*;}
-keep class com.huawei.hms.ads.identifier.**{*;}
-keep class com.samsung.android.deviceidservice.**{*;}
-keep class com.zui.opendeviceidlibrary.**{*;}
-keep class org.json.**{*;}
-keep public class com.netease.nis.sdkwrapper.Utils {
public<methods>;
}
########### 移动安全联盟 OAID 混淆要求 end ########
#京东sdk混淆规则
-keep class com.jd.ad.sdk.** { *; }
-keep class com.koms.fert.co.mpd.**{*;}
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-dontwarn com.octopus.ad.**
-keep class com.octopus.ad.** {*;}
# 使用Glide要添加的混淆
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
-keep class com.squareup.picasso.** { *; }
#tanx混淆
##优化配置,可进行字段优化、内联、类合并、代码简化、算法指令精简等操作。
-optimizations code/removal/simple,code/removal/advanced,method/removal/parameter,method/inlining/short,method/inlining/tailrecursion
##执行优化的次数,默认1次,多次能达到更好的优化效果。
-optimizationpasses 5
# 混合时不使用大小写混合,混合后的类名为小写
-dontusemixedcaseclassnames
#保持参数名 指定keep已经被keep的方法的参数类型和参数名称,在混淆library库时非常有用,可供IDE帮助用户进行信息提示和代码自动填充。
-keepparameternames
#指定保留属性,多个属性可以用多个-keepattributes配置,也可以用逗号分隔,可以使用? * **通配符,并且可以使用否定符(!)。
#比如,在混淆ibrary库时,应该至少keep Exceptions, InnerClasses, Signature;如果在追踪代码,还需要keep符号表;使用到注解时也需要keep。
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
#优化时允许访问并修改有修饰符的类和类的成员, 混淆后的类名还会改变地方,到其他包中 需要,所有被混淆的都到一个包去,不需要保留原来的结构
-allowaccessmodification
#混淆前后类、方法、类成员等的对照
-printmapping mapping.txt
##屏蔽警告
-ignorewarnings
#指定在混淆过程中输出更多信息,配置这个选项后,在遇到异常时,将输出完整的堆栈,而不仅仅是异常消息
-verbose
# 指定不去忽略非公共的库类(不跳过library中的非public的类)
-dontskipnonpubliclibraryclasses
#指定不去忽略非公共库的类成员
-dontskipnonpubliclibraryclassmembers
-dontwarn com.alibaba.fastjson.**
-keep class com.alibaba.fastjson.**{*;}
-keep class com.bumptech.glide.**{*;}
-keep class com.alimm.tanx.**{*;}
# 自动曝光数据的防混淆
-keep class * implements java.io.Serializable{
<fields>;
<methods>;
}
# Taku(AnyThink) SDK混淆规则
-keep public class com.anythink.**
-keepclassmembers class com.anythink.** {
*;
}
-keep public class com.anythink.network.**
-keepclassmembers class com.anythink.network.** {
public *;
}
-dontwarn com.anythink.hb.**
-keep class com.anythink.hb.**{ *;}
-dontwarn com.anythink.china.api.**
-keep class com.anythink.china.api.**{ *;}
-keep class com.anythink.myoffer.ui.**{ *;}
-keepclassmembers public class com.anythink.myoffer.ui.** {
public *;
}
-ignorewarnings
-dontwarn com.baidu.mobads.sdk.api.**
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class com.baidu.mobads.** { *; }
-keep class com.style.widget.** {*;}
-keep class com.component.** {*;}
-keep class com.baidu.ad.magic.flute.** {*;}
-keep class com.baidu.mobstat.forbes.** {*;}
-keepnames class android.support.v7.widget.RecyclerView$* {
public <fields>;
public <methods>;
}
-keep class com.tencent.mm.opensdk.** {
*;
}
-keep class com.tencent.wxop.** {
*;
}
-keep class com.tencent.mm.sdk.** {
*;
}
-keep class org.chromium.** {*;}
-keep class org.chromium.** { *; }
-keep class aegon.chrome.** { *; }
-keep class com.kwai.**{ *; }
-dontwarn com.kwai.**
-dontwarn com.kwad.**
-dontwarn com.ksad.**
-dontwarn aegon.chrome.**
# 优化 不优化输入的类文件
-dontoptimize
# androidx
-keep class com.google.android.material.** {*;}
-keep class androidx.** {*;}
-keep public class * extends androidx.**
-keep interface androidx.** {*;}
-dontwarn com.google.android.material.**
-dontnote com.google.android.material.**
-dontwarn androidx.**
# android.support.v4
-dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }
-keep interface android.support.v4.** { *; }
-keep public class * extends android.support.v4.**
# WindAd
-keep class com.sigmob.sdk.**{ *;}
-keep interface com.sigmob.sdk.**{ *;}
-keep class com.sigmob.windad.**{ *;}
-keep interface com.sigmob.windad.**{ *;}
-keep class com.czhj.**{ *;}
-keep interface com.czhj.**{ *;}
-keep class com.tan.mark.**{*;}
# miitmdid
-dontwarn com.bun.**
-keep class com.bun.** {*;}
-keep class a.**{*;}
-keep class XI.CA.XI.**{*;}
-keep class XI.K0.XI.**{*;}
-keep class XI.XI.K0.**{*;}
-keep class XI.vs.K0.**{*;}
-keep class XI.xo.XI.XI.**{*;}
-keep class com.asus.msa.SupplementaryDID.**{*;}
-keep class com.asus.msa.sdid.**{*;}
-keep class com.huawei.hms.ads.identifier.**{*;}
-keep class com.samsung.android.deviceidservice.**{*;}
-keep class com.zui.opendeviceidlibrary.**{*;}
-keep class org.json.**{*;}
-keep public class com.netease.nis.sdkwrapper.Utils {public <methods>;}
-keepclassmembers class * {
*** getContext(...);
*** getActivity(...);
*** getResources(...);
*** startActivity(...);
*** startActivityForResult(...);
*** registerReceiver(...);
*** unregisterReceiver(...);
*** query(...);
*** getType(...);
*** insert(...);
*** delete(...);
*** update(...);
*** call(...);
*** setResult(...);
*** startService(...);
*** stopService(...);
*** bindService(...);
*** unbindService(...);
*** requestPermissions(...);
*** getIdentifier(...);
}
-keep class com.bytedance.pangle.** {*;}
-keep class com.bytedance.sdk.openadsdk.** { *; }
-keep class ms.bd.c.Pgl.**{*;}
-keep class com.bytedance.mobsec.metasec.ml.**{*;}
-keep class com.bytedance.embedapplog.** {*;}
-keep class com.bytedance.embed_dr.** {*;}
-keep class com.bykv.vk.** {*;}
-keep class com.lynx.** { *; }
-keep class com.ss.android.**{*;}
-keep class androidx.fragment.app.FragmentActivity{}
-keep class com.opos.** { *;}
-keep class com.heytap.msp.mobad.** { *;}
-keep class com.heytap.openid.** {*;}
-keep class okio.**{ *; }
-keeppackagenames com.heytap.nearx.tapplugin
-dontwarn com.alibaba.fastjson.**
-keep class com.alibaba.fastjson.**{*;}
-keep class com.bumptech.glide.**{*;}
-keep class com.alimm.tanx.**{*;}
# 有进程间通信,保证service相关不被混淆
#-keep public class * extends android.app.Service
#-keep public class * extends android.content.BroadcastReceiver
# 自动曝光数据的防混淆
-keep class * implements java.io.Serializable{
<fields>;
<methods>;
}
# klevinAd
-keep class com.tencent.tgpa.**{*;}
-keep class com.tencent.klevin.**{*;}
# Analytics SDK
-keep class com.miui.analytics.** { *; }
-keep class com.xiaomi.analytics.* { public protected *; }
# Mediation SDK
-keep class com.xiaomi.ad.mediation.** { *; }
#Ad SDK
-keep class com.miui.zeus.mimo.sdk.** { *; }
-keep class com.google.gson.examples.android.model.** { <fields>; }
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer
-keep class * extends android.os.IInterface{
*;
}
-keep class com.jd.ad.sdk.** { *; }
-keepattributes SourceFile,LineNumberTable
-dontwarn com.squareup.okhttp.**
-dontwarn okhttp3.**
-keep class com.vivo.*.** { *; }
-dontwarn com.bytedance.article.common.nativecrash.NativeCrashInit
-keep class com.bytedance.sdk.openadsdk.** {*;}
-keep public interface com.bytedance.sdk.openadsdk.downloadnew.** {*;}
-keep class com.pgl.sys.ces.* {*;}
-keep class com.qq.e.** {
public protected *;
}
-keep class android.support.v4.**{
public *;
}
-keep class android.support.v7.widget.** {*;}
-dontwarn com.vivo.secboxsdk.**
-keep class com.vivo.secboxsdk.SecBoxCipherException { *; }
-keep class com.vivo.secboxsdk.jni.SecBoxNative { *; }
-keep class com.vivo.secboxsdk.BuildConfig { *; }
-keep class com.vivo.advv.**{*;}
-keep class com.kwad.sdk.** { *;}
-keep class com.ksad.download.** { *;}
-keep class com.kwai.filedownloader.** { *;}
# sdk
-keep class com.bun.miitmdid.** { *; }
-keep interface com.bun.supplier.** { *; }
# asus
-keep class com.asus.msa.SupplementaryDID.** { *; }
-keep class com.asus.msa.sdid.** { *; }
# freeme
-keep class com.android.creator.** { *; }
-keep class com.android.msasdk.** { *; }
# huawei
-keep class com.huawei.hms.ads.** { *; }
-keep interface com.huawei.hms.ads.** {*; }
# lenovo
-keep class com.zui.deviceidservice.** { *; }
-keep class com.zui.opendeviceidlibrary.** { *; }
# meizu
-keep class com.meizu.flyme.openidsdk.** { *; }
# nubia
-keep class com.bun.miitmdid.provider.nubia.NubiaIdentityImpl { *; }
# oppo
-keep class com.heytap.openid.** { *; }
# samsung
-keep class com.samsung.android.deviceidservice.** { *; }
# vivo
-keep class com.vivo.identifier.** { *; }
# xiaomi
-keep class com.bun.miitmdid.provider.xiaomi.IdentifierManager { *; }
# zte
-keep class com.bun.lib.** { *; }
# coolpad
-keep class com.coolpad.deviceidsupport.** { *; }
# ---------掌酷 SDK--------------
-keep class com.wrapper.ZkViewSDK {
public <fields>;
public <methods>;
}
-keep class com.wrapper.ZkViewSDK$ActionCallBack {
public <fields>;
public <methods>;
}
# 保留枚举类不被混淆
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class com.wrapper.ZkViewSDK$KEY {
public <fields>;
public <methods>;
}
-keep class com.wrapper.ZkViewSDK$Event {
public <fields>;
public <methods>;
}
-keeppackagenames com.zk.**
# ---------掌酷 SDK--------------
#huawei
-keep class com.huawei.openalliance.ad.** { *; }
-keep class com.huawei.hms.ads.** { *; }
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.mbridge.** {*; }
-keep interface com.mbridge.** {*; }
-keep class android.support.v4.** { *; }
-dontwarn com.mbridge.**
-keep class **.R$* { public static final int mbridge*; }
-keep class com.qq.e.** {
public protected *;
}
-keep class android.support.v4.**{
public *;
}
-keep class android.support.v7.**{
public *;
}
-keep class com.tencent.** {
*;
}
-dontwarn dalvik.**
-dontwarn com.tencent.smtt.**
-dontwarn com.tapadn.**
-keep class com.tapadn.** { *;}
-dontshrink
如果您的应⽤启⽤了资源混淆或资源缩减(shrinkResources),则需要在res/raw路径下加一个keep.xml,内容可参考demo 中 keep.xml 文件,如下:
xml
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@drawable/adgo_*,@drawable/unad_*,@anim/unad_*,@layout/unad_*,@string/anythink_*,@drawable/anythink_*,@layout/anythink_*,@id/anythink_*,@dimen/anythink_*,@style/anythink_*,@color/anythink_*,@string/ksad_*,@drawable/ksad_*,@layout/ksad_*,@id/ksad_*,@style/ksad_*,@color/ksad_*,@attr/ksad_*,@dimen/ksad_*,@anim/bullet_bottom_dialog_enter,@anim/bullet_bottom_dialog_exit,@anim/cj_pay_activity_add_in_animation,@anim/cj_pay_activity_fade_in_animation,@anim/cj_pay_activity_fade_out_animation,@anim/cj_pay_activity_remove_out_animation,@anim/cj_pay_expo_easeout_interpolator,@anim/cj_pay_fragment_down_out_animation,@anim/cj_pay_fragment_up_in_animation,@anim/cj_pay_quadratic_easein_interpolator,@anim/cj_pay_slide_in_from_bottom_with_bezier,@anim/cj_pay_slide_out_to_bottom_with_bezier,@anim/cj_pay_slide_right_in,@anim/ec_alpha_in,@anim/ec_alpha_out,@anim/ec_base_enter,@anim/ec_base_exit,@anim/ec_bottom_in,@anim/ec_bottom_out,@anim/ec_commerce_activity_in,@anim/ec_commerce_activity_out,@anim/ec_commerce_pre_out,@anim/ec_pop_bottom_in,@anim/ec_pop_bottom_out,@anim/ec_pop_slide_in,@anim/ec_pop_slide_out,@anim/ec_slide_in,@anim/ec_slide_out,@anim/ec_zoom_in,@anim/ec_zoom_out,@anim/shopping_popup_fade_in,@anim/shopping_popup_fade_out,@anim/ttlive_alpha_in,@anim/ttlive_alpha_out,@anim/ttlive_dialog_popup_enter,@anim/ttlive_dialog_popup_exit,@anim/ttlive_popup_enter,@anim/ttlive_popup_exit,@anim/ttlive_slide_in_bottom,@anim/ttlive_slide_in_bottom_fast,@anim/ttlive_slide_in_bottom_normal,@anim/ttlive_slide_in_left,@anim/ttlive_slide_in_right,@anim/ttlive_slide_in_top,@anim/ttlive_slide_out_bottom,@anim/ttlive_slide_out_bottom_fast,@anim/ttlive_slide_out_bottom_normal,@anim/ttlive_slide_out_left,@anim/ttlive_slide_out_right,@anim/ttlive_slide_out_top,@color/ec_store_window_background,@color/tt_appdownloader_notification_material_background_color,@color/tt_appdownloader_notification_title_color,@color/tt_appdownloader_s1,@color/tt_appdownloader_s13,@color/tt_appdownloader_s18,@color/tt_appdownloader_s4,@color/tt_appdownloader_s8,@color/ttdownloader_transparent,@drawable/tt_appdownloader_action_bg,@drawable/tt_appdownloader_action_new_bg,@drawable/tt_appdownloader_ad_detail_download_progress,@drawable/tt_appdownloader_detail_download_success_bg,@drawable/tt_appdownloader_download_progress_bar_horizontal,@drawable/tt_appdownloader_download_progress_bar_horizontal_new,@drawable/tt_appdownloader_download_progress_bar_horizontal_night,@drawable/ttdownloader_bg_appinfo_btn,@drawable/ttdownloader_bg_appinfo_dialog,@drawable/ttdownloader_bg_button_blue_corner,@drawable/ttdownloader_bg_kllk_btn1,@drawable/ttdownloader_bg_kllk_btn2,@drawable/ttdownloader_bg_transparent,@drawable/ttdownloader_bg_white_corner,@drawable/ttdownloader_dash_line,@drawable/ttdownloader_icon_back_arrow,@drawable/ttdownloader_icon_download,@drawable/ttdownloader_icon_yes,@id/auto,@id/cancel_tv,@id/confirm_tv,@id/dash_line,@id/delete_tv,@id/iv_app_icon,@id/iv_detail_back,@id/iv_privacy_back,@id/line,@id/ll_download,@id/message_tv,@id/permission_list,@id/privacy_webview,@id/title_bar,@id/tt_appdownloader_action,@id/tt_appdownloader_desc,@id/tt_appdownloader_download_progress,@id/tt_appdownloader_download_progress_new,@id/tt_appdownloader_download_size,@id/tt_appdownloader_download_status,@id/tt_appdownloader_download_success,@id/tt_appdownloader_download_success_size,@id/tt_appdownloader_download_success_status,@id/tt_appdownloader_download_text,@id/tt_appdownloader_icon,@id/tt_appdownloader_root,@id/tv_app_detail,@id/tv_app_developer,@id/tv_app_name,@id/tv_app_privacy,@id/tv_app_version,@id/tv_empty,@id/tv_give_up,@id/tv_permission_description,@id/tv_permission_title,@layout/tt_appdownloader_notification_layout,@layout/ttdownloader_activity_app_detail_info,@layout/ttdownloader_activity_app_privacy_policy,@layout/ttdownloader_dialog_appinfo,@layout/ttdownloader_dialog_select_operation,@layout/ttdownloader_item_permission,@string/tt_appdownloader_button_cancel_download,@string/tt_appdownloader_button_queue_for_wifi,@string/tt_appdownloader_button_start_now,@string/tt_appdownloader_download_percent,@string/tt_appdownloader_download_remaining,@string/tt_appdownloader_download_unknown_title,@string/tt_appdownloader_duration_hours,@string/tt_appdownloader_duration_minutes,@string/tt_appdownloader_duration_seconds,@string/tt_appdownloader_jump_unknown_source,@string/tt_appdownloader_label_cancel,@string/tt_appdownloader_label_cancel_directly,@string/tt_appdownloader_label_ok,@string/tt_appdownloader_label_reserve_wifi,@string/tt_appdownloader_notification_download,@string/tt_appdownloader_notification_download_complete_open,@string/tt_appdownloader_notification_download_complete_with_install,@string/tt_appdownloader_notification_download_complete_without_install,@string/tt_appdownloader_notification_download_continue,@string/tt_appdownloader_notification_download_delete,@string/tt_appdownloader_notification_download_failed,@string/tt_appdownloader_notification_download_install,@string/tt_appdownloader_notification_download_open,@string/tt_appdownloader_notification_download_pause,@string/tt_appdownloader_notification_download_restart,@string/tt_appdownloader_notification_download_resume,@string/tt_appdownloader_notification_download_space_failed,@string/tt_appdownloader_notification_download_waiting_net,@string/tt_appdownloader_notification_download_waiting_wifi,@string/tt_appdownloader_notification_downloading,@string/tt_appdownloader_notification_install_finished_open,@string/tt_appdownloader_notification_insufficient_space_error,@string/tt_appdownloader_notification_need_wifi_for_size,@string/tt_appdownloader_notification_no_internet_error,@string/tt_appdownloader_notification_no_wifi_and_in_net,@string/tt_appdownloader_notification_paused_in_background,@string/tt_appdownloader_notification_pausing,@string/tt_appdownloader_notification_prepare,@string/tt_appdownloader_notification_request_btn_no,@string/tt_appdownloader_notification_request_btn_yes,@string/tt_appdownloader_notification_request_message,@string/tt_appdownloader_notification_request_title,@string/tt_appdownloader_notification_waiting_download_complete_handler,@string/tt_appdownloader_resume_in_wifi,@string/tt_appdownloader_tip,@string/tt_appdownloader_wifi_recommended_body,@string/tt_appdownloader_wifi_recommended_title,@string/tt_appdownloader_wifi_required_body,@string/tt_appdownloader_wifi_required_title,@style/AlphaAnimation,@style/BottomAnimation,@style/Bullet.Bottom.Dialog.Animation,@style/Dialog.BottomSheet.Transparent,@style/ECBaseDialogFragmentAnimation,@style/ECBottomInWindowAnimation,@style/ECBottomOutWindowAnimation,@style/ECHalfScreenAnchorV4Anime,@style/ECSlideInWindowAnimation,@style/ECSlideOutWindowAnimation,@style/EC.Widget.Design.BottomSheet.Modal,@style/ExpandAnimation,@style/PopupWindowFadeAnimationStyle,@style/SKUPanelDialogAnimation,@style/SlideAnimation,@style/StoreAppBottomSheetStyle,@style/bottom_sheet_anime,@style/commerce_dialog_dim_non_enter_animation,@style/ec_plugin_progress_dialog,@style/ec_sku_prerender_dialog_anim,@style/tt_appdownloader_style_detail_download_progress_bar,@style/tt_appdownloader_style_notification_text,@style/tt_appdownloader_style_notification_title,@style/tt_appdownloader_style_progress_bar,@style/tt_appdownloader_style_progress_bar_new,@style/ttdownloader_translucent_dialog,@style/ttlive_PopupWindowAnimationStyle,@style/ttlive_bottom_dialog_anim,@style/ttlive_bottom_dialog_anim_fast,@style/ttlive_bottom_dialog_anim_normal,@style/ttlive_comb_dialog_anim,@style/ttlive_dialog_popup_animation,@style/ttlive_right_dialog_anim,@string/mbridge*,@layout/mbridge*,@drawable/mbridge*,@anim/mbridge*,@color/mbridge*,@style/mbridge*,@id/mbridge*"
tools:shrinkMode="safe" />
注意:如果引入了部分第三方的资源优化框架,则需配置防混淆白名单,内存可参考Demo中 whitel.txt 文件,如下:
txt
R.anim.unad_*
R.layout.unad_*
R.drawable.unad_*
R.drawable.adgo_*
R.drawable.ad_*
R.string.anythink_*
R.drawable.anythink_*
R.layout.anythink_*
R.id.anythink_*
R.dimen.anythink_*
R.style.anythink_*
R.color.anythink_*
R.string.ksad_*
R.drawable.ksad_*
R.layout.ksad_*
R.id.ksad_*
R.style.ksad_*
R.color.ksad_*
R.attr.ksad_*
R.dimen.ksad_*
R.anim.bullet_bottom_dialog_enter
R.anim.bullet_bottom_dialog_exit
R.anim.cj_pay_activity_add_in_animation
R.anim.cj_pay_activity_fade_in_animation
R.anim.cj_pay_activity_fade_out_animation
R.anim.cj_pay_activity_remove_out_animation
R.anim.cj_pay_expo_easeout_interpolator
R.anim.cj_pay_fragment_down_out_animation
R.anim.cj_pay_fragment_up_in_animation
R.anim.cj_pay_quadratic_easein_interpolator
R.anim.cj_pay_slide_in_from_bottom_with_bezier
R.anim.cj_pay_slide_out_to_bottom_with_bezier
R.anim.cj_pay_slide_right_in
R.anim.ec_alpha_in
R.anim.ec_alpha_out
R.anim.ec_base_enter
R.anim.ec_base_exit
R.anim.ec_bottom_in
R.anim.ec_bottom_out
R.anim.ec_commerce_activity_in
R.anim.ec_commerce_activity_out
R.anim.ec_commerce_pre_out
R.anim.ec_pop_bottom_in
R.anim.ec_pop_bottom_out
R.anim.ec_pop_slide_in
R.anim.ec_pop_slide_out
R.anim.ec_slide_in
R.anim.ec_slide_out
R.anim.ec_zoom_in
R.anim.ec_zoom_out
R.anim.shopping_popup_fade_in
R.anim.shopping_popup_fade_out
R.anim.ttlive_alpha_in
R.anim.ttlive_alpha_out
R.anim.ttlive_dialog_popup_enter
R.anim.ttlive_dialog_popup_exit
R.anim.ttlive_popup_enter
R.anim.ttlive_popup_exit
R.anim.ttlive_slide_in_bottom
R.anim.ttlive_slide_in_bottom_fast
R.anim.ttlive_slide_in_bottom_normal
R.anim.ttlive_slide_in_left
R.anim.ttlive_slide_in_right
R.anim.ttlive_slide_in_top
R.anim.ttlive_slide_out_bottom
R.anim.ttlive_slide_out_bottom_fast
R.anim.ttlive_slide_out_bottom_normal
R.anim.ttlive_slide_out_left
R.anim.ttlive_slide_out_right
R.anim.ttlive_slide_out_top
R.color.ec_store_window_background
R.color.tt_appdownloader_notification_material_background_color
R.color.tt_appdownloader_notification_title_color
R.color.tt_appdownloader_s1
R.color.tt_appdownloader_s13
R.color.tt_appdownloader_s18
R.color.tt_appdownloader_s4
R.color.tt_appdownloader_s8
R.color.ttdownloader_transparent
R.drawable.tt_appdownloader_action_bg
R.drawable.tt_appdownloader_action_new_bg
R.drawable.tt_appdownloader_ad_detail_download_progress
R.drawable.tt_appdownloader_detail_download_success_bg
R.drawable.tt_appdownloader_download_progress_bar_horizontal
R.drawable.tt_appdownloader_download_progress_bar_horizontal_new
R.drawable.tt_appdownloader_download_progress_bar_horizontal_night
R.drawable.ttdownloader_bg_appinfo_btn
R.drawable.ttdownloader_bg_appinfo_dialog
R.drawable.ttdownloader_bg_button_blue_corner
R.drawable.ttdownloader_bg_kllk_btn1
R.drawable.ttdownloader_bg_kllk_btn2
R.drawable.ttdownloader_bg_transparent
R.drawable.ttdownloader_bg_white_corner
R.drawable.ttdownloader_dash_line
R.drawable.ttdownloader_icon_back_arrow
R.drawable.ttdownloader_icon_download
R.drawable.ttdownloader_icon_yes
R.id.auto
R.id.cancel_tv
R.id.confirm_tv
R.id.dash_line
R.id.delete_tv
R.id.iv_app_icon
R.id.iv_detail_back
R.id.iv_privacy_back
R.id.line
R.id.ll_download
R.id.message_tv
R.id.permission_list
R.id.privacy_webview
R.id.title_bar
R.id.tt_appdownloader_action
R.id.tt_appdownloader_desc
R.id.tt_appdownloader_download_progress
R.id.tt_appdownloader_download_progress_new
R.id.tt_appdownloader_download_size
R.id.tt_appdownloader_download_status
R.id.tt_appdownloader_download_success
R.id.tt_appdownloader_download_success_size
R.id.tt_appdownloader_download_success_status
R.id.tt_appdownloader_download_text
R.id.tt_appdownloader_icon
R.id.tt_appdownloader_root
R.id.tv_app_detail
R.id.tv_app_developer
R.id.tv_app_name
R.id.tv_app_privacy
R.id.tv_app_version
R.id.tv_empty
R.id.tv_give_up
R.id.tv_permission_description
R.id.tv_permission_title
R.layout.tt_appdownloader_notification_layout
R.layout.ttdownloader_activity_app_detail_info
R.layout.ttdownloader_activity_app_privacy_policy
R.layout.ttdownloader_dialog_appinfo
R.layout.ttdownloader_dialog_select_operation
R.layout.ttdownloader_item_permission
R.string.tt_appdownloader_button_cancel_download
R.string.tt_appdownloader_button_queue_for_wifi
R.string.tt_appdownloader_button_start_now
R.string.tt_appdownloader_download_percent
R.string.tt_appdownloader_download_remaining
R.string.tt_appdownloader_download_unknown_title
R.string.tt_appdownloader_duration_hours
R.string.tt_appdownloader_duration_minutes
R.string.tt_appdownloader_duration_seconds
R.string.tt_appdownloader_jump_unknown_source
R.string.tt_appdownloader_label_cancel
R.string.tt_appdownloader_label_cancel_directly
R.string.tt_appdownloader_label_ok
R.string.tt_appdownloader_label_reserve_wifi
R.string.tt_appdownloader_notification_download
R.string.tt_appdownloader_notification_download_complete_open
R.string.tt_appdownloader_notification_download_complete_with_install
R.string.tt_appdownloader_notification_download_complete_without_install
R.string.tt_appdownloader_notification_download_continue
R.string.tt_appdownloader_notification_download_delete
R.string.tt_appdownloader_notification_download_failed
R.string.tt_appdownloader_notification_download_install
R.string.tt_appdownloader_notification_download_open
R.string.tt_appdownloader_notification_download_pause
R.string.tt_appdownloader_notification_download_restart
R.string.tt_appdownloader_notification_download_resume
R.string.tt_appdownloader_notification_download_space_failed
R.string.tt_appdownloader_notification_download_waiting_net
R.string.tt_appdownloader_notification_download_waiting_wifi
R.string.tt_appdownloader_notification_downloading
R.string.tt_appdownloader_notification_install_finished_open
R.string.tt_appdownloader_notification_insufficient_space_error
R.string.tt_appdownloader_notification_need_wifi_for_size
R.string.tt_appdownloader_notification_no_internet_error
R.string.tt_appdownloader_notification_no_wifi_and_in_net
R.string.tt_appdownloader_notification_paused_in_background
R.string.tt_appdownloader_notification_pausing
R.string.tt_appdownloader_notification_prepare
R.string.tt_appdownloader_notification_request_btn_no
R.string.tt_appdownloader_notification_request_btn_yes
R.string.tt_appdownloader_notification_request_message
R.string.tt_appdownloader_notification_request_title
R.string.tt_appdownloader_notification_waiting_download_complete_handler
R.string.tt_appdownloader_resume_in_wifi
R.string.tt_appdownloader_tip
R.string.tt_appdownloader_wifi_recommended_body
R.string.tt_appdownloader_wifi_recommended_title
R.string.tt_appdownloader_wifi_required_body
R.string.tt_appdownloader_wifi_required_title
R.style.AlphaAnimation
R.style.BottomAnimation
R.style.Bullet.Bottom.Dialog.Animation
R.style.Dialog.BottomSheet.Transparent
R.style.ECBaseDialogFragmentAnimation
R.style.ECBottomInWindowAnimation
R.style.ECBottomOutWindowAnimation
R.style.ECHalfScreenAnchorV4Anime
R.style.ECSlideInWindowAnimation
R.style.ECSlideOutWindowAnimation
R.style.EC.Widget.Design.BottomSheet.Modal
R.style.ExpandAnimation
R.style.PopupWindowFadeAnimationStyle
R.style.SKUPanelDialogAnimation
R.style.SlideAnimation
R.style.StoreAppBottomSheetStyle
R.style.bottom_sheet_anime
R.style.commerce_dialog_dim_non_enter_animation
R.style.ec_plugin_progress_dialog
R.style.ec_sku_prerender_dialog_anim
R.style.tt_appdownloader_style_detail_download_progress_bar
R.style.tt_appdownloader_style_notification_text
R.style.tt_appdownloader_style_notification_title
R.style.tt_appdownloader_style_progress_bar
R.style.tt_appdownloader_style_progress_bar_new
R.style.ttdownloader_translucent_dialog
R.style.ttlive_PopupWindowAnimationStyle
R.style.ttlive_bottom_dialog_anim
R.style.ttlive_bottom_dialog_anim_fast
R.style.ttlive_bottom_dialog_anim_normal
R.style.ttlive_comb_dialog_anim
R.style.ttlive_dialog_popup_animation
R.style.ttlive_right_dialog_anim
R.string.mbridge*
R.layout.mbridge*
R.drawable.mbridge*
R.anim.mbridge*
R.color.mbridge*
R.style.mbridge*
R.id.mbridge*
6. 选择支持的 NDK
ndk { // 设置支持的 SO 库构架,注意这里要根据你的实际情况来设置
abiFilters ‘armeabi-v7a’, ‘arm64-v8a’, ‘x86’, ‘x86_64’, ‘armeabi’
}
注意:请开发者务必按照上面信息进行注册声明,详情见 Demo。