feat: 初始化 Android 项目结构及配置文件

This commit is contained in:
2025-11-27 15:08:44 +08:00
parent 7cba2965a9
commit 0a45ad03fe
12 changed files with 193 additions and 1 deletions

6
.gitignore vendored
View File

@@ -19,7 +19,11 @@ android/capacitor-cordova-android-plugins/**
android/app/src/main/assets/public/** android/app/src/main/assets/public/**
android/app/src/main/assets/capacitor.config.json android/app/src/main/assets/capacitor.config.json
capacitor.config.json capacitor.config.json
android/.gradle/
android/build/
android/app/build/
android/local.properties
.gradle/
# Editor directories and files # Editor directories and files
design/* design/*
.vscode/* .vscode/*

44
android/app/build.gradle Normal file
View File

@@ -0,0 +1,44 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
android {
namespace "com.echo.app"
compileSdkVersion rootProject.ext.compileSdkVersion
defaultConfig {
applicationId "com.echo.app"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
aaptOptions {
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
// Default: https://android.googlesource.com/platform/frameworks/base/+/282e181b58cf72b6ca770dc7ca5f91f135444502/tools/aapt/AaptAssets.cpp#61
ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
repositories {
flatDir{
dirs '../capacitor-cordova-android-plugins/src/main/libs', 'libs'
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion"
implementation "androidx.coordinatorlayout:coordinatorlayout:$androidxCoordinatorLayoutVersion"
implementation "androidx.core:core-splashscreen:$coreSplashScreenVersion"
implementation project(':capacitor-android')
implementation project(':capacitor-cordova-android-plugins')
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
apply from: 'capacitor.build.gradle'

0
android/app/proguard-rules.pro vendored Normal file
View File

View File

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode"
android:name=".MainActivity"
android:label="@string/title_activity_main"
android:theme="@style/AppTheme.NoActionBarLaunch"
android:launchMode="singleTask"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- ϵͳ֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD> / ΢<><CEA2> / <20><><EFBFBD>е<EFBFBD>֪ͨ -->
<service
android:name=".notification.NotificationBridgeService"
android:label="@string/app_name"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"
android:exported="true">
<intent-filter>
<action android:name="android.service.notification.NotificationListenerService" />
</intent-filter>
</service>
<!-- <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> Provider<65><72>Capacitor Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD> -->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
</application>
<!-- Ȩ<><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.INTERNET" />
</manifest>

View File

@@ -0,0 +1,4 @@
<resources>
<string name="app_name">Echo</string>
<string name="title_activity_main">Echo</string>
</resources>

View File

@@ -0,0 +1,10 @@
<resources>
<!-- <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A3AC><EFBFBD>ں<EFBFBD> Capacitor Ĭ<><C4AC><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD> -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">false</item>
</style>
<!-- <20><><EFBFBD><EFBFBD> Activity ר<><D7A8><EFBFBD><EFBFBD><EFBFBD>⣨Ŀǰ<C4BF><C7B0> AppTheme һ<>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><C9BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3> -->
<style name="AppTheme.NoActionBarLaunch" parent="AppTheme" />
</resources>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path
android:name="external_files"
android:path="." />
</paths>

28
android/build.gradle Normal file
View File

@@ -0,0 +1,28 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.8.22'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.0.0'
classpath 'com.google.gms:google-services:4.3.15'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
apply from: "variables.gradle"
allprojects {
repositories {
google()
mavenCentral()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}

12
android/gradle.properties Normal file
View File

@@ -0,0 +1,12 @@
# Project-wide Gradle settings.
# Generated by Codex helper.
# ʹ<><CAB9> AndroidX ֧<>ֿ<EFBFBD>
android.useAndroidX=true
android.enableJetifier=true
# Gradle JVM <20>ڴ<EFBFBD>
org.gradle.jvmargs=-Xmx1536m
# <20><><EFBFBD>԰<EFBFBD><D4B0><EFBFBD><E8BFAA><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD>
# org.gradle.parallel=true

View File

@@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip

8
android/settings.gradle Normal file
View File

@@ -0,0 +1,8 @@
include ':app'
// Cordova / Capacitor 插件聚合模块
include ':capacitor-cordova-android-plugins'
project(':capacitor-cordova-android-plugins').projectDir = new File('capacitor-cordova-android-plugins')
// Capacitor 自动生成的核心与插件模块
apply from: "capacitor.settings.gradle"

16
android/variables.gradle Normal file
View File

@@ -0,0 +1,16 @@
ext {
minSdkVersion = 22
compileSdkVersion = 33
targetSdkVersion = 33
androidxActivityVersion = '1.7.0'
androidxAppCompatVersion = '1.6.1'
androidxCoordinatorLayoutVersion = '1.2.0'
androidxCoreVersion = '1.10.0'
androidxFragmentVersion = '1.5.6'
coreSplashScreenVersion = '1.0.0'
androidxWebkitVersion = '1.6.1'
junitVersion = '4.13.2'
androidxJunitVersion = '1.1.5'
androidxEspressoCoreVersion = '3.5.1'
cordovaAndroidVersion = '10.1.1'
}