diff --git a/app/build.gradle b/app/build.gradle index b2cd26b86d..30387f9df4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -133,7 +133,23 @@ android { flavorDimensions("env") + sourceSets { + publish { + java.srcDirs = ['src/main/java'] + } + internal { + java.srcDirs = ['src/main/java'] + } + tea { + java.srcDirs = ['src/main/java', 'src/tea/java'] + } + gdt { + java.srcDirs = ['src/main/java', 'src/gdt/java'] + } + } + productFlavors { + // publish release host publish { dimension "env" buildConfigField "String", "API_HOST", "\"${API_HOST}\"" @@ -144,6 +160,7 @@ android { buildConfigField "String", "UMENG_MESSAGE_SECRET", "\"${UMENG_MESSAGE_SECRET}\"" buildConfigField "String", "BUGLY_APPID", "\"${BUGLY_APPID}\"" } + // internal test dev host internal { dimension "env" versionNameSuffix "-debug" @@ -156,6 +173,30 @@ android { buildConfigField "String", "UMENG_MESSAGE_SECRET", "\"${DEV_UMENG_MESSAGE_SECRET}\"" buildConfigField "String", "BUGLY_APPID", "\"${DEV_BUGLY_APPID}\"" } + + tea { + dimension "env" + + buildConfigField "String", "API_HOST", "\"${API_HOST}\"" + + buildConfigField "String", "SENSITIVE_API_HOST", "\"${SENSITIVE_API_HOST}\"" + + buildConfigField "String", "UMENG_APPKEY", "\"${UMENG_APPKEY}\"" + buildConfigField "String", "UMENG_MESSAGE_SECRET", "\"${UMENG_MESSAGE_SECRET}\"" + buildConfigField "String", "BUGLY_APPID", "\"${BUGLY_APPID}\"" + } + + gdt { + dimension "env" + + buildConfigField "String", "API_HOST", "\"${API_HOST}\"" + + buildConfigField "String", "SENSITIVE_API_HOST", "\"${SENSITIVE_API_HOST}\"" + + buildConfigField "String", "UMENG_APPKEY", "\"${UMENG_APPKEY}\"" + buildConfigField "String", "UMENG_MESSAGE_SECRET", "\"${UMENG_MESSAGE_SECRET}\"" + buildConfigField "String", "BUGLY_APPID", "\"${BUGLY_APPID}\"" + } } } @@ -185,6 +226,7 @@ repositories { dependencies { implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') + gdtImplementation fileTree(include: ['*.jar', '*.aar'], dir: 'src/gdt/libs') testImplementation 'junit:junit:4.12' @@ -290,7 +332,7 @@ dependencies { debugImplementation "com.github.nichbar.chucker:library:$chucker" releaseImplementation "com.github.nichbar.chucker:library-no-op:$chucker" -// implementation "com.bytedance.applog:RangersAppLog-Lite-cn:$bytedanceApplog" + teaImplementation "com.bytedance.applog:RangersAppLog-Lite-cn:$bytedanceApplog" // implementation "com.bytedance.ies.ugc.aweme:opensdk-china-external:$bytedanceAweme" // implementation "com.bytedance.ies.ugc.aweme:opensdk-common:$bytedanceAweme" diff --git a/app/proguard-rules.txt b/app/proguard-rules.txt index 01fbdbf620..be871ae960 100644 --- a/app/proguard-rules.txt +++ b/app/proguard-rules.txt @@ -265,4 +265,7 @@ -keep class com.alibaba.sdk.android.**{*;} -keep class com.ut.**{*;} --keep class com.ta.**{*;} \ No newline at end of file +-keep class com.ta.**{*;} + +-keep class com.gh.gamecenter.GdtHelper { *; } +-keep class com.gh.gamecenter.TeaHelper { *; } \ No newline at end of file diff --git a/app/src/gdt/java/com/gh/gamecenter/GdtHelper.kt b/app/src/gdt/java/com/gh/gamecenter/GdtHelper.kt new file mode 100644 index 0000000000..efc5d52491 --- /dev/null +++ b/app/src/gdt/java/com/gh/gamecenter/GdtHelper.kt @@ -0,0 +1,75 @@ +package com.gh.gamecenter + +import android.app.Application +import android.text.TextUtils +import android.util.Log +import com.gh.common.util.ToastUtils +import com.lightgame.utils.Utils +import com.qq.gdt.action.GDTAction +import org.json.JSONObject + +/** + * 广点通辅助类 [https://gitlab.ghzhushou.com/pm/halo-app-issues/issues/403] + * + * 更换帐号 [https://gitlab.ghzs.com/pm/yunying/issues/893] + */ +object GdtHelper { + + const val NETWORK_TYPE = "NETWORK_TYPE" + const val PAGE_TYPE = "PAGE_TYPE" + const val CONTENT_TYPE = "CONTENT_TYPE" + const val CONTENT_ID = "CONTENT_ID" + const val KEYWORD = "KEYWORD" + const val GAME_ID = "GAME_ID" + const val SCORE = "SCORE" + const val PLATFORM = "PLATFORM" + + @JvmStatic + fun init(application: Application, channel: String) { + if (shouldUseGdtHelper()) { + if (channel == "GH_728") { + GDTAction.init(application, "1111012969", "9d3d9da5b0948a317c03d08f14d445dc") + } else if (channel == "GH_729") { + GDTAction.init(application, "1111013063", "f53dabf458a356b101d99fc4069eb7f1") + } else { + GDTAction.init(application, "1110680399", "f5ddaafbf520d7d7385499232a408d0a") + } + } + Utils.log("init GdtHelper") + } + +// fun logAction(type: String) { +// if (shouldUseGdtHelper()) { +// GDTAction.logAction(type) +// Utils.log("GDT", type) +// } +// } + @JvmStatic + fun logAction(type: String, vararg kv: String?) { + try { + val actionParam = JSONObject() + for (i in kv.indices) { + if (i % 2 != 0) { + val key = kv[i - 1] + val value = kv[i] + if (!TextUtils.isEmpty(key) && !TextUtils.isEmpty(value)) { + actionParam.put(key, value) + } + } + } + Utils.log("GDT", "$type + [${kv.joinToString(" , ")}]") + GDTAction.logAction(type, actionParam) + } catch (e: Exception) { + e.printStackTrace() + } + } + + // TODO 确认开启的渠道条件 + private fun shouldUseGdtHelper(): Boolean { + return true +// +// val channel = HaloApp.getInstance().channel +// return !(TextUtils.isEmpty(channel) || channel.contains("GDT".toLowerCase(Locale.CHINA))) + } + +} \ No newline at end of file diff --git a/app/src/gdt/libs/GDTActionSDK.min.1.6.10.aar b/app/src/gdt/libs/GDTActionSDK.min.1.6.10.aar new file mode 100644 index 0000000000..17ddcbc8e3 Binary files /dev/null and b/app/src/gdt/libs/GDTActionSDK.min.1.6.10.aar differ diff --git a/app/src/main/java/com/gh/common/util/GdtHelper.kt b/app/src/main/java/com/gh/common/util/GdtHelper.kt deleted file mode 100644 index 15293e281a..0000000000 --- a/app/src/main/java/com/gh/common/util/GdtHelper.kt +++ /dev/null @@ -1,70 +0,0 @@ -package com.gh.common.util - -import android.app.Application -import android.text.TextUtils -import com.halo.assistant.HaloApp -import java.util.* - -/** - * 广点通辅助类 [https://gitlab.ghzhushou.com/pm/halo-app-issues/issues/403] - * - * 更换帐号 [https://gitlab.ghzs.com/pm/yunying/issues/893] - */ -object GdtHelper { - - const val NETWORK_TYPE = "NETWORK_TYPE" - const val PAGE_TYPE = "PAGE_TYPE" - const val CONTENT_TYPE = "CONTENT_TYPE" - const val CONTENT_ID = "CONTENT_ID" - const val KEYWORD = "KEYWORD" - const val GAME_ID = "GAME_ID" - const val SCORE = "SCORE" - const val PLATFORM = "PLATFORM" - - fun init(application: Application, channel: String) { -// if (shouldUseGdtHelper()) { -// if (channel == "GH_728") { -// GDTAction.init(application, "1111012969", "9d3d9da5b0948a317c03d08f14d445dc") -// } else if (channel == "GH_729") { -// GDTAction.init(application, "1111013063", "f53dabf458a356b101d99fc4069eb7f1") -// } else { -// GDTAction.init(application, "1110680399", "f5ddaafbf520d7d7385499232a408d0a") -// } -// } - } - - fun logAction(type: String) { -// if (shouldUseGdtHelper()) { -// GDTAction.logAction(type) -// Utils.log("GDT", type) -// } - } - - fun logAction(type: String, vararg kv: String?) { -// try { -// val actionParam = JSONObject() -// for (i in kv.indices) { -// if (i % 2 != 0) { -// val key = kv[i - 1] -// val value = kv[i] -// if (!TextUtils.isEmpty(key) && !TextUtils.isEmpty(value)) { -// actionParam.put(key, value) -// } -// } -// } -// Utils.log("GDT", "$type + [${kv.joinToString(" , ")}]") -// GDTAction.logAction(type, actionParam) -// } catch (e: Exception) { -// e.printStackTrace() -// } - } - - // TODO 确认开启的渠道条件 - private fun shouldUseGdtHelper(): Boolean { - return true - - val channel = HaloApp.getInstance().channel - return !(TextUtils.isEmpty(channel) || channel.contains("GDT".toLowerCase(Locale.CHINA))) - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/util/TeaHelper.kt b/app/src/main/java/com/gh/common/util/TeaHelper.kt deleted file mode 100644 index 6363b729e2..0000000000 --- a/app/src/main/java/com/gh/common/util/TeaHelper.kt +++ /dev/null @@ -1,32 +0,0 @@ -package com.gh.common.util - -import android.content.Context - -/** - * 今日头条的激活统计 SDK https://gitlab.ghzs.com/pm/halo-app-issues/issues/567 - * - * 更新 SDK https://gitlab.ghzs.com/pm/halo-app-issues/issues/743 - */ -object TeaHelper { - - @JvmStatic - fun init(context: Context, channel: String) { -// val config = InitConfig("163824", channel) -// config.setUriConfig(UriConfig.DEFAULT) -// config.appName = "guanghuan1" -// config.setEnablePlay(true) -// AppLog.setEnableLog(false) -// AppLog.init(context, config) -// -// AppLog.setOaidObserver { -// HaloApp.getInstance().oaid = it.id -// Utils.log("oaid is $it.id") -// MetaUtil.refreshMeta() -// } -// -// // gameReportHelper ?! -// GameReportHelper.onEventRegister("wechat", true) -// GameReportHelper.onEventPurchase("gift", "flower", "008", 1, "wechat", "¥", true, 1) - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java index 5b55a75570..6ddb9be05c 100644 --- a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java @@ -2,6 +2,7 @@ package com.gh.gamecenter; import android.Manifest; import android.annotation.SuppressLint; +import android.app.Application; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -29,6 +30,7 @@ import com.gh.common.constant.Constants; import com.gh.common.dialog.PrivacyDialogFragment; import com.gh.common.util.DataUtils; import com.gh.common.util.DeviceTokenUtils; +import com.gh.common.util.DeviceUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.EmptyCallback; import com.gh.common.util.GameSubstituteRepositoryHelper; @@ -38,7 +40,6 @@ import com.gh.common.util.PackageUtils; import com.gh.common.util.PlatformUtils; import com.gh.common.util.SPUtils; import com.gh.common.util.TagUtils; -import com.gh.common.util.TeaHelper; import com.gh.common.util.UsageStatsHelper; import com.gh.download.DownloadManager; import com.gh.gamecenter.entity.AuthDialogEntity; @@ -56,6 +57,8 @@ import org.jetbrains.annotations.NotNull; import org.json.JSONObject; import java.io.File; +import java.lang.reflect.Field; +import java.lang.reflect.Method; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; @@ -288,9 +291,7 @@ public class SplashScreenActivity extends BaseActivity { prefetchData(); - // 在可能获取了相关权限后才初始化SDK/发送激活数据 - TeaHelper.init(getApplication(), HaloApp.getInstance().getChannel()); -// GdtHelper.INSTANCE.logAction(ActionType.START_APP, GdtHelper.NETWORK_TYPE, DeviceUtils.getNetwork(this)); + uploadTeaAndGdtData(); Bundle bundle = getIntent().getExtras(); Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class); @@ -299,6 +300,33 @@ public class SplashScreenActivity extends BaseActivity { finish(); } + private void uploadTeaAndGdtData(){ + // 在可能获取了相关权限后才初始化SDK/发送激活数据 +// TeaHelper.init(getApplication(), HaloApp.getInstance().getChannel()); + try { + Class clazz = Class.forName("com.gh.gamecenter.TeaHelper"); + Method method = clazz.getMethod("init", Context.class, String.class); + method.invoke(null, getApplication(), HaloApp.getInstance().getChannel()); + } catch (Exception e) { + e.printStackTrace(); + } +// GdtHelper.INSTANCE.logAction(ActionType.START_APP, GdtHelper.NETWORK_TYPE, DeviceUtils.getNetwork(this)); + try { + Class clazz = Class.forName("com.gh.gamecenter.GdtHelper"); + Field field = clazz.getDeclaredField("NETWORK_TYPE"); + String type = (String) field.get(null); + Method method = clazz.getMethod("logAction", String.class, String[].class); + + Class actionTypeClazz = Class.forName("com.qq.gdt.action.ActionType"); + Field typeField = actionTypeClazz.getDeclaredField("START_APP"); + String actionType = (String) typeField.get(null); + + method.invoke(null, actionType, new String[]{type, DeviceUtils.getNetwork(this)}); + } catch (Exception e) { + e.printStackTrace(); + } + } + private void getUniqueId() { DataUtils.getGid(); } diff --git a/app/src/main/java/com/halo/assistant/HaloApp.java b/app/src/main/java/com/halo/assistant/HaloApp.java index e215645e3b..21fe87629c 100644 --- a/app/src/main/java/com/halo/assistant/HaloApp.java +++ b/app/src/main/java/com/halo/assistant/HaloApp.java @@ -23,7 +23,6 @@ import com.gh.common.util.DataUtils; import com.gh.common.util.DeviceUtils; import com.gh.common.util.DownloadNotificationHelper; import com.gh.common.util.DownloadObserver; -import com.gh.common.util.GdtHelper; import com.gh.common.util.HomeBottomBarHelper; import com.gh.common.util.PackageHelper; import com.gh.common.util.PackageUtils; @@ -50,6 +49,8 @@ import com.shuyu.gsyvideoplayer.cache.CacheFactory; import com.shuyu.gsyvideoplayer.player.PlayerFactory; import com.squareup.picasso.Picasso; +import java.lang.reflect.Method; + import io.reactivex.plugins.RxJavaPlugins; import tv.danmaku.ijk.media.exo2.Exo2PlayerManager; import tv.danmaku.ijk.media.exo2.ExoPlayerCacheManager; @@ -204,10 +205,21 @@ public class HaloApp extends Application { private void initThirdPartySdk() { initPushSdk(); DataUtils.init(this, mChannel); - GdtHelper.INSTANCE.init(this, mChannel); + initGdt(); // AntiBotHelper.getManager(); } + private void initGdt() { +// GdtHelper.INSTANCE.init(this, mChannel); + try { + Class clazz = Class.forName("com.gh.gamecenter.GdtHelper"); + Method method = clazz.getMethod("init", Application.class, String.class); + method.invoke(null, getApplication(), HaloApp.getInstance().getChannel()); + } catch (Exception e) { + e.printStackTrace(); + } + } + private void initDataHelper() { ExposureManager.init(); LoghubUtils.init(this); diff --git a/app/src/tea/java/com/gh/gamecenter/TeaHelper.kt b/app/src/tea/java/com/gh/gamecenter/TeaHelper.kt new file mode 100644 index 0000000000..35df3388f2 --- /dev/null +++ b/app/src/tea/java/com/gh/gamecenter/TeaHelper.kt @@ -0,0 +1,35 @@ +package com.gh.gamecenter + +import android.content.Context +import android.util.Log +import com.bytedance.applog.AppLog +import com.bytedance.applog.GameReportHelper +import com.bytedance.applog.InitConfig +import com.bytedance.applog.util.UriConfig +import com.gh.common.exposure.meta.MetaUtil +import com.gh.common.util.ToastUtils +import com.halo.assistant.HaloApp +import com.lightgame.utils.Utils + +object TeaHelper { + @JvmStatic + fun init(context: Context, channel: String) { + val config = InitConfig("163824", channel) + config.setUriConfig(UriConfig.DEFAULT) + config.appName = "guanghuan1" + config.setEnablePlay(true) + AppLog.setEnableLog(false) + AppLog.init(context, config) + + AppLog.setOaidObserver { + HaloApp.getInstance().oaid = it.id + Utils.log("oaid is $it.id") + MetaUtil.refreshMeta() + } + + // gameReportHelper ?! + GameReportHelper.onEventRegister("wechat", true) + GameReportHelper.onEventPurchase("gift", "flower", "008", 1, "wechat", "¥", true, 1) + Utils.log("init TeaHelper") + } +} \ No newline at end of file