diff --git a/app/build.gradle b/app/build.gradle index 6ed2f14..53bb8d0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,15 +16,15 @@ android { storePassword keystoreProperties['storePassword'] } } - compileSdkVersion 31 - buildToolsVersion "32.1.0-rc1" + compileSdkVersion 32 + buildToolsVersion "33.0.0-rc4" defaultConfig { applicationId "io.github.acedroidx.frp" - minSdkVersion 22 - targetSdkVersion 31 - versionCode 2 - versionName "1.0.1" + minSdkVersion 23 + targetSdkVersion 32 + versionCode 3 + versionName "1.0.2" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -48,15 +48,28 @@ android { kotlinOptions { jvmTarget = '11' } + packagingOptions { + jniLibs { + useLegacyPackaging true + } + } + splits { + abi { + enable true + reset() + include "arm64-v8a", "x86_64" + universalApk true + } + } } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.1' - implementation 'com.google.android.material:material:1.5.0' + implementation 'com.google.android.material:material:1.6.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' - testImplementation 'junit:junit:4.13.1' + testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c898a67..1039d8b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,17 +18,17 @@ + android:value="https://acedroidx.github.io/?a=frp" /> + android:exported="false" /> + android:exported="true" + android:launchMode="singleInstance"> 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 c067921..fd32b2d 100644 --- a/app/src/main/java/io/github/acedroidx/frp/MainActivity.kt +++ b/app/src/main/java/io/github/acedroidx/frp/MainActivity.kt @@ -17,8 +17,8 @@ import java.io.File class MainActivity : AppCompatActivity() { - val filename = "frpc" - val frpver = "0.41.0" + val filename = "libfrpc.so" + val frpver = "0.42.0" val logname = "frpc.log" val configname = "config.ini" 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 dc55751..132d40f 100644 --- a/app/src/main/java/io/github/acedroidx/frp/ShellService.kt +++ b/app/src/main/java/io/github/acedroidx/frp/ShellService.kt @@ -59,8 +59,19 @@ class ShellService : Service() { val ainfo = packageManager.getApplicationInfo(packageName, PackageManager.GET_SHARED_LIBRARY_FILES) Log.d("adx", "native library dir ${ainfo.nativeLibraryDir}") - p = Runtime.getRuntime() - .exec("${ainfo.nativeLibraryDir}/${filename} -c config.ini", arrayOf(""), this.filesDir) + try { + p = Runtime.getRuntime() + .exec( + "${ainfo.nativeLibraryDir}/${filename} -c config.ini", + arrayOf(""), + this.filesDir + ) + } catch (e: Exception) { + Log.e("adx", e.stackTraceToString()) + Toast.makeText(this, e.message, Toast.LENGTH_LONG).show() + stopSelf() + return START_NOT_STICKY + } Toast.makeText(this, "已启动服务", Toast.LENGTH_SHORT).show() startForeground(1, showMotification()); return START_NOT_STICKY @@ -75,7 +86,7 @@ class ShellService : Service() { private fun showMotification(): Notification { val pendingIntent: PendingIntent = Intent(this, MainActivity::class.java).let { notificationIntent -> - PendingIntent.getActivity(this, 0, notificationIntent, 0) + PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_IMMUTABLE) } val notification: Notification = NotificationCompat.Builder(this, "shell_bg") .setSmallIcon(R.drawable.ic_launcher_foreground) diff --git a/app/src/main/resources/lib/arm64-v8a/frpc b/app/src/main/jniLibs/arm64-v8a/libfrpc.so similarity index 66% rename from app/src/main/resources/lib/arm64-v8a/frpc rename to app/src/main/jniLibs/arm64-v8a/libfrpc.so index bf76efa..8d410c6 100644 Binary files a/app/src/main/resources/lib/arm64-v8a/frpc and b/app/src/main/jniLibs/arm64-v8a/libfrpc.so differ diff --git a/app/src/main/resources/lib/x86_64/frpc b/app/src/main/jniLibs/x86_64/libfrpc.so similarity index 68% rename from app/src/main/resources/lib/x86_64/frpc rename to app/src/main/jniLibs/x86_64/libfrpc.so index aaa4103..14cb87a 100644 Binary files a/app/src/main/resources/lib/x86_64/frpc and b/app/src/main/jniLibs/x86_64/libfrpc.so differ diff --git a/build.gradle b/build.gradle index a049f03..8e23b28 100644 --- a/build.gradle +++ b/build.gradle @@ -1,12 +1,12 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = "1.6.10" + ext.kotlin_version = "1.6.21" repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:7.1.2' + classpath 'com.android.tools.build:gradle:7.1.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong