mirror of
https://github.com/fankes/termux-app.git
synced 2025-09-08 03:24:04 +08:00
Added: Add TERMUX_IS_DEBUG_BUILD, TERMUX_APK_RELEASE and TERMUX_APP_PID to termux shell environment
The `TERMUX_IS_DEBUG_BUILD` env variable will be set to `1` if termux APK is a debuggable APK and `0` otherwise. Note that the `dev_keystore.jks` shipped with termux app and plugin source code can also be used to create a release APK even though its mainly used for Github Debug Builds, in which case value will be `0`. The `TERMUX_APK_RELEASE` will be set to `GITHUB_DEBUG_BUILD`, `F_DROID` or `GOOGLE_PLAY_STORE` depending on release type. It will be set to `UNKNOWN` if signed with a custom key. The `TERMUX_APP_PID` will be set to the process of the main app process of the termux app package (`com.termux`), assuming its running when shell is started, like for `termux-float`. This variable is included since `pidof com.termux` does not return anything for release builds. It does work for debug builds and over adb/root. However, you still won't be able to get additional process info with `ps`, like that of threads, even with the pid and will need to use adb/root. However, `kill $TERMUX_APP_PID` will work from `termux-app` and `termux-float`. These variables can be used by termux devs and users for custom logic in future depending on release type.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.termux.shared.packages;
|
||||
|
||||
import android.app.ActivityManager;
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
@@ -248,4 +249,30 @@ public class PackageUtils {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the process id of the main app process of a package. This will work for sharedUserId. Note
|
||||
* that some apps have multiple processes for the app like with `android:process=":background"`
|
||||
* attribute in AndroidManifest.xml.
|
||||
*
|
||||
* @param context The {@link Context} for operations.
|
||||
* @param packageName The package name of the process.
|
||||
* @return Returns the process if found and running, otherwise {@code null}.
|
||||
*/
|
||||
@Nullable
|
||||
public static String getPackagePID(final Context context, String packageName) {
|
||||
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
|
||||
if (activityManager != null) {
|
||||
List<ActivityManager.RunningAppProcessInfo> processInfos = activityManager.getRunningAppProcesses();
|
||||
if (processInfos != null) {
|
||||
ActivityManager.RunningAppProcessInfo processInfo;
|
||||
for (int i = 0; i < processInfos.size(); i++) {
|
||||
processInfo = processInfos.get(i);
|
||||
if (processInfo.processName.equals(packageName))
|
||||
return String.valueOf(processInfo.pid);
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user