适配Android 10及更高版本

适配API 29及以上的行为变更
更新依赖
This commit is contained in:
AceDroidX 2022-03-24 15:56:49 +08:00
parent 3f80eb79bd
commit e571590b5c
10 changed files with 38 additions and 43 deletions

View File

@ -16,15 +16,15 @@ android {
storePassword keystoreProperties['storePassword'] storePassword keystoreProperties['storePassword']
} }
} }
compileSdkVersion 29 compileSdkVersion 31
buildToolsVersion "30.0.3" buildToolsVersion "32.1.0-rc1"
defaultConfig { defaultConfig {
applicationId "io.github.acedroidx.frp" applicationId "io.github.acedroidx.frp"
minSdkVersion 22 minSdkVersion 22
targetSdkVersion 29 targetSdkVersion 31
versionCode 1 versionCode 2
versionName "1.0" versionName "1.0.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@ -42,22 +42,21 @@ android {
} }
} }
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_11
} }
kotlinOptions { kotlinOptions {
jvmTarget = '1.8' jvmTarget = '11'
} }
} }
dependencies { dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.3.2' implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.2.1' implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
testImplementation 'junit:junit:4.13.1' testImplementation 'junit:junit:4.13.1'
androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
} }

View File

@ -27,7 +27,8 @@
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:launchMode="singleInstance"> android:launchMode="singleInstance"
android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />

View File

@ -11,16 +11,14 @@ import android.os.IBinder
import android.util.Log import android.util.Log
import android.widget.Button import android.widget.Button
import android.widget.TextView import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.SwitchCompat import androidx.appcompat.widget.SwitchCompat
import androidx.core.app.NotificationCompat
import java.io.File import java.io.File
import kotlin.math.log
class MainActivity : AppCompatActivity() { class MainActivity : AppCompatActivity() {
val filename = "frpc_0.34.3_linux_arm64" val filename = "frpc"
val frpver = "0.41.0"
val logname = "frpc.log" val logname = "frpc.log"
val configname = "config.ini" val configname = "config.ini"
@ -51,7 +49,10 @@ class MainActivity : AppCompatActivity() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) setContentView(R.layout.activity_main)
checkBinary() val versionName = packageManager.getPackageInfo(packageName, 0).versionName
val titleText = findViewById<TextView>(R.id.titleText)
titleText.text = "frp for Android - ${versionName}/${frpver}"
checkConfig() checkConfig()
createBGNotificationChannel() createBGNotificationChannel()
@ -107,19 +108,6 @@ class MainActivity : AppCompatActivity() {
} }
} }
fun checkBinary() {
val files: Array<String> = this.fileList()
Log.d("adx", files.joinToString(","))
if (!files.contains(filename)) {
val assetmanager = resources.assets
this.openFileOutput(filename, Context.MODE_PRIVATE).use {
it.write(assetmanager.open((filename)).readBytes())
}
val file = File(this.filesDir.toString() + "/$filename")
file.setExecutable(true)
}
}
fun checkConfig() { fun checkConfig() {
val files: Array<String> = this.fileList() val files: Array<String> = this.fileList()
Log.d("adx", files.joinToString(",")) Log.d("adx", files.joinToString(","))

View File

@ -4,13 +4,12 @@ import android.app.Notification
import android.app.PendingIntent import android.app.PendingIntent
import android.app.Service import android.app.Service
import android.content.Intent import android.content.Intent
import android.content.pm.PackageManager
import android.os.Binder import android.os.Binder
import android.os.IBinder import android.os.IBinder
import android.util.Log import android.util.Log
import android.widget.Toast import android.widget.Toast
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.* import java.util.*
class ShellService : Service() { class ShellService : Service() {
@ -57,7 +56,11 @@ class ShellService : Service() {
stopSelf() stopSelf()
return START_NOT_STICKY return START_NOT_STICKY
} }
p = Runtime.getRuntime().exec("./$filename -c config.ini", arrayOf(""), this.filesDir) 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)
Toast.makeText(this, "已启动服务", Toast.LENGTH_SHORT).show() Toast.makeText(this, "已启动服务", Toast.LENGTH_SHORT).show()
startForeground(1, showMotification()); startForeground(1, showMotification());
return START_NOT_STICKY return START_NOT_STICKY

View File

@ -17,7 +17,7 @@
android:orientation="vertical" > android:orientation="vertical" >
<TextView <TextView
android:id="@+id/textView2" android:id="@+id/titleText"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="frp for Android" android:text="frp for Android"

Binary file not shown.

View File

@ -1,12 +1,12 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules. // Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript { buildscript {
ext.kotlin_version = "1.3.72" ext.kotlin_version = "1.6.10"
repositories { repositories {
google() google()
jcenter() jcenter()
} }
dependencies { dependencies {
classpath "com.android.tools.build:gradle:4.1.1" classpath 'com.android.tools.build:gradle:7.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong

View File

@ -1,6 +1,6 @@
#Sat Dec 12 16:31:09 CST 2020 #Thu Mar 24 09:47:16 CST 2022
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip zipStoreBase=GRADLE_USER_HOME

View File

@ -0,0 +1,4 @@
storeFile=C:\\path\\to\\Keystore.jks
storePassword=
keyAlias=
keyPassword=