diff --git a/app/build.gradle.kts b/app/build.gradle.kts index e1ca81a..5d03b84 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -6,6 +6,8 @@ plugins { id("org.jetbrains.kotlin.android") id("io.objectbox") kotlin("kapt") + id("com.google.gms.google-services") + id("com.google.firebase.crashlytics") } // 生成时间戳(保持原有格式,但后续文件名中不包含特殊字符) val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date()) @@ -18,17 +20,25 @@ android { applicationId = "com.snap.wall" minSdk = 24 targetSdk = 36 - versionCode = 1 - versionName = "1.0" + versionCode = 2 + versionName = "1.1" setProperty("archivesBaseName", "SnapWall_V" + versionName + "(${versionCode})_$timestamp") testInstrumentationRunner = "androidx.live.runner.AndroidJUnitRunner" } - + signingConfigs { + create("release") { + storeFile = file("../app/sapwall.jks") + storePassword = "snapwall" + keyAlias = "wallkey0" + keyPassword = "snapwall" + } + } buildTypes { release { isMinifyEnabled = true + signingConfig = signingConfigs.getByName("release") proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" @@ -63,4 +73,86 @@ dependencies { testImplementation("junit:junit:4.13.2") implementation("jp.wasabeef:glide-transformations:4.3.0") // Glide图片变换库 implementation("com.squareup.okhttp3:okhttp:5.3.1") + + implementation(files("libs/TradPlusLibrary_11_25_15_02-release.aar")) + implementation(files("libs/UpLoadLibrary_12_03_15_13-release.aar")) + implementation("com.squareup.okhttp3:logging-interceptor:4.12.0") + + + implementation(platform("com.google.firebase:firebase-bom:34.6.0")) + implementation("com.google.firebase:firebase-crashlytics") + implementation("com.google.firebase:firebase-analytics") + implementation("com.google.firebase:firebase-config") + + + // TradPlus + implementation("com.tradplusad:tradplus:14.5.0.1") + //noinspection GradleCompatible + implementation("androidx.legacy:legacy-support-v4:1.0.0") + implementation("androidx.appcompat:appcompat:1.3.0-alpha02") + // Meta + implementation("com.facebook.android:audience-network-sdk:6.20.0") + implementation("com.tradplusad:tradplus-facebook:1.14.5.0.1") + // Applovin + implementation("com.applovin:applovin-sdk:13.3.1") + implementation("com.tradplusad:tradplus-applovin:9.14.5.0.1") + implementation("com.google.android.gms:play-services-ads-identifier:18.2.0") + // Ironsource + implementation("com.ironsource.sdk:mediationsdk:8.10.0") + implementation("com.tradplusad:tradplus-ironsource:10.14.5.0.1") + implementation("com.google.android.gms:play-services-appset:16.0.0") + implementation("com.google.android.gms:play-services-ads-identifier:17.0.0") + implementation("com.google.android.gms:play-services-basement:17.5.0") + // Adcolony + implementation("com.adcolony:sdk:4.8.0") + implementation("com.tradplusad:tradplus-adcolony:4.14.5.0.1") + implementation("com.google.android.gms:play-services-ads-identifier:17.0.0") + // Pangle + implementation("com.tradplusad:tradplus-pangle:19.14.5.0.1") + implementation("com.pangle.global:pag-sdk:7.3.0.3") + // UnityAds + implementation("com.tradplusad:tradplus-unity:5.14.5.0.1") + implementation("com.unity3d.ads:unity-ads:4.15.1") + // Chartboost + implementation("com.tradplusad:tradplus-chartboostx:15.14.5.0.1") + implementation("com.chartboost:chartboost-sdk:9.8.3") + implementation("com.google.android.gms:play-services-ads-identifier:17.0.0") + implementation("com.google.android.gms:play-services-base:17.4.0") + // Inmobi + implementation("com.tradplusad:tradplus-inmobix:23.14.5.0.1") + implementation("com.inmobi.monetization:inmobi-ads-kotlin:10.8.3") + implementation("androidx.core:core-ktx:1.5.0") + implementation("com.inmobi.omsdk:inmobi-omsdk:1.5.2.0") + // Fyber + implementation("com.fyber:marketplace-sdk:8.3.7") + implementation("com.tradplusad:tradplus-fyber:24.14.5.0.1") + implementation("com.google.android.gms:play-services-ads-identifier:17.0.0") + implementation("com.google.android.gms:play-services-base:17.4.0") + // Start.io + implementation("com.startapp:inapp-sdk:5.2.3") + implementation("com.tradplusad:tradplus-startapp:28.14.5.0.1") + // Mintegral + implementation("com.tradplusad:tradplus-mintegralx_overseas:18.14.5.0.1") + implementation("androidx.recyclerview:recyclerview:1.1.0") + implementation("com.mbridge.msdk.oversea:mbridge_android_sdk:16.9.71") + // Liftoff + implementation("com.tradplusad:tradplus-vunglex:7.14.5.0.1") + implementation("com.vungle:vungle-ads:7.5.0") + // Yandex + implementation("com.yandex.android:mobileads:7.13.0") { + exclude(group = "com.caverock", module = "androidsvg-aar") + } + implementation("com.tradplusad:tradplus-yandex:50.14.6.10.1") + // Bigo + implementation("com.bigossp:bigo-ads:5.4.0") + implementation("com.tradplusad:tradplus-bigo:57.14.5.0.1") + // Cross Promotion + implementation("com.tradplusad:tradplus-crosspromotion:27.14.5.0.1") + // TP Exchange + // 请注意保持与主包版本同步更新 + implementation("com.google.code.gson:gson:2.8.6") + implementation("com.tradplusad:tp_exchange:40.14.5.0.1") + + // Google UMP + implementation ("com.google.android.ump:user-messaging-platform:3.2.0") } \ No newline at end of file diff --git a/app/google-services.json b/app/google-services.json new file mode 100644 index 0000000..9b5e67d --- /dev/null +++ b/app/google-services.json @@ -0,0 +1,29 @@ +{ + "project_info": { + "project_number": "1032882946360", + "project_id": "snapwall-31057", + "storage_bucket": "snapwall-31057.firebasestorage.app" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:1032882946360:android:0d7012c1cd509ba8d401cd", + "android_client_info": { + "package_name": "com.snap.wall" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyDJvlImZmFuvlE8dpjaNg_NhqXPUIHc-5k" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/app/libs/TradPlusLibrary_11_25_15_02-release.aar b/app/libs/TradPlusLibrary_11_25_15_02-release.aar new file mode 100644 index 0000000..803bb1c Binary files /dev/null and b/app/libs/TradPlusLibrary_11_25_15_02-release.aar differ diff --git a/app/libs/UpLoadLibrary_12_03_15_13-release.aar b/app/libs/UpLoadLibrary_12_03_15_13-release.aar new file mode 100644 index 0000000..a3e30aa Binary files /dev/null and b/app/libs/UpLoadLibrary_12_03_15_13-release.aar differ diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 9e06078..3d4da23 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -28,5 +28,8 @@ -keepattributes Signature -keepattributes AnnotationDefault,RuntimeVisibleAnnotations +-keep public class com.tradplus.** { *; } +-keep class com.tradplus.ads.** { *; } + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 75edcbd..e8699d6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,6 +17,8 @@ - diff --git a/app/src/main/java/com/snap/wall/App.java b/app/src/main/java/com/snap/wall/App.java index dd6b2a0..8609928 100644 --- a/app/src/main/java/com/snap/wall/App.java +++ b/app/src/main/java/com/snap/wall/App.java @@ -9,6 +9,7 @@ import com.snap.wall.bean.Information; import com.snap.wall.mytool.Comutils; import com.snap.wall.mytool.ObectManager; import com.snap.wall.mytool.JsonData; +import com.up.uploadlibrary.UpLoadManager; import java.io.IOException; import java.io.InputStream; @@ -18,10 +19,10 @@ import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -// 移除ObjectBox的import,避免手动创建 -// import io.objectbox.BoxStore; -// import com.snap.wall.mybean.MyObjectBox; -// import com.snap.wall.mybean.History; +import kotlin.Unit; +import kotlin.jvm.functions.Function2; + + public class App extends Application { public static Context mAppContext; @@ -48,6 +49,13 @@ public class App extends Application { mAppContext = this; defaultFont = Typeface.createFromAsset(getAssets(), "custfont.ttf"); + UpLoadManager.INSTANCE.init(this, TAG, new Function2() { + @Override + public Unit invoke(String s, String s2) { + return null; + } + }); + ObectManager.init(this); executor = Executors.newFixedThreadPool(8); String[] names = {wallpaperName, animasName, exName, filmName, natureName, pattName, streetName, travelName}; @@ -93,28 +101,4 @@ public class App extends Application { } -// private void initTop(){ -// ATSDK.checkIsEuTraffic(this, new NetTrafficeCallback() { -// -// @Override -// public void onResultCallback(boolean isEU) { -// Log.e(TAG, "onResultCallback:" + isEU); -// if (isEU && ATSDK.getGDPRDataLevel( MyApp.mAppContext) == ATSDK.UNKNOWN) { -// ATSDK.showGdprAuth(MyApp.mAppContext); -// } -// -// } -// -// @Override -// public void onErrorCallback(String errorMsg) { -// Log.e(TAG, "onErrorCallback:" + errorMsg); -// } -// }); -// -// ATSDK.init( this, APPId, AppKey); -// //测试工具 -//// ATDebuggerUITest.showDebuggerUI(this,debug_Key); -// AdManager.loadAllAd(); -// -// } } diff --git a/app/src/main/java/com/snap/wall/activity/MySearchActivity.kt b/app/src/main/java/com/snap/wall/activity/MySearchActivity.kt index 75569dd..a8803a2 100644 --- a/app/src/main/java/com/snap/wall/activity/MySearchActivity.kt +++ b/app/src/main/java/com/snap/wall/activity/MySearchActivity.kt @@ -9,11 +9,12 @@ import android.widget.TextView.OnEditorActionListener import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.recyclerview.widget.GridLayoutManager +import com.ad.tradpluslibrary.TPAdManager import com.snap.wall.R import com.snap.wall.adapter.OnItemclick +import com.snap.wall.bean.Information import com.snap.wall.databinding.ActivitySearchBinding import com.snap.wall.myitem.ItemTab -import com.snap.wall.bean.Information import com.snap.wall.mytool.Comutils import com.snap.wall.mytool.Itemhelper import com.snap.wall.mytool.ObectManager @@ -29,8 +30,9 @@ class MySearchActivity : AppCompatActivity() , Comutils.initFull(this, false) initList() binding.imageviewBack.setOnClickListener { - finish() + TPAdManager.showTPAD(this@MySearchActivity) { finish() } } + TPAdManager.showTPAD(this@MySearchActivity){} } diff --git a/app/src/main/java/com/snap/wall/activity/OneActivity.java b/app/src/main/java/com/snap/wall/activity/OneActivity.java index 3d1c84c..24cbd6a 100644 --- a/app/src/main/java/com/snap/wall/activity/OneActivity.java +++ b/app/src/main/java/com/snap/wall/activity/OneActivity.java @@ -6,12 +6,19 @@ import android.widget.ProgressBar; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; + +import com.ad.tradpluslibrary.TPAdManager; +import com.snap.wall.App; import com.snap.wall.R; import com.snap.wall.mytool.Comutils; import android.os.CountDownTimer; +import kotlin.Unit; +import kotlin.jvm.functions.Function0; +import kotlin.jvm.functions.Function1; + public class OneActivity extends AppCompatActivity { - private static final long TOTAL_TIME = 2000; + private static final long TOTAL_TIME = 12000; // 进度更新间隔(50毫秒) private static final long UPDATE_INTERVAL = 50; @@ -30,24 +37,41 @@ public class OneActivity extends AppCompatActivity { startCountDown(); } private void startCountDown() { - countDownTimer = new CountDownTimer(TOTAL_TIME, UPDATE_INTERVAL) { + TPAdManager.INSTANCE.init( + this, + App.TAG, + "909D20753E5D8EB9FEC5DD675DF72811", + "DDFEBCA71E78A60F5F089D3A5FBC0912", + "1A841D5996F8106028429E8799174612", + "BDEA3F104E55C2518696BD77AA80C112", + new Function0() { + @Override + public Unit invoke() { + return null; + } + } + ) ; + countDownTimer = TPAdManager.INSTANCE.showWelcomeAd(this, TOTAL_TIME, new Function1() { @Override - public void onTick(long millisUntilFinished) { - long elapsedTime = TOTAL_TIME - millisUntilFinished; + public Unit invoke(Long aLong) { + long elapsedTime = TOTAL_TIME - aLong; int progress = (int) (elapsedTime * 100 / TOTAL_TIME); progressBar.setProgress(progress); tvProgress.setText(progress + "%"); + return null; } - + }, new Function0() { @Override - public void onFinish() { + public Unit invoke() { progressBar.setProgress(100); tvProgress.setText("100%"); Intent intent = new Intent(OneActivity.this, PrimaryActivity.class); startActivity(intent); finish(); + return null; } - }.start(); + }) ; + countDownTimer.start(); } @Override diff --git a/app/src/main/java/com/snap/wall/activity/PreviewActivity.java b/app/src/main/java/com/snap/wall/activity/PreviewActivity.java index fe2bb8e..4bd66e9 100644 --- a/app/src/main/java/com/snap/wall/activity/PreviewActivity.java +++ b/app/src/main/java/com/snap/wall/activity/PreviewActivity.java @@ -15,6 +15,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; +import com.ad.tradpluslibrary.TPAdManager; import com.bumptech.glide.Glide; import com.bumptech.glide.load.DataSource; import com.bumptech.glide.load.DecodeFormat; @@ -42,6 +43,8 @@ import java.util.Locale; import java.util.Timer; import java.util.TimerTask; +import kotlin.Unit; +import kotlin.jvm.functions.Function0; import okhttp3.Call; public class PreviewActivity extends AppCompatActivity implements OnSelecttype { @@ -75,6 +78,12 @@ public class PreviewActivity extends AppCompatActivity implements OnSelecttype { finish(); return; } + TPAdManager.INSTANCE.showTPAD(PreviewActivity.this, new Function0() { + @Override + public Unit invoke() { + return null; + } + }); imId = data.getImId(); mSavePath = JsonData.INSTANCE.getSaveFilePath(this, imId); fullUrl = data.getFullUrl(); @@ -188,13 +197,23 @@ public class PreviewActivity extends AppCompatActivity implements OnSelecttype { vb.imageviewBack.setOnClickListener(v -> finish()); vb.buttonSet.setOnClickListener(v -> { - if (dialogType == null) { - dialogType = new Mydialog(); - dialogType.setListener(this); - } - if (!dialogType.isAdded()) { - dialogType.show(getSupportFragmentManager(), ""); - } + + + TPAdManager.INSTANCE.showTPAD(PreviewActivity.this, new Function0() { + @Override + public Unit invoke() { + if (dialogType == null) { + dialogType = new Mydialog(); + dialogType.setListener(PreviewActivity.this); + } + if (!dialogType.isAdded()) { + dialogType.show(getSupportFragmentManager(), ""); + } + return null; + } + }); + + }); vb.imageFavorite.setOnClickListener(v -> { @@ -205,9 +224,16 @@ public class PreviewActivity extends AppCompatActivity implements OnSelecttype { }); vb.layoutDownload.setOnClickListener(v -> { - if (JsonData.INSTANCE.requestPermission(this, permissionCode)) { - startSaveToAlbum(); - } + TPAdManager.INSTANCE.showTPAD(PreviewActivity.this, new Function0() { + @Override + public Unit invoke() { + if (JsonData.INSTANCE.requestPermission(PreviewActivity.this, permissionCode)) { + startSaveToAlbum(); + } + return null; + } + }); + }); } diff --git a/app/src/main/java/com/snap/wall/activity/RencentActivity.java b/app/src/main/java/com/snap/wall/activity/RencentActivity.java deleted file mode 100644 index d6f9346..0000000 --- a/app/src/main/java/com/snap/wall/activity/RencentActivity.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.snap.wall.activity; - -import android.os.Bundle; -import android.widget.ImageView; -import android.widget.TextView; -import android.widget.Toast; -import androidx.appcompat.app.AppCompatActivity; -import androidx.fragment.app.FragmentTransaction; -import com.snap.wall.R; -import com.snap.wall.RecentWallpaperManager; -import com.snap.wall.fragment.RecentWallpaperFragment; -import com.snap.wall.mytool.Comutils; - -public class RencentActivity extends AppCompatActivity { - - private RecentWallpaperManager recentManager; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_rencent); - Comutils.initFull(this, false); - - recentManager = RecentWallpaperManager.getInstance(this); - ImageView ivBack = findViewById(R.id.iv_back); - if (ivBack != null) { - ivBack.setOnClickListener(v -> { - finish(); - }); - } - - // 清除按钮点击 - TextView tvClearAll = findViewById(R.id.tv_clear_all); - tvClearAll.setOnClickListener(v -> { - recentManager.clear(); - Toast.makeText(this, "All recent browsing history has been cleared", Toast.LENGTH_SHORT).show(); - reloadRecentFragment(); - }); - - // 加载Fragment - if (savedInstanceState == null) { - loadRecentFragment(); - } - } - - private void loadRecentFragment() { - FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); - transaction.replace(R.id.fragment_container, new RecentWallpaperFragment()); - transaction.commit(); - } - - private void reloadRecentFragment() { - FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); - transaction.replace(R.id.fragment_container, new RecentWallpaperFragment()); - transaction.commit(); - } - @Override - protected void onDestroy() { - super.onDestroy(); - // 仅保留super调用,删除所有Glide相关代码 - } -} \ No newline at end of file diff --git a/app/src/main/java/com/snap/wall/activity/TabActivity.java b/app/src/main/java/com/snap/wall/activity/TabActivity.java index 677e1c8..dd64c81 100644 --- a/app/src/main/java/com/snap/wall/activity/TabActivity.java +++ b/app/src/main/java/com/snap/wall/activity/TabActivity.java @@ -7,6 +7,7 @@ import android.view.View; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.GridLayoutManager; +import com.ad.tradpluslibrary.TPAdManager; import com.snap.wall.adapter.OnItemclick; import com.snap.wall.databinding.ActivityTabBinding; import com.snap.wall.bean.Information; @@ -17,6 +18,9 @@ import com.snap.wall.mytool.ObectManager; import java.util.List; +import kotlin.Unit; +import kotlin.jvm.functions.Function0; + public class TabActivity extends AppCompatActivity implements OnItemclick { private ActivityTabBinding vb; @@ -38,6 +42,12 @@ public class TabActivity extends AppCompatActivity implements OnItemclick { finish(); } }); + TPAdManager.INSTANCE.showTPAD(TabActivity.this, new Function0() { + @Override + public Unit invoke() { + return null; + } + }); } private void initList() { diff --git a/app/src/main/res/xml/net.xml b/app/src/main/res/xml/net.xml new file mode 100644 index 0000000..0ac6102 --- /dev/null +++ b/app/src/main/res/xml/net.xml @@ -0,0 +1,6 @@ + + + + mobile-server.lux-ad.com + + diff --git a/build.gradle.kts b/build.gradle.kts index ade6d7d..90cc9ac 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,8 @@ plugins { id("com.android.application") version "8.13.1" apply false id("org.jetbrains.kotlin.android") version "2.2.21" apply false kotlin("kapt") version "1.9.0" - + id("com.google.gms.google-services") version "4.4.2" apply false + id ("com.google.firebase.crashlytics") version "3.0.2" apply false } buildscript { diff --git a/dependencies.txt b/dependencies.txt deleted file mode 100644 index 6fe1a6e..0000000 Binary files a/dependencies.txt and /dev/null differ diff --git a/keystore.properties b/keystore.properties index 474f1c1..9d61488 100644 --- a/keystore.properties +++ b/keystore.properties @@ -1,6 +1,6 @@ app_name=SnapWall package_name=com.snap.wall -keystoreFile=app/snapwall.jks +keystoreFile=app/sapwall.jks key_alias=wallkey0 -key_store_password=sapwall +key_store_password=snapwall key_password=snapwall \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index a90c3ea..17131b7 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -11,28 +11,26 @@ dependencyResolutionManagement { google() mavenCentral() -// -// //Anythink(Core) -// maven ("https://jfrog.anythinktech.com/artifactory/overseas_sdk") -// -// //Appnext -// maven ("https://dl.appnext.com") -// -// //Ironsource -// maven ("https://android-sdk.is.com/") -// -// //Pangle -// maven ("https://artifact.bytedance.com/repository/pangle") -// -// //Mintegral -// maven ("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") -// -// //Chartboost -// maven ("https://cboost.jfrog.io/artifactory/chartboost-ads") -// maven ("https://cboost.jfrog.io/artifactory/chartboost-mediation") -// -// //TopOn集成测试工具 -// maven ( "https://jfrog.anythinktech.com/artifactory/debugger") + //------------------------- TradPlus + // Ironsource + maven { url = uri("https://android-sdk.is.com/") } + // Pangle + maven { + url = uri("https://artifact.bytedance.com/repository/pangle") + } + // Chartboost + maven { url = uri("https://cboost.jfrog.io/artifactory/chartboost-ads/") } + maven { + name = "Chartboost Mediation’s maven repo" + url = uri("https://cboost.jfrog.io/artifactory/chartboost-mediation") + } + // Mintegral + //Launch GP market application, Android X Version + //If you fail to pull the code using gradle, add the maven warehouse configuration to the project root build.gradle file + maven { + url = + uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") + } } }