This commit is contained in:
2025-03-16 22:53:08 +08:00
parent 680ff4275f
commit cbb57ec109
80 changed files with 4106 additions and 279 deletions

1
libppsspp/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/build

View File

@@ -0,0 +1,88 @@
plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.android)
}
val projectPath = File(project.rootDir, "submodules/ppsspp")
android {
namespace = "org.ppsspp.ppsspp"
compileSdk = 35
ndkVersion = "21.4.7075529"
defaultConfig {
minSdk = 23
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles("consumer-rules.pro")
externalNativeBuild {
ndkBuild {
arguments(
"-DANDROID=true",
"-DANDROID_PLATFORM=android-16",
"-DANDROID_TOOLCHAIN=clang",
"-DANDROID_CPP_FEATURES=",
"-DANDROID_STL=c++_static",
"-j${Runtime.getRuntime().availableProcessors()}",
)
}
}
buildConfigField("String", "FLAVOR", "\"normal\"")
}
sourceSets {
getByName("main") {
//manifest.srcFile(File(projectPath, "android/AndroidManifest.xml"))
java.srcDirs(
File(projectPath, "android/src"),
)
res.srcDirs(
File(projectPath, "android/res"),
File(projectPath, "android/normal/res"),
)
assets.srcDirs(
File(projectPath, "assets"),
)
}
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
buildFeatures {
buildConfig = true
}
externalNativeBuild {
cmake {
path(File(projectPath, "CMakeLists.txt"))
version = "3.22.1"
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
}
lint {
baseline = file("lint-baseline.xml")
}
}
dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat)
implementation(libs.material)
implementation(files(File(projectPath, "android/libs/com.bda.controller.jar")))
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
}

View File

1536
libppsspp/lint-baseline.xml Normal file

File diff suppressed because it is too large Load Diff

21
libppsspp/proguard-rules.pro vendored Normal file
View File

@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:installLocation="auto"
tools:ignore="MissingLeanbackLauncher">
<!-- We use version codes in the format xyyzzrrrr. Example: 110030000
In this same case, versionName should be 1.10.3.0
Also note that we are overriding these values automatically from a gradle plugin,
so we don't need to set them manually. -->
<uses-feature android:glEsVersion="0x00020000" />
<uses-feature android:name="android.hardware.screen.landscape" android:required="false" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
<uses-feature android:name="android.software.leanback" android:required="false" />
<uses-feature android:name="android.hardware.gamepad" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
<uses-feature android:name="android.hardware.location.network" android:required="false" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
<uses-feature android:name="android.hardware.type.pc" android:required="false" />
<!-- I tried using android:maxSdkVersion="29" on WRITE/READ_EXTERNAL_STORAGE, but that made
it so that in legacy mode, you can't ask for permission anymore. So removed that. -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="archos.permission.FULLSCREEN.FULL" />
<uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission-sdk-23 android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission-sdk-23 android:name="android.permission.TRANSMIT_IR" />
<uses-permission-sdk-23 android:name="android.permission.CAMERA" />
<uses-permission-sdk-23 android:name="android.permission.RECORD_AUDIO" />
<!-- AndroidX minimum SDK workaround. We don't care if it's broken on older versions. -->
<uses-sdk tools:overrideLibrary="androidx.appcompat.resources,androidx.appcompat,androidx.fragment,androidx.drawerlayout,androidx.vectordrawable.animated,androidx.vectordrawable,androidx.viewpager,androidx.loader,androidx.activity,androidx.annotation,androidx.customview,androidx.cursoradapter,androidx.arch,androidx.collection,androidx.core,androidx.versionedparcelable,androidx.interpolator,androidx.lifecycle,androidx.loader,androidx.savedstate,androidx.lifecycle.viewmodel,androidx.lifecycle.livedata,androidx.lifecycle.livedata.core,androidx.arch.core,androidx.documentfile"/>
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:isGame="true"
android:banner="@drawable/ic_banner"
android:requestLegacyExternalStorage="true"
android:preserveLegacyExternalStorage="true">
<meta-data android:name="android.max_aspect" android:value="2.4" />
<activity
android:name=".PpssppActivity"
android:configChanges="locale|keyboard|keyboardHidden|navigation|uiMode"
android:theme="@style/ppsspp_style"
android:exported="true">
<!-- android:screenOrientation="landscape" -->
<!--<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>-->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="file" />
<data android:scheme="content" />
<data android:mimeType="*/*" />
<data android:host="*" />
<data android:pathPattern=".*\\.iso" />
<data android:pathPattern=".*\\..*\\.iso" />
<data android:pathPattern=".*\\..*\\..*\\.iso" />
<data android:pathPattern=".*\\.cso" />
<data android:pathPattern=".*\\..*\\.cso" />
<data android:pathPattern=".*\\..*\\..*\\.cso" />
<data android:pathPattern=".*\\.chd" />
<data android:pathPattern=".*\\..*\\.chd" />
<data android:pathPattern=".*\\..*\\..*\\.chd" />
<data android:pathPattern=".*\\.elf" />
<data android:pathPattern=".*\\..*\\.elf" />
<data android:pathPattern=".*\\..*\\..*\\.elf" />
<data android:pathPattern=".*\\.ISO" />
<data android:pathPattern=".*\\..*\\.ISO" />
<data android:pathPattern=".*\\..*\\..*\\.ISO" />
<data android:pathPattern=".*\\.CSO" />
<data android:pathPattern=".*\\..*\\.CSO" />
<data android:pathPattern=".*\\..*\\..*\\.CSO" />
<data android:pathPattern=".*\\.ELF" />
<data android:pathPattern=".*\\..*\\.ELF" />
<data android:pathPattern=".*\\..*\\..*\\.ELF" />
<data android:pathPattern=".*\\.CHD" />
<data android:pathPattern=".*\\..*\\.CHD" />
<data android:pathPattern=".*\\..*\\..*\\.CHD" />
<data android:pathPattern=".*\\.ppdmp" />
<data android:pathPattern=".*\\.pbp" />
</intent-filter>
</activity>
<meta-data android:name="isGame" android:value="true" />
<activity
android:name=".ShortcutActivity"
android:label="@string/shortcut_name"
android:exported="true">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.CREATE_SHORTCUT" />
</intent-filter>
</activity>
<meta-data
android:name="xperiaplayoptimized_content"
android:resource="@mipmap/ic_launcher" />
<profileable android:shell="true" android:enabled="true" />
</application>
</manifest>