diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 511cf01..d3e7d00 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -43,6 +43,13 @@ android { "proguard-rules.pro" ) } + debug { + isMinifyEnabled = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } } kotlinOptions{ jvmTarget = "1.8" @@ -106,21 +113,20 @@ dependencies { //-----------------------applovin implementation("com.applovin:applovin-sdk:+") - implementation("com.applovin.mediation:bigoads-adapter:+") - implementation("com.applovin.mediation:chartboost-adapter:+") - implementation("com.google.android.gms:play-services-base:16.1.0") - implementation("com.applovin.mediation:fyber-adapter:+") -// implementation("com.applovin.mediation:google-ad-manager-adapter:+") -// implementation("com.applovin.mediation:google-adapter:+") - implementation("com.applovin.mediation:inmobi-adapter:+") - implementation("com.squareup.picasso:picasso:2.71828") - implementation("androidx.recyclerview:recyclerview:1.1.0") - implementation("com.applovin.mediation:ironsource-adapter:+") - implementation("com.applovin.mediation:vungle-adapter:+") - implementation("com.applovin.mediation:facebook-adapter:+") - implementation("com.applovin.mediation:moloco-adapter:+") - implementation("com.applovin.mediation:bytedance-adapter:+") - implementation("com.applovin.mediation:unityads-adapter:+") +// implementation("com.applovin.mediation:bigoads-adapter:+") +// implementation("com.applovin.mediation:chartboost-adapter:+") +// implementation("com.google.android.gms:play-services-base:16.1.0") +// implementation("com.applovin.mediation:fyber-adapter:+") +// +// implementation("com.applovin.mediation:inmobi-adapter:+") +// implementation("com.squareup.picasso:picasso:2.71828") +// implementation("androidx.recyclerview:recyclerview:1.1.0") +// implementation("com.applovin.mediation:ironsource-adapter:+") +// implementation("com.applovin.mediation:vungle-adapter:+") +// implementation("com.applovin.mediation:facebook-adapter:+") +// implementation("com.applovin.mediation:moloco-adapter:+") +// implementation("com.applovin.mediation:bytedance-adapter:+") +// implementation("com.applovin.mediation:unityads-adapter:+") //applovin The SDK collects the Google Advertising ID. This requires the Android Advertising ID (AAID) module (com.google.android.gms:play-services-ads-identifier). diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 22fa2d7..e529b60 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -43,3 +43,60 @@ -keep class * extends com.google.gson.reflect.TypeToken -keepattributes AnnotationDefault,RuntimeVisibleAnnotations + + + + # 使用R8全模式,对未保留的类剥离通用签名。挂起函数被包装在使用类型参数的continuation中。 + -keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation + + # 如果不保留,R8完整模式将从返回类型中剥离通用签名。 + -if interface * { @retrofit2.http.* public *** *(...); } + -keep,allowoptimization,allowshrinking,allowobfuscation class <3> + + # 在R8全模式下,对未保留的类剥离通用签名。 + -keep,allowobfuscation,allowshrinking class retrofit2.Response + + + + ## ---------Retrofit混淆方法--------------- + -dontwarn javax.annotation.** + -dontwarn javax.inject.** + # OkHttp3 + -dontwarn okhttp3.logging.** + -keep class okhttp3.internal.**{*;} + -dontwarn okio.** + # Retrofit + -dontwarn retrofit2.** + -keep class retrofit2.** { *; } + -keepattributes Signature + -keepattributes Exceptions + # RxJava RxAndroid + -dontwarn sun.misc.** + -keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* { + long producerIndex; + long consumerIndex; + } + -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef { + rx.internal.util.atomic.LinkedQueueNode producerNode; + } + -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef { + rx.internal.util.atomic.LinkedQueueNode consumerNode; + } + + # Gson + -keep class com.google.gson.stream.** { *; } + -keepattributes EnclosingMethod + +-keep class com.offline.music.playermp3.javabean.**{*;} + + + + + +-keep class org.chromium.** { *; } +-keep class androidx.media3.datasource.cronet.** { *; } +-keep class androidx.media3.exoplayer.scheduler.PlatformScheduler$PlatformSchedulerService { *; } + + + + diff --git a/app/src/main/java/com/offline/music/playermp3/adapter/AdapterHome.java b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterHome.java index 8e0971e..a5676ad 100644 --- a/app/src/main/java/com/offline/music/playermp3/adapter/AdapterHome.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/AdapterHome.java @@ -31,6 +31,7 @@ public class AdapterHome extends BaseAdapter @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { int itemViewType = getItemViewType(position); + CommonUtils.LogMsg("-----------pos="+position+"---itemViewType="+itemViewType); if (itemViewType == TYPE_ITEM) { VHolder itemHolder = (VHolder) holder; ItemHomeBinding vb = itemHolder.getVb(); diff --git a/app/src/main/java/com/offline/music/playermp3/adapter/BaseAdapter.java b/app/src/main/java/com/offline/music/playermp3/adapter/BaseAdapter.java index 7873eb5..fb8d43b 100644 --- a/app/src/main/java/com/offline/music/playermp3/adapter/BaseAdapter.java +++ b/app/src/main/java/com/offline/music/playermp3/adapter/BaseAdapter.java @@ -10,6 +10,7 @@ import androidx.viewbinding.ViewBinding; import com.offline.music.playermp3.api.HomeItemClickListener; import com.offline.music.playermp3.databinding.ItemFooterLoadingBinding; +import com.offline.music.playermp3.helper.CommonUtils; import java.util.ArrayList; import java.util.List; @@ -57,14 +58,16 @@ abstract public class BaseAdapter extends RecyclerView public void addLoadingFooter() { isLoadingAdded = true; notifyItemInserted(data.size()); + CommonUtils.LogMsg("--------addLoadingFooter---position="+data.size()); } // Hide loading footer public void removeLoadingFooter() { - isLoadingAdded = false; - int position = data.size(); - if (position > 0) + int position = getItemCount(); + if (position >= 0) notifyItemRemoved(position); + isLoadingAdded = false; + CommonUtils.LogMsg("---------removeLoadingFooter--position="+position); } @@ -90,6 +93,7 @@ abstract public class BaseAdapter extends RecyclerView @Override public int getItemCount() { + CommonUtils.LogMsg("---------getItemCount="); return data.size() + (isLoadingAdded ? 1 : 0); } diff --git a/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/HomeFragment.java b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/HomeFragment.java index 1ed96ff..791a578 100644 --- a/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/HomeFragment.java +++ b/app/src/main/java/com/offline/music/playermp3/ui/fragmnt/HomeFragment.java @@ -34,7 +34,7 @@ public class HomeFragment extends BaseFragment implements H private int requestCount = 1; - private int totalPage = 3; + private int totalPage = 4; private List childList = new ArrayList<>(); @@ -61,7 +61,10 @@ public class HomeFragment extends BaseFragment implements H Vb.tvRetry.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + Vb.layoutError.setVisibility(View.GONE); adapterHome.addLoadingFooter(); + + CommonUtils.LogMsg("-----------onClick"); vmHome.getHome(); } }); @@ -70,16 +73,17 @@ public class HomeFragment extends BaseFragment implements H @Override public void onChanged(ResponseHome responseHome) { if (responseHome == null) { + CommonUtils.LogMsg("-----------requestCount="+requestCount); adapterHome.removeLoadingFooter(); - requestCount--; - if(requestCount == 0){ + if(requestCount>1){ + requestCount--; + } + if (requestCount == 1) { Vb.layoutError.setVisibility(View.VISIBLE); - Vb.recyclerSongOfTheDay.setVisibility(View.GONE); } return; } Vb.layoutError.setVisibility(View.GONE); - Vb.recyclerSongOfTheDay.setVisibility(View.VISIBLE); List childList1 = responseHome.getChildList(); if (childList1 == null) return; @@ -104,7 +108,7 @@ public class HomeFragment extends BaseFragment implements H LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager(); if (layoutManager != null && layoutManager.findLastVisibleItemPosition() == childList.size() - 1) { if (requestCount < totalPage && !adapterHome.isLoadingAdded()) { - CommonUtils.LogMsg("------loadmore--"); + CommonUtils.LogMsg("------loadmore--requestCount="+requestCount); adapterHome.addLoadingFooter(); vmHome.getHomeMore(); requestCount++; @@ -134,13 +138,12 @@ public class HomeFragment extends BaseFragment implements H String pageType = data.getPageType(); String browseId = data.getBrowseId(); String twoSubtitle = data.getTwoSubtitle(); - if (pageType.equals(MyValue.PAGE_TYPE_MV)||pageType.equals(MyValue.PAGE_TYPE_MV_LIST)) { + if (pageType.equals(MyValue.PAGE_TYPE_MV) || pageType.equals(MyValue.PAGE_TYPE_MV_LIST)) { Intent intent = new Intent(activity, PlayActivity.class); intent.putExtra(MyValue.KEY_PLAY_ACTIVITY_MV, data); intent.putExtra(MyValue.KEY_ENTER_SOURCE, MyValue.TYPE_ENTER_SOURCE_MV); startActivity(intent); - } - else { + } else { Intent intent = new Intent(activity, CategoryListActivity.class); intent.putExtra(MyValue.KEY_CATEGORY_LIST_TYPE, pageType); intent.putExtra(MyValue.KEY_CATEGORY_LIST_SINGER_NAME, twoSubtitle); diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 880ca72..7099079 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -1,4 +1,4 @@ - + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="15dp" + android:layout_marginEnd="15dp" + android:layout_centerInParent="true" + android:visibility="gone"> - +