feat(android): integrate gromore csj mix sdk for rewarded and interstitial

This commit is contained in:
2026-04-22 12:41:08 +08:00
parent 2f9a2ff371
commit 78d5a8b86d
14 changed files with 218 additions and 29 deletions

View File

@@ -1,9 +1,3 @@
<dependencies> <dependencies>
<androidPackages> <!-- CSJ + GroMore mix integration is provided by local AARs in Assets/Plugins/Android. -->
<repositories>
<repository>https://artifact.bytedance.com/repository/pangle</repository>
</repositories>
<androidPackage spec="com.anythink.sdk:adapter-taku-csj:7.3.0.8.1.1"/>
<androidPackage spec="com.pangle.cn:ads-sdk-pro:7.3.0.8"/>
</androidPackages>
</dependencies> </dependencies>

View File

@@ -1 +1 @@
{"name":"csj","version":"7.3.0.8","country":1,"path":"Assets/AnyThinkPlugin/AnyThinkAds\\Plugins/Android/China/mediation/csj"} {"name":"csj","version":"7.5.1.0","country":1,"path":"Assets/AnyThinkPlugin/AnyThinkAds\\Plugins/Android/China/mediation/csj"}

View File

@@ -0,0 +1,32 @@
fileFormatVersion: 2
guid: 89da22c2144f47ea823de749873367b4
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Android: Android
second:
enabled: 1
settings: {}
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,32 @@
fileFormatVersion: 2
guid: 417c2272592f46b0b62da859413203f3
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Android: Android
second:
enabled: 1
settings: {}
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,32 @@
fileFormatVersion: 2
guid: 939a9bdebc5b4e74ae3a9a0e41078d4e
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Android: Android
second:
enabled: 1
settings: {}
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,32 @@
fileFormatVersion: 2
guid: ebec76ec2d0e4765ae7fc7f2578a7a9b
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Android: Android
second:
enabled: 1
settings: {}
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,32 @@
fileFormatVersion: 2
guid: f13fb8308a95467caa53ac5a0f13563b
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Android: Android
second:
enabled: 1
settings: {}
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -54,7 +54,6 @@ namespace Topon_Adapter.Editor
{ {
Directory.CreateDirectory(resXmlPath); Directory.CreateDirectory(resXmlPath);
} }
// var fromScriptableObject = MonoScript.FromScriptableObject(this);
var xmlPath = GetScriptsPath("AD_BuildAndroidProcess"); var xmlPath = GetScriptsPath("AD_BuildAndroidProcess");
saveFile($"{xmlPath}/alex_tt_file_path.xml", resXmlPath); saveFile($"{xmlPath}/alex_tt_file_path.xml", resXmlPath);
saveFile($"{xmlPath}/anythink_bk_tt_file_path.xml", resXmlPath); saveFile($"{xmlPath}/anythink_bk_tt_file_path.xml", resXmlPath);
@@ -75,8 +74,6 @@ namespace Topon_Adapter.Editor
} }
ToSingleTop (elementManifest); ToSingleTop (elementManifest);
var queries = CreateQueries ();
var xManifestElements = elementManifest.Descendants (); var xManifestElements = elementManifest.Descendants ();
var xApplicationElements = elementApplication.Descendants (); var xApplicationElements = elementApplication.Descendants ();
@@ -84,12 +81,14 @@ namespace Topon_Adapter.Editor
XElement tencentElement = GetElementByName (useQueries, "com.tencent.mm"); XElement tencentElement = GetElementByName (useQueries, "com.tencent.mm");
if (tencentElement == null) if (tencentElement == null)
{ {
elementManifest.Add (queries); elementManifest.Add (CreateQueries ());
} }
var wxElements = xApplicationElements.Where (element => element.Name.LocalName.Equals ("activity")); var wxElements = xApplicationElements
XElement wxElement = GetElementByName (wxElements, ".wxapi.WXEntryActivity"); .Where (element => element.Name.LocalName.Equals ("activity"))
if (wxElement != null) .Where (element => element.Attribute (AndroidNamespace + "name")?.Value == ".wxapi.WXEntryActivity")
.ToList ();
foreach (var wxElement in wxElements)
{ {
wxElement.Remove (); wxElement.Remove ();
} }
@@ -98,18 +97,31 @@ namespace Topon_Adapter.Editor
var elementlauncherManifest = launcherManifest.Element ("manifest"); var elementlauncherManifest = launcherManifest.Element ("manifest");
var elementlauncherApplication = elementlauncherManifest.Element ("application"); if (elementlauncherManifest == null)
var launcherElements = elementlauncherApplication.Descendants ().Where (element => element.Name.LocalName.Equals ("provider"));
XElement launcherElement = GetElementByName (launcherElements, "com.bytedance.sdk.openadsdk.TTFileProvider");
if (launcherElement == null)
{ {
//增加穿山甲配置 ATLog.log ("[BuildAndroidProcess] Launcher AndroidManifest.xml is invalid.");
elementlauncherApplication.Add (CreateCSJGromore ()); return;
//在application节点下添加android:allowBackup="false" tools:replace="android:allowBackup"
elementlauncherApplication.Add (new XAttribute (AndroidNamespace + "allowBackup", "false"));
elementlauncherApplication.Add (new XAttribute (ToolsNamespace + "replace", "android:allowBackup"));
} }
var elementlauncherApplication = elementlauncherManifest.Element ("application");
if (elementlauncherApplication == null)
{
ATLog.log ("[BuildAndroidProcess] Launcher AndroidManifest.xml is invalid.");
return;
}
var launcherProviders = elementlauncherApplication.Descendants ()
.Where (element => element.Name.LocalName.Equals ("provider"))
.Where (element => element.Attribute (AndroidNamespace + "name")?.Value == "com.bytedance.sdk.openadsdk.TTFileProvider")
.ToList ();
foreach (var launcherProvider in launcherProviders)
{
launcherProvider.Remove ();
}
elementlauncherApplication.Add (CreateCSJGromore ());
SetOrAddAttribute (elementlauncherApplication, AndroidNamespace + "allowBackup", "false");
SetOrAddAttribute (elementlauncherApplication, ToolsNamespace + "replace", "android:allowBackup");
var elementMainManifest = manifest.Element ("manifest"); var elementMainManifest = manifest.Element ("manifest");
var elementMainApplication = elementMainManifest.Element ("application"); var elementMainApplication = elementMainManifest.Element ("application");
@@ -129,6 +141,12 @@ namespace Topon_Adapter.Editor
public static void saveFile(string filePathName , string toFilesPath) public static void saveFile(string filePathName , string toFilesPath)
{ {
if (string.IsNullOrWhiteSpace(filePathName) || !File.Exists(filePathName))
{
ATLog.log ($"[BuildAndroidProcess] Skip missing file copy: {filePathName}");
return;
}
FileInfo file = new FileInfo(filePathName); FileInfo file = new FileInfo(filePathName);
string newFileName = file.Name; string newFileName = file.Name;
file.CopyTo(toFilesPath + "/" + newFileName, true); file.CopyTo(toFilesPath + "/" + newFileName, true);
@@ -223,13 +241,30 @@ namespace Topon_Adapter.Editor
var elements = manifest.Descendants ().Where (element => element.Name.LocalName.Equals ("activity")); var elements = manifest.Descendants ().Where (element => element.Name.LocalName.Equals ("activity"));
// 如果这个activity已经有了 android:launchMode="singleTask",则不再添加 // 如果这个activity已经有了 android:launchMode="singleTask",则不再添加
XElement elementByName = GetElementByName (elements , "com.unity3d.player.UnityPlayerActivity"); XElement elementByName = GetElementByName (elements , "com.unity3d.player.UnityPlayerActivity");
if (elementByName == null)
{
ATLog.log ("[BuildAndroidProcess] UnityPlayerActivity not found, skip launchMode patch.");
return;
}
//此处将 android:launchMode="singleTask" 改为 android:launchMode="singleTop" //此处将 android:launchMode="singleTask" 改为 android:launchMode="singleTop"
// elementByName.Add (new XAttribute (AndroidNamespace + "launchMode", "singleTop")); SetOrAddAttribute (elementByName, AndroidNamespace + "launchMode", "singleTop");
elementByName.Attribute ( AndroidNamespace + "launchMode")?.SetValue ("singleTop"); }
private static void SetOrAddAttribute (XElement element, XName attributeName, string value)
{
var attribute = element.Attribute (attributeName);
if (attribute == null)
{
element.Add (new XAttribute (attributeName, value));
return;
}
attribute.SetValue (value);
} }
public int callbackOrder { get; } public int callbackOrder { get; }
} }
} }
#endif #endif

View File

@@ -2,7 +2,7 @@
"name": "com.commercialization.topon", "name": "com.commercialization.topon",
"displayName": "Commercialization.topon", "displayName": "Commercialization.topon",
"description": "基于topon的广告sdk封装依赖基础商业化模块", "description": "基于topon的广告sdk封装依赖基础商业化模块",
"version": "1.4.5", "version": "1.4.6",
"unity": "2021.1", "unity": "2021.1",
"license": "MIT", "license": "MIT",
"repository": { "repository": {