Commit 00ba1ba0 authored by xujialang's avatar xujialang

加入topon广告源,接入开屏和插屏广告

parent 11141f96
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<option name="testRunner" value="GRADLE" /> <option name="testRunner" value="GRADLE" />
<option name="distributionType" value="DEFAULT_WRAPPED" /> <option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" /> <option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="17" /> <option name="gradleJvm" value="jbr-17" />
<option name="modules"> <option name="modules">
<set> <set>
<option value="$PROJECT_DIR$" /> <option value="$PROJECT_DIR$" />
......
<project version="4"> <project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="17" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">
......
...@@ -103,9 +103,46 @@ dependencies { ...@@ -103,9 +103,46 @@ dependencies {
// Add the dependency for the Analytics library // Add the dependency for the Analytics library
// When using the BoM, you don't specify versions in Firebase library dependencies // When using the BoM, you don't specify versions in Firebase library dependencies
// implementation("com.google.firebase:firebase-analytics") // implementation("com.google.firebase:firebase-analytics")
implementation 'com.google.android.gms:play-services-ads:22.5.0' // implementation 'com.google.android.gms:play-services-ads:22.5.0'
implementation 'com.google.guava:guava:27.0.1-android' implementation 'com.google.guava:guava:27.0.1-android'
//facebook //facebook
implementation 'com.facebook.android:facebook-android-sdk:latest.release' implementation 'com.facebook.android:facebook-android-sdk:latest.release'
//Androidx
api "androidx.browser:browser:1.4.0"
api "androidx.recyclerview:recyclerview:1.1.0"
//Anythink
api "com.anythink.sdk:core:6.2.79"
api "com.anythink.sdk:nativead:6.2.79"
api "com.anythink.sdk:banner:6.2.79"
api "com.anythink.sdk:interstitial:6.2.79"
api "com.anythink.sdk:rewardedvideo:6.2.79"
api "com.anythink.sdk:splash:6.2.79"
//Pangle
api "com.anythink.sdk:adapter-pangle-nonchina:6.2.79"
api "com.pangle.global:ads-sdk:5.5.0.4"
api "com.google.android.gms:play-services-ads-identifier:18.0.1"
//AppLovin
api "com.anythink.sdk:adapter-applovin:6.2.79"
api "com.applovin:applovin-sdk:11.11.3"
//Mintegral
api "com.anythink.sdk:adapter-mintegral-nonchina:6.2.79"
api "com.mbridge.msdk.oversea:reward:16.5.21"
api "com.mbridge.msdk.oversea:newinterstitial:16.5.21"
api "com.mbridge.msdk.oversea:mbnative:16.5.21"
api "com.mbridge.msdk.oversea:mbnativeadvanced:16.5.21"
api "com.mbridge.msdk.oversea:mbsplash:16.5.21"
api "com.mbridge.msdk.oversea:mbbanner:16.5.21"
api "com.mbridge.msdk.oversea:mbbid:16.5.21"
//Vungle
api "com.anythink.sdk:adapter-vungle:6.2.79"
api "com.vungle:vungle-ads:7.0.0"
api "com.google.android.gms:play-services-basement:18.1.0"
api "com.google.android.gms:play-services-ads-identifier:18.0.1"
} }
\ No newline at end of file
...@@ -12,9 +12,9 @@ import androidx.lifecycle.OnLifecycleEvent; ...@@ -12,9 +12,9 @@ import androidx.lifecycle.OnLifecycleEvent;
import androidx.lifecycle.ProcessLifecycleOwner; import androidx.lifecycle.ProcessLifecycleOwner;
import com.ads.cal.picturetranslate.db.DataBaseManager; import com.ads.cal.picturetranslate.db.DataBaseManager;
import com.google.android.gms.ads.MobileAds; //import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.InitializationStatus; //import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener; //import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;
public class PictureApplication extends Application implements Application.ActivityLifecycleCallbacks, LifecycleObserver { public class PictureApplication extends Application implements Application.ActivityLifecycleCallbacks, LifecycleObserver {
...@@ -26,23 +26,27 @@ public class PictureApplication extends Application implements Application.Activ ...@@ -26,23 +26,27 @@ public class PictureApplication extends Application implements Application.Activ
super.onCreate(); super.onCreate();
this.registerActivityLifecycleCallbacks(this); this.registerActivityLifecycleCallbacks(this);
application = this; application = this;
MobileAds.initialize(this, new OnInitializationCompleteListener() { // MobileAds.initialize(this, new OnInitializationCompleteListener() {
@Override // @Override
public void onInitializationComplete(@NonNull InitializationStatus initializationStatus) { // public void onInitializationComplete(@NonNull InitializationStatus initializationStatus) {
LogUtils.d("PictureApplication", "initializationStatus "+initializationStatus.toString()); // LogUtils.d("PictureApplication", "initializationStatus " + initializationStatus.toString());
} // }
}); // });
ProcessLifecycleOwner.get().getLifecycle().addObserver(this); ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
new Thread(() -> { new Thread(() -> {
PictureTranslateUtils.init(); PictureTranslateUtils.init();
}); });
initDB(); initDB();
TopOnManager.get().initSDK(this);
} }
@OnLifecycleEvent(Lifecycle.Event.ON_START) @OnLifecycleEvent(Lifecycle.Event.ON_START)
protected void onMoveToForeground() { protected void onMoveToForeground() {
// Show the ad (if available) when the app moves to foreground. // Show the ad (if available) when the app moves to foreground.
AppOpenAdManager.getInstance().showAdIfAvailable(currentActivity); // TopOnAppOpenAdManager.getInstance().showAdIfAvailable(currentActivity);
} }
...@@ -68,7 +72,7 @@ public class PictureApplication extends Application implements Application.Activ ...@@ -68,7 +72,7 @@ public class PictureApplication extends Application implements Application.Activ
@Override @Override
public void onActivityStarted(@NonNull Activity activity) { public void onActivityStarted(@NonNull Activity activity) {
if (!AppOpenAdManager.getInstance().isShowingAd()) { if (!TopOnAppOpenAdManager.getInstance().isShowingAd()) {
currentActivity = activity; currentActivity = activity;
} }
} }
......
package com.ads.cal.picturetranslate;
import android.app.Activity;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import com.anythink.core.api.ATAdInfo;
import com.anythink.splashad.api.ATSplashAd;
import com.anythink.splashad.api.ATSplashAdExtraInfo;
import com.anythink.splashad.api.ATSplashAdListener;
import java.util.Date;
public class TopOnAppOpenAdManager {
//
private static final String LOG_TAG = "TopOnAppOpenAdManager";
private static final String AD_UNIT_ID = "b1f138leh1o4gp";
private ATSplashAd appOpenAd = null;
private boolean isLoadingAd = false;
private boolean isShowingAd = false;
private OnLoadAdCompleteListener onLoadAdCompleteListener;
private OnShowAdCompleteListener onShowAdCompleteListener;
public boolean isShowingAd() {
return isShowingAd;
}
/**
* Keep track of the time an app open ad is loaded to ensure you don't show an expired ad.
*/
private long loadTime = 0;
/**
* Constructor.
*/
public TopOnAppOpenAdManager() {
}
private static final class AppOpenAdManagerHolder {
static final TopOnAppOpenAdManager appOpenAdManager = new TopOnAppOpenAdManager();
}
public static TopOnAppOpenAdManager getInstance() {
return AppOpenAdManagerHolder.appOpenAdManager;
}
/**
* Load an ad.
*/
public void loadAd() {
// Do not load ad if there is an unused ad or one is already loading.
if (isLoadingAd || isAdAvailable()) {
return;
}
isLoadingAd = true;
appOpenAd = new ATSplashAd(PictureApplication.getApplication(), AD_UNIT_ID, null);
appOpenAd.setAdListener(new ATSplashAdListener() {
@Override
public void onAdLoaded(boolean b) {
LogUtils.d(LOG_TAG, "onAdLoaded.");
isLoadingAd = false;
loadTime = (new Date()).getTime();
if (null != onLoadAdCompleteListener) {
onLoadAdCompleteListener.onLoadAdComplete();
onLoadAdCompleteListener = null;
}
}
@Override
public void onAdLoadTimeout() {
isLoadingAd = false;
if (null != onLoadAdCompleteListener) {
onLoadAdCompleteListener.onLoadAdFailed("time out");
onLoadAdCompleteListener = null;
}
LogUtils.d(LOG_TAG, "onAdFailedToLoad: time out");
}
@Override
public void onNoAdError(com.anythink.core.api.AdError adError) {
isLoadingAd = false;
if (null != onLoadAdCompleteListener) {
onLoadAdCompleteListener.onLoadAdFailed(adError.getPlatformMSG());
onLoadAdCompleteListener = null;
}
LogUtils.d(LOG_TAG, "onAdFailedToLoad: " + adError.getPlatformMSG());
}
@Override
public void onAdShow(ATAdInfo atAdInfo) {
}
@Override
public void onAdClick(ATAdInfo atAdInfo) {
}
@Override
public void onAdDismiss(ATAdInfo atAdInfo, ATSplashAdExtraInfo atSplashAdExtraInfo) {
appOpenAd = null;
isShowingAd = false;
LogUtils.d(LOG_TAG, "onAdDismissedFullScreenContent.");
if (null != onShowAdCompleteListener) {
onShowAdCompleteListener.onShowAdComplete();
onShowAdCompleteListener = null;
}
loadAd();
}
});
appOpenAd.loadAd();
}
/**
* Check if ad was loaded more than n hours ago.
*/
private boolean wasLoadTimeLessThanNHoursAgo(long numHours) {
long dateDifference = (new Date()).getTime() - loadTime;
long numMilliSecondsPerHour = 3600000;
return (dateDifference < (numMilliSecondsPerHour * numHours));
}
/**
* Check if ad exists and can be shown.
*/
public boolean isAdAvailable() {
return appOpenAd != null && wasLoadTimeLessThanNHoursAgo(4);
}
/**
* Show the ad if one isn't already showing.
*
* @param activity the activity that shows the app open ad
*/
public boolean showAdIfAvailable(@NonNull Activity activity, @NonNull ViewGroup viewGroup) {
if (isShowingAd) {
LogUtils.d(LOG_TAG, "The app open ad is already showing.");
return false;
}
if (!isAdAvailable()) {
LogUtils.d(LOG_TAG, "The app open ad is not ready yet.");
loadAd();
return false;
}
LogUtils.d(LOG_TAG, "Will show ad.");
isShowingAd = true;
appOpenAd.show(activity, viewGroup);
return true;
}
public interface OnShowAdCompleteListener {
void onShowAdComplete();
void onShowAdFailed(String errorMsg);
}
public interface OnLoadAdCompleteListener {
void onLoadAdComplete();
void onLoadAdFailed(String errorMsg);
}
public void setOnLoadAdCompleteListener(OnLoadAdCompleteListener onLoadAdCompleteListener) {
this.onLoadAdCompleteListener = onLoadAdCompleteListener;
}
public void setOnShowAdCompleteListener(OnShowAdCompleteListener onShowAdCompleteListener) {
this.onShowAdCompleteListener = onShowAdCompleteListener;
}
}
package com.ads.cal.picturetranslate;
import android.app.Activity;
import com.anythink.core.api.ATAdInfo;
import com.anythink.core.api.AdError;
import com.anythink.interstitial.api.ATInterstitial;
import com.anythink.interstitial.api.ATInterstitialListener;
public class TopOnItAdManager {
private static final String IT_AD_UNIT_ID = "b6509805ed0208";
private static ATInterstitial itAd = null;
private static OnItAdListener listener = null;
public static void loadItAd() {
if (itAd != null) {
itAd.load();
return;
}
itAd = new ATInterstitial(PictureApplication.getApplication(), IT_AD_UNIT_ID);
itAd.setAdListener(new ATInterstitialListener() {
@Override
public void onInterstitialAdLoaded() {
}
@Override
public void onInterstitialAdLoadFail(AdError adError) {
}
@Override
public void onInterstitialAdClicked(ATAdInfo atAdInfo) {
}
@Override
public void onInterstitialAdShow(ATAdInfo atAdInfo) {
if (listener != null) {
listener.onShow();
}
}
@Override
public void onInterstitialAdClose(ATAdInfo atAdInfo) {
if (listener != null) {
listener.onClose();
}
loadItAd();
}
@Override
public void onInterstitialAdVideoStart(ATAdInfo atAdInfo) {
}
@Override
public void onInterstitialAdVideoEnd(ATAdInfo atAdInfo) {
}
@Override
public void onInterstitialAdVideoError(AdError adError) {
if (listener != null) {
listener.onFail(adError.getPlatformMSG());
}
loadItAd();
}
});
itAd.load();
}
public static void showItAd(Activity activity, OnItAdListener listener) {
LogUtils.d("anythink showItAd");
if (itAd == null) {
loadItAd();
if (listener != null) {
listener.onFail("it ad is null");
}
return;
}
if (!itAd.isAdReady()) {
loadItAd();
if (listener != null) {
listener.onFail("it ad is not ready");
}
return;
}
itAd.show(activity);
}
interface OnItAdListener {
void onShow();
void onClose();
void onFail(String reason);
}
}
package com.ads.cal.picturetranslate;
import android.content.Context;
import com.anythink.core.api.ATSDK;
public class TopOnManager {
private TopOnManager() {
}
private static class Holder {
private static final TopOnManager INSTANCE = new TopOnManager();
}
public static TopOnManager get() {
return Holder.INSTANCE;
}
public static final String TOPON_APP_ID = "a6501757a165c4";
// Field from default config.
public static final String TOPON_APP_KEY = "a53892abacdd1aebf0ea1d927ab0f0d88";
public void initSDK(Context context) {
//SDK日志功能,集成测试阶段建议开启,上线前必须关闭
// ATSDK.setNetworkLogDebug(true);
// //检查广告平台的集成状态,提交审核时需注释此API
// ATSDK.integrationChecking(context);
//
// ATSDK.setDebuggerConfig(
// context,
// "596795a7-b851-4514-bd7e-8561d641a968",
// new ATDebuggerConfig.Builder(Pangle_NETWORK).build());
ATSDK.init(context, TOPON_APP_ID, TOPON_APP_KEY);
//SDK版本
LogUtils.d("TopOn SDK version: " + ATSDK.getSDKVersionName());
//(v5.7.77新增) 打印当前设备的设备信息(IMEI、OAID、GAID、AndroidID等)
// ATSDK.testModeDeviceInfo(context, new DeviceInfoCallback() {
// @Override
// public void deviceInfo(String deviceInfo) {
// Log.i(TAG, "deviceInfo: " + deviceInfo);
// }
// });
}
}
...@@ -35,6 +35,7 @@ import com.ads.cal.picturetranslate.PictureApplication; ...@@ -35,6 +35,7 @@ import com.ads.cal.picturetranslate.PictureApplication;
import com.ads.cal.picturetranslate.R; import com.ads.cal.picturetranslate.R;
import com.ads.cal.picturetranslate.SharedPreferencesUtil; import com.ads.cal.picturetranslate.SharedPreferencesUtil;
import com.ads.cal.picturetranslate.ThreadUtils; import com.ads.cal.picturetranslate.ThreadUtils;
import com.ads.cal.picturetranslate.TopOnItAdManager;
import com.ads.cal.picturetranslate.adapter.PictureTranslateListAdapter; import com.ads.cal.picturetranslate.adapter.PictureTranslateListAdapter;
import com.ads.cal.picturetranslate.base.BaseActivity; import com.ads.cal.picturetranslate.base.BaseActivity;
import com.ads.cal.picturetranslate.bean.PictureTranslateBean; import com.ads.cal.picturetranslate.bean.PictureTranslateBean;
...@@ -75,6 +76,8 @@ public class PictureTranslateListMainActivity extends BaseActivity implements Ac ...@@ -75,6 +76,8 @@ public class PictureTranslateListMainActivity extends BaseActivity implements Ac
initData(); initData();
requestData(); requestData();
EventBus.getDefault().register(this); EventBus.getDefault().register(this);
TopOnItAdManager.loadItAd();
} }
@Subscribe(threadMode = ThreadMode.MAIN) @Subscribe(threadMode = ThreadMode.MAIN)
......
...@@ -41,6 +41,7 @@ import com.ads.cal.picturetranslate.PictureApplication; ...@@ -41,6 +41,7 @@ import com.ads.cal.picturetranslate.PictureApplication;
import com.ads.cal.picturetranslate.PictureTranslateUtils; import com.ads.cal.picturetranslate.PictureTranslateUtils;
import com.ads.cal.picturetranslate.R; import com.ads.cal.picturetranslate.R;
import com.ads.cal.picturetranslate.ThreadUtils; import com.ads.cal.picturetranslate.ThreadUtils;
import com.ads.cal.picturetranslate.TopOnItAdManager;
import com.ads.cal.picturetranslate.Util; import com.ads.cal.picturetranslate.Util;
import com.ads.cal.picturetranslate.base.BaseActivity; import com.ads.cal.picturetranslate.base.BaseActivity;
import com.ads.cal.picturetranslate.bean.PictureTranslateBean; import com.ads.cal.picturetranslate.bean.PictureTranslateBean;
...@@ -71,6 +72,8 @@ public class PictureTranslateResultActivity extends BaseActivity { ...@@ -71,6 +72,8 @@ public class PictureTranslateResultActivity extends BaseActivity {
setContentView(R.layout.activity_picture_translate_result); setContentView(R.layout.activity_picture_translate_result);
initView(); initView();
initData(); initData();
TopOnItAdManager.showItAd(this, null);
} }
private void initView() { private void initView() {
......
...@@ -24,6 +24,7 @@ import com.ads.cal.picturetranslate.MessageEvent; ...@@ -24,6 +24,7 @@ import com.ads.cal.picturetranslate.MessageEvent;
import com.ads.cal.picturetranslate.PictureApplication; import com.ads.cal.picturetranslate.PictureApplication;
import com.ads.cal.picturetranslate.PictureTranslateUtils; import com.ads.cal.picturetranslate.PictureTranslateUtils;
import com.ads.cal.picturetranslate.R; import com.ads.cal.picturetranslate.R;
import com.ads.cal.picturetranslate.TopOnItAdManager;
import com.ads.cal.picturetranslate.Util; import com.ads.cal.picturetranslate.Util;
import com.ads.cal.picturetranslate.base.BaseActivity; import com.ads.cal.picturetranslate.base.BaseActivity;
import com.ads.cal.picturetranslate.bean.PictureTranslateBean; import com.ads.cal.picturetranslate.bean.PictureTranslateBean;
......
...@@ -22,16 +22,13 @@ import androidx.camera.core.ExperimentalGetImage; ...@@ -22,16 +22,13 @@ import androidx.camera.core.ExperimentalGetImage;
import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager; import androidx.viewpager.widget.ViewPager;
import com.ads.cal.picturetranslate.AppOpenAdManager;
import com.ads.cal.picturetranslate.PictureTranslateUtils;
import com.ads.cal.picturetranslate.R; import com.ads.cal.picturetranslate.R;
import com.ads.cal.picturetranslate.SharedPreferencesUtil; import com.ads.cal.picturetranslate.SharedPreferencesUtil;
import com.ads.cal.picturetranslate.TopOnAppOpenAdManager;
import com.ads.cal.picturetranslate.base.BaseActivity; import com.ads.cal.picturetranslate.base.BaseActivity;
import java.io.IOException; import java.io.IOException;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.Timer;
import java.util.TimerTask;
import pl.droidsonroids.gif.GifDrawable; import pl.droidsonroids.gif.GifDrawable;
import pl.droidsonroids.gif.GifImageView; import pl.droidsonroids.gif.GifImageView;
...@@ -79,7 +76,7 @@ public class PictureTranslateStartActivity extends BaseActivity { ...@@ -79,7 +76,7 @@ public class PictureTranslateStartActivity extends BaseActivity {
playBanner(); playBanner();
} }
if (AppOpenAdManager.getInstance().isAdAvailable()) { if (TopOnAppOpenAdManager.getInstance().isAdAvailable()) {
showOpenAd(); showOpenAd();
} else { } else {
loadOpenAd(); loadOpenAd();
...@@ -88,7 +85,7 @@ public class PictureTranslateStartActivity extends BaseActivity { ...@@ -88,7 +85,7 @@ public class PictureTranslateStartActivity extends BaseActivity {
private void showOpenAd() { private void showOpenAd() {
handler.removeCallbacksAndMessages(null); handler.removeCallbacksAndMessages(null);
AppOpenAdManager.getInstance().setOnShowAdCompleteListener(new AppOpenAdManager.OnShowAdCompleteListener() { TopOnAppOpenAdManager.getInstance().setOnShowAdCompleteListener(new TopOnAppOpenAdManager.OnShowAdCompleteListener() {
@Override @Override
public void onShowAdComplete() { public void onShowAdComplete() {
PictureTranslateListMainActivity.PictureTranslateListMainActivityStart(PictureTranslateStartActivity.this); PictureTranslateListMainActivity.PictureTranslateListMainActivityStart(PictureTranslateStartActivity.this);
...@@ -102,11 +99,11 @@ public class PictureTranslateStartActivity extends BaseActivity { ...@@ -102,11 +99,11 @@ public class PictureTranslateStartActivity extends BaseActivity {
} }
}); });
AppOpenAdManager.getInstance().showAdIfAvailable(this); TopOnAppOpenAdManager.getInstance().showAdIfAvailable(this, findViewById(R.id.root_view));
} }
private void loadOpenAd() { private void loadOpenAd() {
AppOpenAdManager.getInstance().setOnLoadAdCompleteListener(new AppOpenAdManager.OnLoadAdCompleteListener() { TopOnAppOpenAdManager.getInstance().setOnLoadAdCompleteListener(new TopOnAppOpenAdManager.OnLoadAdCompleteListener() {
@Override @Override
public void onLoadAdComplete() { public void onLoadAdComplete() {
showOpenAd(); showOpenAd();
...@@ -117,7 +114,7 @@ public class PictureTranslateStartActivity extends BaseActivity { ...@@ -117,7 +114,7 @@ public class PictureTranslateStartActivity extends BaseActivity {
} }
}); });
AppOpenAdManager.getInstance().loadAd(); TopOnAppOpenAdManager.getInstance().loadAd();
} }
public void setProgressBarProgress(int i) { public void setProgressBarProgress(int i) {
...@@ -134,8 +131,8 @@ public class PictureTranslateStartActivity extends BaseActivity { ...@@ -134,8 +131,8 @@ public class PictureTranslateStartActivity extends BaseActivity {
@Override @Override
protected void onDestroy() { protected void onDestroy() {
AppOpenAdManager.getInstance().setOnShowAdCompleteListener(null); TopOnAppOpenAdManager.getInstance().setOnShowAdCompleteListener(null);
AppOpenAdManager.getInstance().setOnLoadAdCompleteListener(null); TopOnAppOpenAdManager.getInstance().setOnLoadAdCompleteListener(null);
super.onDestroy(); super.onDestroy();
if (handler != null) { if (handler != null) {
handler.removeCallbacksAndMessages(null); handler.removeCallbacksAndMessages(null);
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:id="@+id/root_view"
android:layout_height="match_parent"> android:layout_height="match_parent">
<pl.droidsonroids.gif.GifImageView <pl.droidsonroids.gif.GifImageView
......
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript { buildscript {
repositories { repositories {
mavenCentral() mavenCentral()
mavenLocal() mavenLocal()
google() google()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:7.4.2' classpath 'com.android.tools.build:gradle:7.4.2'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.20' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.20'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
} }
} }
...@@ -23,4 +18,5 @@ plugins { ...@@ -23,4 +18,5 @@ plugins {
task clean(type: Delete) { task clean(type: Delete) {
delete rootProject.buildDir delete rootProject.buildDir
} }
\ No newline at end of file
...@@ -3,6 +3,17 @@ pluginManagement { ...@@ -3,6 +3,17 @@ pluginManagement {
google() google()
mavenCentral() mavenCentral()
gradlePluginPortal() gradlePluginPortal()
maven { url "https://jfrog.anythinktech.com/artifactory/overseas_sdk" }
//applovin
maven { url 'https://artifacts.applovin.com/android' }
//Pangle
maven { url "https://artifact.bytedance.com/repository/pangle" }
//Mintegral
maven { url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea" }
} }
} }
dependencyResolutionManagement { dependencyResolutionManagement {
...@@ -11,6 +22,17 @@ dependencyResolutionManagement { ...@@ -11,6 +22,17 @@ dependencyResolutionManagement {
google() google()
mavenCentral() mavenCentral()
gradlePluginPortal() gradlePluginPortal()
maven { url "https://jfrog.anythinktech.com/artifactory/overseas_sdk" }
//applovin
maven { url 'https://artifacts.applovin.com/android' }
//Pangle
maven { url "https://artifact.bytedance.com/repository/pangle" }
//Mintegral
maven { url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea" }
} }
} }
rootProject.name = "PictureTranslate" rootProject.name = "PictureTranslate"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment