From 0be21d5c38453c7c743ed481877b96d26a8a3d35 Mon Sep 17 00:00:00 2001 From: Matthew Date: Mon, 24 Jun 2024 18:19:35 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=82=E9=85=8DAndroid=2011?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 40 ++++++------- app/release/output-metadata.json | 55 +++++++++++++++--- app/src/main/AndroidManifest.xml | 2 +- app/src/main/assets/config.toml | 19 +++--- .../io/github/acedroidx/frp/MainActivity.kt | 7 ++- .../io/github/acedroidx/frp/ShellService.kt | 5 +- build.gradle | 6 +- gradle/wrapper/gradle-wrapper.properties | 2 +- keystore.example.properties | 4 -- sign.jks | Bin 0 -> 2597 bytes 10 files changed, 95 insertions(+), 45 deletions(-) delete mode 100644 keystore.example.properties create mode 100644 sign.jks diff --git a/app/build.gradle b/app/build.gradle index dc90a6d..3606729 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,26 +12,26 @@ android { buildConfig = true } - signingConfigs { - AceKeystore { - keyAlias keystoreProperties['keyAlias'] - keyPassword keystoreProperties['keyPassword'] - storeFile file(keystoreProperties['storeFile']) - storePassword keystoreProperties['storePassword'] - } - } + //signingConfigs { + // AceKeystore { + // keyAlias keystoreProperties['keyAlias'] + // keyPassword keystoreProperties['keyPassword'] + // storeFile file(keystoreProperties['storeFile']) + // storePassword keystoreProperties['storePassword'] + // } + //} defaultConfig { applicationId "io.github.acedroidx.frp" - minSdkVersion 23 - targetSdkVersion 34 - compileSdk 34 + minSdkVersion 25 + targetSdkVersion 30 + compileSdk 31 versionCode 4 versionName "1.0.3" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - signingConfig signingConfigs.AceKeystore + // signingConfig signingConfigs.AceKeystore buildConfigField("String", "FrpVersion", '"0.56.0"') buildConfigField("String", "FrpcFileName", '"libfrpc.so"') @@ -43,15 +43,15 @@ android { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - signingConfig signingConfigs.AceKeystore + // signingConfig signingConfigs.AceKeystore } debug { - signingConfig signingConfigs.AceKeystore + // signingConfig signingConfigs.AceKeystore } } compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = '17' @@ -74,10 +74,10 @@ android { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation 'androidx.core:core-ktx:1.12.0' - implementation 'androidx.appcompat:appcompat:1.6.1' - implementation 'com.google.android.material:material:1.11.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'androidx.core:core-ktx:1.6.0' + implementation 'androidx.appcompat:appcompat:1.3.0' + implementation 'com.google.android.material:material:1.4.0' + implementation 'androidx.constraintlayout:constraintlayout:2.0.4' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index e8d2627..9442c8a 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -1,18 +1,59 @@ { - "version": 2, + "version": 3, "artifactType": { "type": "APK", "kind": "Directory" }, "applicationId": "io.github.acedroidx.frp", - "variantName": "processReleaseResources", + "variantName": "release", "elements": [ { - "type": "SINGLE", + "type": "UNIVERSAL", "filters": [], - "versionCode": 1, - "versionName": "1.0", - "outputFile": "app-release.apk" + "attributes": [], + "versionCode": 4, + "versionName": "1.0.3", + "outputFile": "app-universal-release.apk" + }, + { + "type": "ONE_OF_MANY", + "filters": [ + { + "filterType": "ABI", + "value": "x86_64" + } + ], + "attributes": [], + "versionCode": 4, + "versionName": "1.0.3", + "outputFile": "app-x86_64-release.apk" + }, + { + "type": "ONE_OF_MANY", + "filters": [ + { + "filterType": "ABI", + "value": "arm64-v8a" + } + ], + "attributes": [], + "versionCode": 4, + "versionName": "1.0.3", + "outputFile": "app-arm64-v8a-release.apk" + }, + { + "type": "ONE_OF_MANY", + "filters": [ + { + "filterType": "ABI", + "value": "armeabi-v7a" + } + ], + "attributes": [], + "versionCode": 4, + "versionName": "1.0.3", + "outputFile": "app-armeabi-v7a-release.apk" } - ] + ], + "elementType": "File" } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index beabc18..5f1220f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -26,7 +26,7 @@ android:name=".ShellService" android:enabled="true" android:exported="false" - android:foregroundServiceType="specialUse"> + android:foregroundServiceType="camera"> diff --git a/app/src/main/assets/config.toml b/app/src/main/assets/config.toml index 49e6b2d..488975e 100644 --- a/app/src/main/assets/config.toml +++ b/app/src/main/assets/config.toml @@ -1,15 +1,20 @@ -serverAddr = "" +serverAddr = "61.169.135.146" serverPort = 7000 dnsServer = "114.114.114.114" +auth.method = "token" +auth.token = "mint" +transport.tls.enable=false +transport.tls.disableCustomTLSFirstByte = false + + [log] level = "debug" disablePrintColor = true -[[visitors]] -name = "p2p_visitor" +[[proxies]] +name = "p2p_adb" type = "xtcp" -serverName = "" -secretKey = "" -bindAddr = "127.0.0.1" -bindPort = 6000 \ No newline at end of file +secretKey = "123456" +localIP = "127.0.0.1" +localPort = 5555 \ No newline at end of file diff --git a/app/src/main/java/io/github/acedroidx/frp/MainActivity.kt b/app/src/main/java/io/github/acedroidx/frp/MainActivity.kt index e5ed4b2..25f7a10 100644 --- a/app/src/main/java/io/github/acedroidx/frp/MainActivity.kt +++ b/app/src/main/java/io/github/acedroidx/frp/MainActivity.kt @@ -50,6 +50,8 @@ class MainActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) + var startFrp = intent.getIntExtra("startFrp",0) + val versionName = packageManager.getPackageInfo(packageName, 0).versionName val titleText = findViewById(R.id.titleText) titleText.text = "frp for Android - ${versionName}/${BuildConfig.FrpVersion}" @@ -60,7 +62,7 @@ class MainActivity : AppCompatActivity() { mBound = isServiceRunning(ShellService::class.java) state_switch = findViewById(R.id.state_switch) - state_switch.isChecked = mBound + state_switch.isChecked = mBound || (startFrp != 0) state_switch.setOnCheckedChangeListener { buttonView, isChecked -> if (isChecked) (startShell()) else (stopShell()) } val editor = getSharedPreferences("data", AppCompatActivity.MODE_PRIVATE) auto_start_switch = findViewById(R.id.auto_start_switch) @@ -147,6 +149,7 @@ class MainActivity : AppCompatActivity() { // decision. } } + /* if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { if (ContextCompat.checkSelfPermission( this, Manifest.permission.POST_NOTIFICATIONS @@ -155,6 +158,8 @@ class MainActivity : AppCompatActivity() { requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) } } + + */ } private fun createBGNotificationChannel() { diff --git a/app/src/main/java/io/github/acedroidx/frp/ShellService.kt b/app/src/main/java/io/github/acedroidx/frp/ShellService.kt index 98fb190..a06e04a 100644 --- a/app/src/main/java/io/github/acedroidx/frp/ShellService.kt +++ b/app/src/main/java/io/github/acedroidx/frp/ShellService.kt @@ -106,11 +106,12 @@ class ShellService : Service() { .setContentText("已启动frp") //.setTicker("test") .setContentIntent(pendingIntent) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + /*if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { return notification.setForegroundServiceBehavior(Notification.FOREGROUND_SERVICE_IMMEDIATE) .build() } else { return notification.build() - } + }*/ + return notification.build() } } \ No newline at end of file diff --git a/build.gradle b/build.gradle index b8b9959..b226d4e 100644 --- a/build.gradle +++ b/build.gradle @@ -1,12 +1,13 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = "1.9.20" + ext.kotlin_version = "1.6.10" repositories { google() + jcenter() mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:8.3.1' + classpath 'com.android.tools.build:gradle:7.2.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong @@ -17,6 +18,7 @@ buildscript { allprojects { repositories { google() + jcenter() mavenCentral() } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7eea135..cbbc5b5 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Thu Mar 24 09:47:16 CST 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-rc-1-bin.zip +distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-7.5-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/keystore.example.properties b/keystore.example.properties deleted file mode 100644 index 4745952..0000000 --- a/keystore.example.properties +++ /dev/null @@ -1,4 +0,0 @@ -storeFile=C:\\path\\to\\Keystore.jks -storePassword= -keyAlias= -keyPassword= \ No newline at end of file diff --git a/sign.jks b/sign.jks new file mode 100644 index 0000000000000000000000000000000000000000..864fc4ca3067acd07d16292c11174b6908619c9c GIT binary patch literal 2597 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