* Decompile and recreate Soul Browser v1.4.85 with APK CI builds Co-authored-by: KaKi87 <KaKi87@pm.me> * Fix CI build: include bundled google.jks and remove PR trigger The apktool build failed in CI because app/unknown/.../google.jks was excluded by the *.jks gitignore rule. Whitelist app-bundled JKS files and commit the missing resource. Also remove the redundant pull_request workflow trigger. Co-authored-by: KaKi87 <KaKi87@pm.me> * Change package ID to com.github.kaki87.soulbrowser Rename the application ID so the rebuilt APK can be installed alongside the original Soul Browser from Google Play. - Update AndroidManifest package, permissions, providers, and actions - Update R class references in smali (com/github/kaki87/soulbrowser/R) - Update shortcuts.xml targetPackage - Rename app label to "Soul Rebuild" for easy identification Co-authored-by: KaKi87 <KaKi87@pm.me> * Fix install compatibility: remove split APK metadata and bundle native libs The rebuilt APK still declared requiredSplitTypes and Play Store split metadata, causing Android to reject standalone installs as incompatible. - Remove requiredSplitTypes and split-related manifest meta-data - Merge native libs from all ABI splits with uncompressed storage - Page-align before signing for extractNativeLibs=false - Add .so to apktool doNotCompress list Co-authored-by: KaKi87 <KaKi87@pm.me> * Fix install failure: use apksigner v2/v3 and bundle arm64 native libs Target SDK 36 requires APK Signature Scheme v2+, but jarsigner only produces v1 signatures, causing Android to reject the install. - Sign with apksigner (v1+v2+v3) instead of jarsigner - Add arm64-v8a native libraries from universal Soul Browser 1.4.79 - Set extractNativeLibs=true for reliable sideload installs - Commit stable debug keystore for consistent signatures across builds Co-authored-by: KaKi87 <KaKi87@pm.me> * Add committed debug keystore for consistent APK signatures Co-authored-by: KaKi87 <KaKi87@pm.me> * Fix startup crash: use original classes2.dex desugar libraries Apktool recompiles smali_classes2 into a broken classes2.dex, causing ClassNotFoundException for j$.com.android.tools.r8.a at ML Kit init. Inject the original classes2.dex (Java 8+ desugar libs) after apktool build instead of using the recompiled version. Co-authored-by: KaKi87 <KaKi87@pm.me> * Fix missing drawable resources from density split APKs The base APK is an app bundle module; density-specific drawables like seek_thumb_nor_b live in config.xhdpi.apk and were missing after rebuild, causing Resources$NotFoundException at runtime. - Merge non-9-patch resources from split APKs before apktool build - Sync public.xml IDs from R smali only when backing files exist - Add 713 density-specific resource IDs to public.xml Co-authored-by: KaKi87 <KaKi87@pm.me> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
344 lines
17 KiB
Java
344 lines
17 KiB
Java
package com.mycompany.app.dialog;
|
|
|
|
import android.content.Context;
|
|
import android.graphics.drawable.ColorDrawable;
|
|
import android.view.ViewGroup;
|
|
import android.view.Window;
|
|
import android.widget.FrameLayout;
|
|
import android.widget.ImageView;
|
|
import android.widget.RelativeLayout;
|
|
import androidx.appcompat.widget.AppCompatTextView;
|
|
import com.mycompany.app.fragment.FragmentExpandView;
|
|
import com.mycompany.app.main.MainActivity;
|
|
import com.mycompany.app.main.MainApp;
|
|
import com.mycompany.app.main.MainItem;
|
|
import com.mycompany.app.main.MainListListener;
|
|
import com.mycompany.app.main.MainListView;
|
|
import com.mycompany.app.main.MainUtil;
|
|
import com.mycompany.app.soulbrowser.R;
|
|
import com.mycompany.app.view.MyButtonCheck;
|
|
import com.mycompany.app.view.MyButtonImage;
|
|
import com.mycompany.app.view.MyCoverView;
|
|
import com.mycompany.app.view.MyDialogBottom;
|
|
import com.mycompany.app.view.MyDialogNormal;
|
|
import com.mycompany.app.view.MyFadeImage;
|
|
import com.mycompany.app.view.MyHeaderView;
|
|
import com.mycompany.app.view.MyMainRelative;
|
|
import com.mycompany.app.view.MyProgressBar;
|
|
import com.mycompany.app.view.MyScrollBar;
|
|
import com.mycompany.app.web.WebViewActivity;
|
|
|
|
/* loaded from: classes3.dex */
|
|
public class DialogTabFind {
|
|
|
|
/* renamed from: a, reason: collision with root package name */
|
|
public MainActivity f14708a;
|
|
public Context b;
|
|
|
|
/* renamed from: c, reason: collision with root package name */
|
|
public TabFindListener f14709c;
|
|
public ViewGroup d;
|
|
public MyMainRelative e;
|
|
public MainListView f;
|
|
public final boolean g;
|
|
public final boolean h;
|
|
public MyDialogNormal i;
|
|
public MyDialogBottom j;
|
|
public MainListView.ListViewHolder k;
|
|
|
|
/* renamed from: com.mycompany.app.dialog.DialogTabFind$4, reason: invalid class name */
|
|
/* loaded from: classes3.dex */
|
|
class AnonymousClass4 implements Runnable {
|
|
public AnonymousClass4() {
|
|
}
|
|
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
DialogTabFind dialogTabFind = DialogTabFind.this;
|
|
MainListView mainListView = dialogTabFind.f;
|
|
if (mainListView != null) {
|
|
mainListView.I();
|
|
ViewGroup viewGroup = dialogTabFind.d;
|
|
if (viewGroup == null) {
|
|
return;
|
|
}
|
|
viewGroup.post(new Runnable() { // from class: com.mycompany.app.dialog.DialogTabFind.4.1
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
MyMainRelative myMainRelative;
|
|
DialogTabFind dialogTabFind2 = DialogTabFind.this;
|
|
ViewGroup viewGroup2 = dialogTabFind2.d;
|
|
if (viewGroup2 != null && (myMainRelative = dialogTabFind2.e) != null) {
|
|
viewGroup2.addView(myMainRelative, -1, -1);
|
|
ViewGroup viewGroup3 = dialogTabFind2.d;
|
|
if (viewGroup3 != null) {
|
|
viewGroup3.post(new Runnable() { // from class: com.mycompany.app.dialog.DialogTabFind.4.1.1
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
MainListView mainListView2 = DialogTabFind.this.f;
|
|
if (mainListView2 == null) {
|
|
return;
|
|
}
|
|
mainListView2.M(null);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
/* loaded from: classes3.dex */
|
|
public interface TabFindListener {
|
|
void a();
|
|
|
|
void b(int i);
|
|
|
|
void c();
|
|
}
|
|
|
|
public DialogTabFind(WebViewActivity webViewActivity, Context context, ViewGroup viewGroup, boolean z, boolean z2, TabFindListener tabFindListener) {
|
|
this.f14708a = webViewActivity;
|
|
this.b = context;
|
|
this.d = viewGroup;
|
|
this.f14709c = tabFindListener;
|
|
this.g = z;
|
|
this.h = z2;
|
|
if (viewGroup == null) {
|
|
return;
|
|
}
|
|
viewGroup.post(new Runnable() { // from class: com.mycompany.app.dialog.DialogTabFind.1
|
|
/* JADX WARN: Type inference failed for: r2v5, types: [java.lang.Object, com.mycompany.app.main.MainListView$ListViewHolder] */
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
final DialogTabFind dialogTabFind = DialogTabFind.this;
|
|
MainActivity mainActivity = dialogTabFind.f14708a;
|
|
if (mainActivity != null) {
|
|
int i = R.id.list_icon_frame;
|
|
int i2 = R.id.list_bottom_view;
|
|
int i3 = R.id.list_cast_icon;
|
|
MyMainRelative myMainRelative = new MyMainRelative(mainActivity);
|
|
myMainRelative.setLayoutParams(new ViewGroup.LayoutParams(-1, -1));
|
|
FrameLayout frameLayout = new FrameLayout(mainActivity);
|
|
myMainRelative.addView(frameLayout, androidx.work.impl.workers.a.h(-1, -1, 2, i2));
|
|
FragmentExpandView fragmentExpandView = new FragmentExpandView(mainActivity);
|
|
fragmentExpandView.setGroupIndicator(null);
|
|
fragmentExpandView.setChildDivider(null);
|
|
fragmentExpandView.setDivider(null);
|
|
fragmentExpandView.setVerticalScrollBarEnabled(false);
|
|
fragmentExpandView.setHorizontalScrollBarEnabled(false);
|
|
fragmentExpandView.setSelector(new ColorDrawable(0));
|
|
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(-1, -1);
|
|
layoutParams.topMargin = MainApp.b1;
|
|
frameLayout.addView(fragmentExpandView, layoutParams);
|
|
MyScrollBar myScrollBar = new MyScrollBar(mainActivity);
|
|
int i4 = MainApp.b1;
|
|
int i5 = MainApp.i1;
|
|
myScrollBar.O = i4;
|
|
myScrollBar.P = i5;
|
|
myScrollBar.setVisibility(4);
|
|
FrameLayout.LayoutParams layoutParams2 = new FrameLayout.LayoutParams(MainApp.g1, -1);
|
|
layoutParams2.gravity = 8388613;
|
|
frameLayout.addView(myScrollBar, layoutParams2);
|
|
MyFadeImage myFadeImage = new MyFadeImage(mainActivity);
|
|
ImageView.ScaleType scaleType = ImageView.ScaleType.CENTER_INSIDE;
|
|
myFadeImage.setScaleType(scaleType);
|
|
myFadeImage.setImageResource(R.drawable.logo_gray);
|
|
myFadeImage.setVisibility(8);
|
|
FrameLayout.LayoutParams layoutParams3 = new FrameLayout.LayoutParams(-1, -1);
|
|
layoutParams3.topMargin = MainApp.b1;
|
|
frameLayout.addView(myFadeImage, layoutParams3);
|
|
MyCoverView myCoverView = new MyCoverView(mainActivity);
|
|
myCoverView.setVisibility(8);
|
|
FrameLayout.LayoutParams layoutParams4 = new FrameLayout.LayoutParams(-1, -1);
|
|
layoutParams4.topMargin = MainApp.b1;
|
|
frameLayout.addView(myCoverView, layoutParams4);
|
|
MyHeaderView myHeaderView = new MyHeaderView(mainActivity);
|
|
frameLayout.addView(myHeaderView, -1, MainApp.b1);
|
|
MyButtonImage myButtonImage = new MyButtonImage(mainActivity);
|
|
myButtonImage.setScaleType(scaleType);
|
|
RelativeLayout.LayoutParams layoutParams5 = new RelativeLayout.LayoutParams(MainApp.g1, MainApp.b1);
|
|
layoutParams5.setMarginStart(MainApp.F1);
|
|
myHeaderView.addView(myButtonImage, layoutParams5);
|
|
AppCompatTextView appCompatTextView = new AppCompatTextView(mainActivity, null);
|
|
appCompatTextView.setGravity(16);
|
|
appCompatTextView.setSingleLine(true);
|
|
appCompatTextView.setTextSize(1, 18.0f);
|
|
RelativeLayout.LayoutParams layoutParams6 = new RelativeLayout.LayoutParams(-1, MainApp.b1);
|
|
layoutParams6.addRule(16, i);
|
|
layoutParams6.setMarginStart(MainApp.i1);
|
|
myHeaderView.addView(appCompatTextView, layoutParams6);
|
|
FrameLayout frameLayout2 = new FrameLayout(mainActivity);
|
|
frameLayout2.setId(i);
|
|
RelativeLayout.LayoutParams layoutParams7 = new RelativeLayout.LayoutParams(-2, MainApp.g1);
|
|
layoutParams7.addRule(16, i3);
|
|
layoutParams7.topMargin = MainApp.G1;
|
|
myHeaderView.addView(frameLayout2, layoutParams7);
|
|
AppCompatTextView appCompatTextView2 = new AppCompatTextView(mainActivity, null);
|
|
int i6 = MainApp.F1;
|
|
appCompatTextView2.setPadding(i6, 0, i6, 0);
|
|
appCompatTextView2.setGravity(16);
|
|
appCompatTextView2.setTextDirection(3);
|
|
appCompatTextView2.setTextSize(1, 16.0f);
|
|
appCompatTextView2.setVisibility(8);
|
|
FrameLayout.LayoutParams layoutParams8 = new FrameLayout.LayoutParams(-2, MainApp.g1);
|
|
layoutParams8.gravity = 8388613;
|
|
layoutParams8.setMarginEnd((int) MainUtil.G(mainActivity, 52.0f));
|
|
frameLayout2.addView(appCompatTextView2, layoutParams8);
|
|
MyButtonCheck myButtonCheck = new MyButtonCheck(mainActivity);
|
|
myButtonCheck.setVisibility(8);
|
|
int i7 = MainApp.g1;
|
|
FrameLayout.LayoutParams layoutParams9 = new FrameLayout.LayoutParams(i7, i7);
|
|
layoutParams9.gravity = 8388613;
|
|
frameLayout2.addView(myButtonCheck, layoutParams9);
|
|
FrameLayout frameLayout3 = new FrameLayout(mainActivity);
|
|
frameLayout3.setId(i3);
|
|
frameLayout3.setVisibility(4);
|
|
RelativeLayout.LayoutParams layoutParams10 = new RelativeLayout.LayoutParams(-2, MainApp.b1);
|
|
layoutParams10.addRule(21);
|
|
myHeaderView.addView(frameLayout3, layoutParams10);
|
|
MyProgressBar myProgressBar = new MyProgressBar(mainActivity);
|
|
myProgressBar.d((int) MainUtil.G(mainActivity, 1.5f));
|
|
FrameLayout.LayoutParams layoutParams11 = new FrameLayout.LayoutParams(-1, (int) MainUtil.G(mainActivity, 2.0f));
|
|
layoutParams11.topMargin = MainApp.b1;
|
|
frameLayout.addView(myProgressBar, layoutParams11);
|
|
RelativeLayout relativeLayout = new RelativeLayout(mainActivity);
|
|
relativeLayout.setId(i2);
|
|
RelativeLayout.LayoutParams layoutParams12 = new RelativeLayout.LayoutParams(-1, -2);
|
|
layoutParams12.addRule(12);
|
|
myMainRelative.addView(relativeLayout, layoutParams12);
|
|
FrameLayout frameLayout4 = new FrameLayout(mainActivity);
|
|
frameLayout4.setVisibility(8);
|
|
relativeLayout.addView(frameLayout4, -1, -2);
|
|
dialogTabFind.e = myMainRelative;
|
|
myMainRelative.setWindow(dialogTabFind.f14708a.getWindow());
|
|
if (dialogTabFind.h) {
|
|
dialogTabFind.e.a();
|
|
}
|
|
?? obj = new Object();
|
|
obj.f16736a = myMainRelative;
|
|
obj.b = frameLayout;
|
|
obj.d = myHeaderView;
|
|
obj.e = myButtonImage;
|
|
obj.f = appCompatTextView;
|
|
obj.o = appCompatTextView2;
|
|
obj.p = myButtonCheck;
|
|
obj.q = myProgressBar;
|
|
obj.r = fragmentExpandView;
|
|
obj.s = myScrollBar;
|
|
obj.t = myFadeImage;
|
|
obj.u = myCoverView;
|
|
obj.v = frameLayout3;
|
|
obj.w = frameLayout4;
|
|
dialogTabFind.k = obj;
|
|
ViewGroup viewGroup2 = dialogTabFind.d;
|
|
if (viewGroup2 == null) {
|
|
return;
|
|
}
|
|
viewGroup2.post(new Runnable() { // from class: com.mycompany.app.dialog.DialogTabFind.2
|
|
/* JADX WARN: Type inference failed for: r4v0, types: [com.mycompany.app.main.MainListView$ListViewConfig, java.lang.Object] */
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
MainActivity mainActivity2;
|
|
Context context2;
|
|
final DialogTabFind dialogTabFind2 = DialogTabFind.this;
|
|
MainListView.ListViewHolder listViewHolder = dialogTabFind2.k;
|
|
dialogTabFind2.k = null;
|
|
if (listViewHolder != null && (mainActivity2 = dialogTabFind2.f14708a) != null && (context2 = dialogTabFind2.b) != null) {
|
|
?? obj2 = new Object();
|
|
obj2.f16734a = 42;
|
|
obj2.b = true;
|
|
obj2.f16735c = true;
|
|
obj2.e = listViewHolder;
|
|
obj2.g = MainApp.b1;
|
|
obj2.h = true;
|
|
obj2.j = true;
|
|
obj2.k = true;
|
|
obj2.l = dialogTabFind2.g;
|
|
MainListView mainListView = new MainListView(mainActivity2, context2, obj2, new MainListListener() { // from class: com.mycompany.app.dialog.DialogTabFind.3
|
|
@Override // com.mycompany.app.main.MainListListener
|
|
public final void f(int i8, MainItem.ChildItem childItem, boolean z3) {
|
|
TabFindListener tabFindListener2 = DialogTabFind.this.f14709c;
|
|
if (tabFindListener2 != null) {
|
|
tabFindListener2.b(childItem.t);
|
|
}
|
|
}
|
|
|
|
@Override // com.mycompany.app.main.MainListListener
|
|
public final void g() {
|
|
TabFindListener tabFindListener2 = DialogTabFind.this.f14709c;
|
|
if (tabFindListener2 != null) {
|
|
tabFindListener2.c();
|
|
}
|
|
}
|
|
|
|
@Override // com.mycompany.app.main.MainListListener
|
|
public final void j() {
|
|
TabFindListener tabFindListener2 = DialogTabFind.this.f14709c;
|
|
if (tabFindListener2 != null) {
|
|
tabFindListener2.a();
|
|
}
|
|
}
|
|
});
|
|
dialogTabFind2.f = mainListView;
|
|
MyDialogNormal myDialogNormal = dialogTabFind2.i;
|
|
if (myDialogNormal != null) {
|
|
mainListView.V0 = myDialogNormal;
|
|
} else {
|
|
MyDialogBottom myDialogBottom = dialogTabFind2.j;
|
|
if (myDialogBottom != null) {
|
|
mainListView.W0 = myDialogBottom;
|
|
}
|
|
}
|
|
ViewGroup viewGroup3 = dialogTabFind2.d;
|
|
if (viewGroup3 != null) {
|
|
viewGroup3.post(new AnonymousClass4());
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
public final void a() {
|
|
MyMainRelative myMainRelative;
|
|
int i;
|
|
MainListView mainListView = this.f;
|
|
if (mainListView != null && mainListView.b0(null) && (myMainRelative = this.e) != null) {
|
|
Window window = this.f14708a.getWindow();
|
|
if (MainApp.K1) {
|
|
i = -16777216;
|
|
} else {
|
|
i = -460552;
|
|
}
|
|
myMainRelative.b(window, i);
|
|
}
|
|
}
|
|
|
|
public final void b() {
|
|
MainListView mainListView = this.f;
|
|
if (mainListView != null) {
|
|
mainListView.Q(true);
|
|
this.f.O();
|
|
this.f = null;
|
|
}
|
|
ViewGroup viewGroup = this.d;
|
|
if (viewGroup != null) {
|
|
MyMainRelative myMainRelative = this.e;
|
|
if (myMainRelative != null) {
|
|
viewGroup.removeView(myMainRelative);
|
|
}
|
|
this.d = null;
|
|
}
|
|
this.f14708a = null;
|
|
this.b = null;
|
|
this.f14709c = null;
|
|
this.e = null;
|
|
this.i = null;
|
|
this.j = null;
|
|
}
|
|
}
|