build: 升级构建工具链并适配现代 Android 插件

- Gradle 升级至 8.13,Android Gradle 插件升级至 8.13.2
- compileSdk/targetSdk 升级至 36,namespace 替代 package
- 引入 Kotlin 插件与协程依赖,统一 stdlib 版本
- 精简打包输出命名,移除过时配置与 abiFilters
- 修复 manifest exported 属性与 CMake 链接对齐
This commit is contained in:
2026-08-15 20:55:47 +08:00
parent 0fde3a1700
commit e23b077543
7 changed files with 75 additions and 63 deletions

View File

@@ -1,4 +1,9 @@
apply plugin: 'com.android.application'
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
// id 'kotlin-kapt'
}
def appName() {
return "Mir4Updater"
@@ -9,38 +14,40 @@ def releaseTime() {
}
android {
compileSdkVersion 30
// buildToolsVersion "34.0.0"
namespace "com.example.mir4updater"
compileSdkVersion 36
buildToolsVersion "36.0.0"
defaultConfig {
applicationId "com.example.mir4updater"
minSdkVersion 24
targetSdkVersion 30
targetSdkVersion 36
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
ndk {
//可以根据需要来自行选择并添加对应cpu类型的.so库。
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
// 还可以添加 'armeabi', 'x86', 'x86_64', 'mips', 'mips64'
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
vectorDrawables.useSupportLibrary = true
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
viewBinding {
enabled = true
}
dataBinding {
enabled true
}
buildFeatures {
dataBinding true
buildConfig true
aidl true
}
// splits {
@@ -84,40 +91,25 @@ android {
debug {
versionNameSuffix "_debug"
minifyEnabled false
//Zipalign优化
zipAlignEnabled true
signingConfig signingConfigs.own
applicationVariants.all { variant ->
variant.outputs.each { output ->
if (outputFile != null) {
def fileName = "${appName()}_${variant.versionCode}_V${variant.versionName}_${releaseTime()}_${buildType.name}.apk"
output.outputFileName = fileName
}
}
}
}
release {
//混淆
minifyEnabled false
//Zipalign优化
zipAlignEnabled true
//前一部分代表系统默认的android程序的混淆文件该文件已经包含了基本的混淆声明后一个文件是自己的定义混淆文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//签名
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.own
// 将release版本的包名重命名加上版本及日期
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = ""
if (outputFile != null) {
def fileName = "${appName()}_${variant.versionCode}_V${variant.versionName}_${releaseTime()}_${buildType.name}.apk"
output.outputFileName = new File(outputFile, fileName)
}
}
}
}
android.applicationVariants.all { variant ->
variant.outputs.all { output -> // 改为 all
def buildType = variant.buildType.name
if (buildType.contains("debug")) {
outputFileName = "${appName()}_V${defaultConfig.versionName}_${releaseTime()}.apk"
} else {
outputFileName = "${appName()}_${variant.versionCode}_V${variant.versionName}_${releaseTime()}_${buildType}.apk"
}
}
}
}
@@ -126,6 +118,14 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation project(path: ':ttutils')
// 添加 Kotlin 标准库
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
// 添加这行,使用 BOM 统一 Kotlin 相关库的版本
implementation(platform("org.jetbrains.kotlin:kotlin-bom:$kotlin_version"))
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.11.0'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-rx3:1.11.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation "androidx.recyclerview:recyclerview:1.2.1"

View File

@@ -31,14 +31,16 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".activity.main.MainActivity">
<activity android:name=".activity.main.MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".activity.xapk.XapkHandlerActivity">
<activity android:name=".activity.xapk.XapkHandlerActivity"
android:exported="true">
<!--from apkpure-->
<intent-filter>
<action android:name="android.intent.action.VIEW" />