Add deploy optimizations tip for module developers (#2674)

This commit is contained in:
南宫雪珊 2023-10-11 17:58:00 +08:00 committed by GitHub
parent bb8b8bfab5
commit 8d80428d94
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 63 additions and 0 deletions

View File

@ -23,6 +23,9 @@ import android.app.Activity;
import android.app.Dialog;
import android.os.Build;
import android.os.Bundle;
import android.system.ErrnoException;
import android.system.Os;
import android.system.OsConstants;
import android.text.method.LinkMovementMethod;
import android.view.LayoutInflater;
import android.view.Menu;
@ -51,8 +54,12 @@ import org.lsposed.manager.util.Telemetry;
import org.lsposed.manager.util.UpdateUtil;
import org.lsposed.manager.util.chrome.LinkTransformationMethod;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.HashMap;
import java.util.concurrent.atomic.AtomicBoolean;
import rikka.core.util.ClipboardUtils;
import rikka.material.app.LocaleDelegate;
@ -146,6 +153,7 @@ public class HomeFragment extends BaseFragment implements MenuProvider {
}
binding.statusSummary.setText(String.format(LocaleDelegate.getDefaultLocale(), "%s (%d) - %s",
ConfigManager.getXposedVersionName(), ConfigManager.getXposedVersionCode(), ConfigManager.getApi()));
binding.developerWarningCard.setVisibility(isDeveloper() ? View.VISIBLE : View.GONE);
} else {
boolean isMagiskInstalled = ConfigManager.isMagiskInstalled();
if (isMagiskInstalled) {
@ -254,6 +262,27 @@ public class HomeFragment extends BaseFragment implements MenuProvider {
return manufacturer;
}
private boolean isDeveloper() {
var developer = new AtomicBoolean(false);
var pids = Paths.get("/data/local/tmp/.studio/ipids");
try (var dir = Files.list(pids)) {
dir.findFirst().ifPresent(name -> {
var pid = Integer.parseInt(name.getFileName().toString());
try {
Os.kill(pid, 0);
developer.set(true);
} catch (ErrnoException e) {
if (e.errno != OsConstants.ESRCH) {
developer.set(true);
}
}
});
} catch (IOException e) {
return false;
}
return developer.get();
}
public static class AboutDialog extends DialogFragment {
@NonNull
@Override

View File

@ -215,6 +215,38 @@
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:id="@+id/developer_warning_card"
style="@style/Widget.Material3.CardView.Outlined"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:visibility="gone"
app:cardBackgroundColor="?colorSecondaryContainer">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="?dialogPreferredPadding">
<com.google.android.material.textview.MaterialTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/developer_warning_title"
android:textAppearance="?textAppearanceTitleMedium"
android:textColor="?colorOnSecondaryContainer" />
<com.google.android.material.textview.MaterialTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/developer_warning_summary"
android:textAppearance="?textAppearanceBodyMedium"
android:textColor="?colorOnSecondaryContainer" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:id="@+id/info_card"
android:layout_width="match_parent"

View File

@ -55,6 +55,8 @@
<string name="system_prop_incorrect"><![CDATA[Some necessary system properties deleted or modified.<br/>Modules may invalidate occasionally.]]></string>
<string name="need_update">Need to update</string>
<string name="please_update_summary">Please install the latest version of LSPosed</string>
<string name="developer_warning_title">Tips for module developer</string>
<string name="developer_warning_summary">Please disable deploy optimizations on Android Studio, or use `gradlew installDebug` command to install. Otherwise the module apk will not be updated.</string>
<string name="info_api_version">API version</string>
<string name="info_framework_version">Framework version</string>
<string name="info_manager_package_name">Manager package name</string>