diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d859b97f..4060d550 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,12 +1,7 @@ name: Main on: - push: - branches: [ master ] - paths-ignore: - - '.github/ISSUE_TEMPLATE/**' - - '.github/workflows/issue.yml' - - '**.md' + workflow_dispatch: jobs: build: @@ -37,7 +32,7 @@ jobs: - name: Write key if: github.event_name != 'pull_request' && github.ref == 'refs/heads/master' run: | - echo officialBuild=true >> local.properties + echo officialBuild=false >> local.properties echo buildWithGitSuffix=true >> local.properties echo storePassword='${{ secrets.KEY_STORE_PASSWORD }}' >> local.properties echo keyAlias='${{ secrets.ALIAS }}' >> local.properties @@ -45,6 +40,12 @@ jobs: echo fileDir=`pwd`/key.jks >> local.properties echo "${{ secrets.KEY_STORE }}" | base64 --decode > key.jks echo "${{ secrets.GOOGLE_SERVICES_JSON }}" | base64 --decode > app/google-services.json + # The 'google-services.json' file is only used when the official build variant is enabled. + + - name: Validate key + run: | + keytool -list -keystore key.jks -storepass ${{ secrets.KEY_STORE_PASSWORD }} -alias ${{ secrets.ALIAS }} -storetype JKS + if: github.event_name != 'pull_request' && github.ref == 'refs/heads/master' - name: Cache gradle uses: actions/cache@v3 @@ -91,18 +92,3 @@ jobs: with: name: mappings path: "app/build/outputs/mapping/release" - - - name: Post to group - if: ${{ github.event_name != 'pull_request' && success() && github.ref == 'refs/heads/master' }} - env: - CHANNEL_ID: ${{ secrets.TELEGRAM_CHANNEL }} - TOPIC_ID: ${{ secrets.TELEGRAM_TOPIC }} - BOT_TOKEN: ${{ secrets.TELEGRAM_TOKEN }} - COMMIT_URL: ${{ github.event.head_commit.url }} - COMMIT_MESSAGE: ${{ github.event.head_commit.message }} - run: | - OUTPUT="app/build/apk/" - export release=$(find $OUTPUT -name "HMA*-release.apk") - export debug=$(find $OUTPUT -name "HMA*-debug.apk") - ESCAPED=`python3 -c 'import json,os,urllib.parse; msg = json.dumps(os.environ["COMMIT_MESSAGE"]); print(urllib.parse.quote(msg if len(msg) <= 1024 else json.dumps(os.environ["COMMIT_URL"])))'` - curl -v "https://api.telegram.org/bot${BOT_TOKEN}/sendMediaGroup?chat_id=${CHANNEL_ID}&message_thread_id=${TOPIC_ID}&media=%5B%7B%22type%22:%22document%22,%20%22media%22:%22attach://release%22%7D,%7B%22type%22:%22document%22,%20%22media%22:%22attach://debug%22,%22caption%22:${ESCAPED}%7D%5D" -F release="@$release" -F debug="@$debug" diff --git a/README.md b/README.md index 3345de80..22a8a044 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,14 @@ - English - [中文(简体)](README_zh_CN.md) -## About this module +# !!! What are you looking at? This is not an official build. +### Visit for official builds + +# Reminder: Changing the package name is not an appropriate method to evade detection. +### For devices running Android 10 or below, you can attempt to use https://github.com/Magisk-Modules-Alt-Repo/data_isolation_support for data isolation. + + +## About this module Although it's bad practice to detect the installation of specific apps, not every app using root provides random package name support. In this case, if apps related to root (such as Fake Location and Storage Isolation) are detected, it is tantamount to detecting that the device is rooted. diff --git a/README_zh_CN.md b/README_zh_CN.md index 26050dd9..ce25adef 100644 --- a/README_zh_CN.md +++ b/README_zh_CN.md @@ -13,6 +13,12 @@ - [English](README.md) - 中文(简体) +# !!!你在看什么?这不是官方构建 +### 访问 获取官方构建 + +# 提醒:修改包名不是一个合适的躲避检测的方法 +### 对于Android 10以下的设备,您可以尝试使用进行数据隔离 + ## 关于该模块 虽然“检测安装的应用”是不正确的做法,但是并不是所有的与 root 相关联的插件类应用都提供了随机包名支持。这就意味着检测到安装了此类应用(如 Fake Location 、存储空间隔离)与检测到了 root 本身区别不大。(会使用检测手段的 app 可不会认为你是在“我就蹭蹭不进去”) 与此同时,部分“不安分”的应用会使用各种漏洞绕过系统权限来获取你的应用列表,从而对你建立用户画像。(如陈叔叔将安装了 V2Ray 的用户分为一类),或是类似于某某校园某某乐跑的软件会要求你卸载作弊软件。 diff --git a/app/build.gradle.kts b/app/build.gradle.kts index b5915bdb..caf7ac1d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -18,7 +18,7 @@ if (officialBuild) { } android { - namespace = "com.tsng.hidemyapplist" + namespace = "fuck.app.check" buildFeatures { buildConfig = true diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 143d9c5b..dd615895 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -13,6 +13,6 @@ -keep class icu.nullptr.hidemyapplist.data.UpdateData$* { *; } -keep,allowoptimization class * extends androidx.preference.PreferenceFragmentCompat --keepclassmembers class com.tsng.hidemyapplist.databinding.** { +-keepclassmembers class fuck.app.check.databinding.** { public ; } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 62995f53..5653d363 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -47,7 +47,7 @@ diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png index 415d864c..5bd4bae4 100644 Binary files a/app/src/main/ic_launcher-playstore.png and b/app/src/main/ic_launcher-playstore.png differ diff --git a/app/src/main/ic_launcher-playstore.psd.7z b/app/src/main/ic_launcher-playstore.psd.7z new file mode 100644 index 00000000..69deefe3 Binary files /dev/null and b/app/src/main/ic_launcher-playstore.psd.7z differ diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/MyApp.kt b/app/src/main/java/icu/nullptr/hidemyapplist/MyApp.kt index 63b913a6..764dda90 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/MyApp.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/MyApp.kt @@ -3,7 +3,7 @@ package icu.nullptr.hidemyapplist import android.annotation.SuppressLint import android.app.Application import androidx.appcompat.app.AppCompatDelegate -import com.tsng.hidemyapplist.R +import fuck.app.check.R import icu.nullptr.hidemyapplist.service.ConfigManager import icu.nullptr.hidemyapplist.service.PrefManager import icu.nullptr.hidemyapplist.ui.receiver.AppChangeReceiver diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/service/ConfigManager.kt b/app/src/main/java/icu/nullptr/hidemyapplist/service/ConfigManager.kt index 7a0aeb08..dc4cb282 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/service/ConfigManager.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/service/ConfigManager.kt @@ -2,7 +2,7 @@ package icu.nullptr.hidemyapplist.service import android.os.Build import android.util.Log -import com.tsng.hidemyapplist.R +import fuck.app.check.R import icu.nullptr.hidemyapplist.common.BuildConfig import icu.nullptr.hidemyapplist.common.JsonConfig import icu.nullptr.hidemyapplist.hmaApp diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/service/PrefManager.kt b/app/src/main/java/icu/nullptr/hidemyapplist/service/PrefManager.kt index 8f4c706f..b5f25aad 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/service/PrefManager.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/service/PrefManager.kt @@ -61,7 +61,7 @@ object PrefManager { get() = pref.getBoolean(PREF_HIDE_ICON, false) set(value) { pref.edit().putBoolean(PREF_HIDE_ICON, value).apply() - val component = ComponentName(hmaApp, "com.tsng.hidemyapplist.MainActivityLauncher") + val component = ComponentName(hmaApp, "fuck.app.check.MainActivityLauncher") val status = if (value) PackageManager.COMPONENT_ENABLED_STATE_DISABLED else PackageManager.COMPONENT_ENABLED_STATE_ENABLED diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/activity/AboutActivity.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/activity/AboutActivity.kt index 88266785..e69bbfa9 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/activity/AboutActivity.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/activity/AboutActivity.kt @@ -4,8 +4,8 @@ import android.annotation.SuppressLint import android.widget.ImageView import android.widget.TextView import com.drakeet.about.* -import com.tsng.hidemyapplist.BuildConfig -import com.tsng.hidemyapplist.R +import fuck.app.check.BuildConfig +import fuck.app.check.R class AboutActivity : AbsAboutActivity() { @@ -33,6 +33,8 @@ class AboutActivity : AbsAboutActivity() { items.add(Contributor(R.drawable.cont_icon_designer, "辉少菌", "Icon designer", "http://www.coolapk.com/u/1560270")) items.add(Line()) items.add(Contributor(R.drawable.cont_cpp_master, "LoveSy", "Idea provider", "https://github.com/yujincheng08")) + items.add(Line()) + items.add(Contributor(R.drawable.cont_mod_author, "linying23333", "Mod", "https://github.com/linying2024")) items.add(Category(getString(R.string.about_support))) items.add(Card("Github\nhttps://github.com/Dr-TSNG/Hide-My-Applist")) @@ -41,6 +43,9 @@ class AboutActivity : AbsAboutActivity() { items.add(Line()) items.add(Card("Play store\nhttps://play.google.com/store/apps/details?id=com.tsng.hidemyapplist")) + items.add(Category(getString(R.string.about_unofficial_support))) + items.add(Card("Github\nhttps://github.com/linying2024/Hide-My-Applist-Clone")) + items.add(Category(getString(R.string.about_open_source))) items.add(License("MultiType", "drakeet", License.APACHE_2, "https://github.com/drakeet/MultiType")) items.add(License("about-page", "drakeet", License.APACHE_2, "https://github.com/drakeet/about-page")) diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/activity/MainActivity.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/activity/MainActivity.kt index 5396c68e..2ef0f59d 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/activity/MainActivity.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/activity/MainActivity.kt @@ -8,8 +8,8 @@ import androidx.navigation.fragment.NavHostFragment import androidx.navigation.ui.NavigationUI.setupWithNavController import com.google.android.gms.ads.MobileAds import com.google.android.material.color.DynamicColors -import com.tsng.hidemyapplist.R -import com.tsng.hidemyapplist.databinding.ActivityMainBinding +import fuck.app.check.R +import fuck.app.check.databinding.ActivityMainBinding import icu.nullptr.hidemyapplist.ui.util.ThemeUtils import rikka.material.app.MaterialActivity diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/adapter/LogAdapter.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/adapter/LogAdapter.kt index cf84e41e..058b3bca 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/adapter/LogAdapter.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/adapter/LogAdapter.kt @@ -7,8 +7,8 @@ import android.os.Build import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import com.tsng.hidemyapplist.R -import com.tsng.hidemyapplist.databinding.LogItemViewBinding +import fuck.app.check.R +import fuck.app.check.databinding.LogItemViewBinding import icu.nullptr.hidemyapplist.service.PrefManager import icu.nullptr.hidemyapplist.ui.util.ThemeUtils.themeColor import java.util.regex.Pattern diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/adapter/TemplateAdapter.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/adapter/TemplateAdapter.kt index 5519366e..36e26b05 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/adapter/TemplateAdapter.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/adapter/TemplateAdapter.kt @@ -2,7 +2,7 @@ package icu.nullptr.hidemyapplist.ui.adapter import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import com.tsng.hidemyapplist.R +import fuck.app.check.R import icu.nullptr.hidemyapplist.service.ConfigManager import icu.nullptr.hidemyapplist.ui.view.ListItemView import java.text.Collator diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppManageFragment.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppManageFragment.kt index 440536e0..b8d8fc0c 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppManageFragment.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppManageFragment.kt @@ -2,7 +2,7 @@ package icu.nullptr.hidemyapplist.ui.fragment import android.os.Bundle import com.google.android.material.transition.MaterialSharedAxis -import com.tsng.hidemyapplist.R +import fuck.app.check.R import icu.nullptr.hidemyapplist.service.ConfigManager import icu.nullptr.hidemyapplist.ui.adapter.AppManageAdapter import icu.nullptr.hidemyapplist.ui.util.navController diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppSelectFragment.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppSelectFragment.kt index b576566d..6d2d975e 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppSelectFragment.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppSelectFragment.kt @@ -11,8 +11,8 @@ import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager import by.kirich1409.viewbindingdelegate.viewBinding import com.google.android.gms.ads.AdRequest -import com.tsng.hidemyapplist.R -import com.tsng.hidemyapplist.databinding.FragmentAppSelectBinding +import fuck.app.check.R +import fuck.app.check.databinding.FragmentAppSelectBinding import icu.nullptr.hidemyapplist.service.PrefManager import icu.nullptr.hidemyapplist.ui.adapter.AppSelectAdapter import icu.nullptr.hidemyapplist.ui.util.navController diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppSettingsFragment.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppSettingsFragment.kt index f3dadc08..64636b33 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppSettingsFragment.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppSettingsFragment.kt @@ -12,8 +12,8 @@ import androidx.navigation.fragment.navArgs import androidx.preference.* import by.kirich1409.viewbindingdelegate.viewBinding import com.google.android.material.dialog.MaterialAlertDialogBuilder -import com.tsng.hidemyapplist.R -import com.tsng.hidemyapplist.databinding.FragmentSettingsBinding +import fuck.app.check.R +import fuck.app.check.databinding.FragmentSettingsBinding import icu.nullptr.hidemyapplist.common.JsonConfig import icu.nullptr.hidemyapplist.service.ConfigManager import icu.nullptr.hidemyapplist.ui.util.navController diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/HomeFragment.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/HomeFragment.kt index caa27923..e8e7fa38 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/HomeFragment.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/HomeFragment.kt @@ -16,9 +16,9 @@ import by.kirich1409.viewbindingdelegate.viewBinding import com.google.android.gms.ads.AdRequest import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.transition.MaterialElevationScale -import com.tsng.hidemyapplist.BuildConfig -import com.tsng.hidemyapplist.R -import com.tsng.hidemyapplist.databinding.FragmentHomeBinding +import fuck.app.check.BuildConfig +import fuck.app.check.R +import fuck.app.check.databinding.FragmentHomeBinding import icu.nullptr.hidemyapplist.data.fetchLatestUpdate import icu.nullptr.hidemyapplist.hmaApp import icu.nullptr.hidemyapplist.service.ConfigManager diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/LogsFragment.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/LogsFragment.kt index f583a26b..4c7a3362 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/LogsFragment.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/LogsFragment.kt @@ -9,8 +9,8 @@ import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import by.kirich1409.viewbindingdelegate.viewBinding -import com.tsng.hidemyapplist.R -import com.tsng.hidemyapplist.databinding.FragmentLogsBinding +import fuck.app.check.R +import fuck.app.check.databinding.FragmentLogsBinding import icu.nullptr.hidemyapplist.hmaApp import icu.nullptr.hidemyapplist.service.PrefManager import icu.nullptr.hidemyapplist.service.ServiceClient diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/SettingsFragment.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/SettingsFragment.kt index 0b90cc58..ff3bf3e9 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/SettingsFragment.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/SettingsFragment.kt @@ -15,8 +15,8 @@ import androidx.preference.PreferenceFragmentCompat import androidx.preference.SwitchPreference import by.kirich1409.viewbindingdelegate.viewBinding import com.google.android.material.dialog.MaterialAlertDialogBuilder -import com.tsng.hidemyapplist.R -import com.tsng.hidemyapplist.databinding.FragmentSettingsBinding +import fuck.app.check.R +import fuck.app.check.databinding.FragmentSettingsBinding import icu.nullptr.hidemyapplist.common.CommonUtils import icu.nullptr.hidemyapplist.common.Constants import icu.nullptr.hidemyapplist.hmaApp diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/TemplateManageFragment.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/TemplateManageFragment.kt index c118963e..b0d046b4 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/TemplateManageFragment.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/TemplateManageFragment.kt @@ -11,8 +11,8 @@ import androidx.navigation.fragment.FragmentNavigatorExtras import androidx.recyclerview.widget.LinearLayoutManager import by.kirich1409.viewbindingdelegate.viewBinding import com.google.android.material.transition.MaterialContainerTransform -import com.tsng.hidemyapplist.R -import com.tsng.hidemyapplist.databinding.FragmentTemplateManageBinding +import fuck.app.check.R +import fuck.app.check.databinding.FragmentTemplateManageBinding import icu.nullptr.hidemyapplist.common.JsonConfig import icu.nullptr.hidemyapplist.service.ConfigManager import icu.nullptr.hidemyapplist.ui.adapter.TemplateAdapter diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/TemplateSettingsFragment.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/TemplateSettingsFragment.kt index a0f13c97..e019af22 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/TemplateSettingsFragment.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/TemplateSettingsFragment.kt @@ -11,8 +11,8 @@ import androidx.navigation.fragment.navArgs import by.kirich1409.viewbindingdelegate.viewBinding import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.transition.MaterialContainerTransform -import com.tsng.hidemyapplist.R -import com.tsng.hidemyapplist.databinding.FragmentTemplateSettingsBinding +import fuck.app.check.R +import fuck.app.check.databinding.FragmentTemplateSettingsBinding import icu.nullptr.hidemyapplist.service.ConfigManager import icu.nullptr.hidemyapplist.ui.util.navController import icu.nullptr.hidemyapplist.ui.util.setupToolbar diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/util/ThemeUtils.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/util/ThemeUtils.kt index 5544945a..f22f9572 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/util/ThemeUtils.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/util/ThemeUtils.kt @@ -8,7 +8,7 @@ import androidx.annotation.ColorRes import androidx.annotation.StyleRes import androidx.fragment.app.Fragment import com.google.android.material.color.DynamicColors -import com.tsng.hidemyapplist.R +import fuck.app.check.R import icu.nullptr.hidemyapplist.service.PrefManager import rikka.core.util.ResourceUtils diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/view/AppItemView.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/view/AppItemView.kt index c458cd17..56d2a004 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/view/AppItemView.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/view/AppItemView.kt @@ -5,7 +5,7 @@ import android.util.AttributeSet import android.widget.LinearLayout import by.kirich1409.viewbindingdelegate.CreateMethod import by.kirich1409.viewbindingdelegate.viewBinding -import com.tsng.hidemyapplist.databinding.AppItemViewBinding +import fuck.app.check.databinding.AppItemViewBinding import icu.nullptr.hidemyapplist.util.PackageHelper class AppItemView @JvmOverloads constructor( diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/view/ListItemView.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/view/ListItemView.kt index 28100c29..16da6fd0 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/view/ListItemView.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/view/ListItemView.kt @@ -6,8 +6,8 @@ import android.widget.LinearLayout import androidx.annotation.DrawableRes import by.kirich1409.viewbindingdelegate.CreateMethod import by.kirich1409.viewbindingdelegate.viewBinding -import com.tsng.hidemyapplist.R -import com.tsng.hidemyapplist.databinding.ListItemViewBinding +import fuck.app.check.R +import fuck.app.check.databinding.ListItemViewBinding class ListItemView @JvmOverloads constructor( context: Context, diff --git a/app/src/main/res/drawable/cont_mod_author.webp b/app/src/main/res/drawable/cont_mod_author.webp new file mode 100644 index 00000000..8bbf3b19 Binary files /dev/null and b/app/src/main/res/drawable/cont_mod_author.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png index c9b80dfa..a5a01848 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_background.png b/app/src/main/res/mipmap-hdpi/ic_launcher_background.png index b2b85164..72f8ab57 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_background.png and b/app/src/main/res/mipmap-hdpi/ic_launcher_background.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png index 67c249d8..03c81f90 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png and b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png index b6080e82..c2c56ca2 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png index 6be4bad1..a2d31e05 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_background.png b/app/src/main/res/mipmap-mdpi/ic_launcher_background.png index eaea29fd..de791c4e 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_background.png and b/app/src/main/res/mipmap-mdpi/ic_launcher_background.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png index 6d634a13..82601cf0 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png and b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png index 7ee33449..7767dac0 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png index bf2475ad..00dbd469 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png index e3c518a6..7b600135 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png index af6e50c1..bafdd660 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png index f461505d..deeb4a88 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index c9f163db..2dfdf512 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png index 8fb65b92..c2302a82 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png index d62c39fb..fb0a4952 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png index f3459952..c4e5f4a6 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index fef186c5..3f2191fe 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png index 105793cb..49239a29 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png index 2b23a8c9..8b81bdf5 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index a027a90a..bada3f25 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -1,6 +1,6 @@ - 隐藏应用列表 + 隐藏应用列表-改 首页 日志 设置 @@ -10,7 +10,7 @@ 选择应用 应用配置 关于 - 请勿多开或将隐藏应用列表安装到其他用户 + 禁止进行多开或将隐藏应用列表安装到其他用户空间,隐藏应用列表不支持在非主用户环境运行 显示崩溃日志 配置文件损坏,请清除应用数据 编辑列表 @@ -34,11 +34,11 @@ 系统服务运行中 [%d] 系统服务未运行 模块已更新,需要重启设备 - 隐藏应用列表已经执行了 %d 次拦截 + 警告: 此非官方版,而是非官方改包名版, 如果您不知道请立即卸载\n\n隐藏应用列表已经执行了 %d 次拦截 管理 拦截测试 下载拦截测试应用 - 我们开发了一个独立的拦截测试应用,是否现在下载? + 隐藏应用列表有一个独立的拦截测试应用,是否现在下载? 备份 & 还原 备份配置 还原配置 @@ -60,7 +60,7 @@ 按安装时间 按更新时间 - 为“不安分”的应用建立模板,控制可获取的应用列表。\n\n黑名单(推荐):模板中选中的应用对应用模板的应用不可见。\n白名单:模板中未选中的应用对应用模板的应用不可见。 + 为“不安分”的应用建立模板,控制可获取的应用列表。\n\n黑名单(推荐):模板中选中的应用对应用模板的应用不可见。\n白名单:模板中未选中的应用对应用模板的应用不可见 创建黑名单模板 创建白名单模板 你确定要删除此模板吗? @@ -94,7 +94,7 @@ Vold app data 隔离 此更改需要 root 权限 重启以应用更改 - 权限被拒绝 + 权限被拒绝,应用可能没有Root权限 为所有应用启用数据隔离 数据隔离对于 Target API 低于 30 的应用默认禁用 详细日志 @@ -114,21 +114,22 @@ 停止系统服务 需要重启设备才能再次启动系统服务 同时清理运行环境? - 删除 /data/misc/hide_my_applist_* 中的系统服务缓存。这意味着你需要在下次重启后手动启动一次模块应用,以便启用拦截,同时拦截次数也将被清理。 + 删除 /data/system/hide_my_applist_* 中的系统服务缓存。这意味着你需要在下次重启后手动启动一次模块应用,以便启用拦截,同时拦截次数也将被清理 强制清理运行环境(root) - 只有在系统服务无法启动的情况下才应使用,否则请使用上面的选项。 + 只有在系统服务无法启动的情况下才应使用,否则请使用上面的选项 运行环境已清理 更新 禁用更新通知 接收测试版更新 注意:测试版可能不稳定 - 虽然“检测安装的应用”是不正确的做法,但是并不是所有的与 root 相关联的插件类应用都提供了随机包名支持。\n这就意味着检测到安装了此类应用(如 Fake Location 、存储空间隔离)与检测到了 root 本身区别不大。\n\n与此同时,部分“不安分”的应用会使用各种漏洞绕过系统权限来获取你的应用列表,从而对你建立用户画像。\n\n该模块提供了一些检测方式用于测试您是否成功地隐藏了某些特定的包名;同时可作为 Xposed 模块用于隐藏应用列表或特定应用,保护隐私。 + 警告: 此非官方版,而是非官方改包名版, 如果您不知道请立即卸载\n\n\n\n虽然“检测安装的应用”是不正确的做法,但是并不是所有的与 root 相关联的插件类应用都提供了随机包名支持。\n这就意味着检测到安装了此类应用(如 Fake Location 、存储空间隔离)与检测到了 root 本身区别不大。\n\n与此同时,部分“不安分”的应用会使用各种漏洞绕过系统权限来获取你的应用列表,从而对你建立用户画像。\n\n该模块提供了一些检测方式用于测试您是否成功地隐藏了某些特定的包名;同时可作为 Xposed 模块用于隐藏应用列表或特定应用,保护隐私 如何使用此模块 您可以在“模板管理”中创建模板。\n然后,将模板应用于“应用管理”中的应用。\n(您也可以为目标应用选择额外可见或不可见的应用。)\n注意:您应确保在 Xposed 中设置的模块作用域/白名单中有且仅有“系统框架”。(部分系统中“系统框架”可能显示为“Android”) - 配置修改即时生效。 + 配置修改即时生效 开发者 - 支持与反馈 + 官方原版的支持与反馈 + 非官方修改版的支持与反馈 开放源代码许可 樱花 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7cd00e6c..9143c7a9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + Hide My Applist-Mod Home Logs @@ -37,7 +37,7 @@ System service running [%d] System service not running Module updated, need reboot - Hide My Applist has filtered total %d requests + Warning: This is not the official version, but an unofficial repackaged version. If you are unaware, please uninstall it immediately.\n\nHide My Applist has filtered total %d requests Manage Detection test Download test app @@ -137,7 +137,7 @@ - Although It is incorrect to detect specific app installation, yet not every app using root provides random package name support. In this case, detected apps that use root (such as Fake Location and Storage Isolation) is equal to detected root itself.\n\nAt the same time, some smart apps use various loopholes to acquire your app list, so that it can draw a persona for you.\n\nThis module provides some methods to test whether you have already hidden your applist nicely. Also, it can work as an Xposed module to hide some apps or reject app list requests to protect your privacy. + Warning: This is not the official version, but an unofficial repackaged version. If you are unaware, please uninstall it immediately.\n\n\n\nAlthough It is incorrect to detect specific app installation, yet not every app using root provides random package name support. In this case, detected apps that use root (such as Fake Location and Storage Isolation) is equal to detected root itself.\n\nAt the same time, some smart apps use various loopholes to acquire your app list, so that it can draw a persona for you.\n\nThis module provides some methods to test whether you have already hidden your applist nicely. Also, it can work as an Xposed module to hide some apps or reject app list requests to protect your privacy. How to use this module @@ -147,7 +147,8 @@ Config modification effective in real time. Developer - Support and feedback + Official Original Support and Feedback + Unofficial Modified Version Support and Feedback Open source licenses diff --git a/common/src/main/java/icu/nullptr/hidemyapplist/common/Constants.java b/common/src/main/java/icu/nullptr/hidemyapplist/common/Constants.java index d4c59799..e7464f4c 100644 --- a/common/src/main/java/icu/nullptr/hidemyapplist/common/Constants.java +++ b/common/src/main/java/icu/nullptr/hidemyapplist/common/Constants.java @@ -3,13 +3,12 @@ import java.util.Set; public class Constants { - - public static final String APP_PACKAGE_NAME = "com.tsng.hidemyapplist"; + public static final String APP_PACKAGE_NAME = "fuck.app.check"; public static final String PROVIDER_AUTHORITY = APP_PACKAGE_NAME + ".ServiceProvider"; public static final String GMS_PACKAGE_NAME = "com.google.android.gms"; public static final String GSF_PACKAGE_NAME = "com.google.android.gsf"; - public static final String UPDATE_URL_BASE = "https://api.nullptr.icu/android/hide-my-applist/static/"; + public static final String UPDATE_URL_BASE = "https://github.com/linying2024/Hide-My-Applist-Clone/releases/latest/download/"; public static final String TRANSLATE_URL = "https://crowdin.com/project/hide-my-applist"; public static final String CLASS_PMS = "com.android.server.pm.PackageManagerService"; diff --git a/replace_package_name.py b/replace_package_name.py new file mode 100644 index 00000000..bf5008b2 --- /dev/null +++ b/replace_package_name.py @@ -0,0 +1,29 @@ +import os + +def replace_string_in_file(file_path, old_string, new_string): + try: + with open(file_path, 'r', encoding='utf-8') as file: + file_data = file.read() + + if old_string in file_data: + new_data = file_data.replace(old_string, new_string) + with open(file_path, 'w', encoding='utf-8') as file: + file.write(new_data) + print(f"Processed {file_path}") + except Exception as e: + print(f"Error processing {file_path}: {e}") + +def replace_string_in_directory(directory, old_string, new_string): + for root, dirs, files in os.walk(directory): + for file in files: + file_path = os.path.join(root, file) + replace_string_in_file(file_path, old_string, new_string) + +if __name__ == "__main__": + current_directory = os.getcwd() + old_string = "com.tsng.hidemyapplist" + new_string = "fuck.app.check" + + print(f"Replacing '{old_string}' with '{new_string}' in files in directory: {current_directory}") + replace_string_in_directory(current_directory, old_string, new_string) + print("Replacement completed.") \ No newline at end of file diff --git a/updates.json b/updates.json new file mode 100644 index 00000000..79eff0bd --- /dev/null +++ b/updates.json @@ -0,0 +1,8 @@ +{ + "release": { + "versionName": "%string%", + "versionCode": %int%, + "downloadUrl": "https://github.com/Dr-TSNG/Hide-My-Applist/releases/tag/V3.3" + }, + "beta": null +} \ No newline at end of file