pdlivexp/app/build.gradle

407 lines
19 KiB
Groovy
Raw Permalink Normal View History

2022-07-18 15:31:45 +08:00
apply plugin: 'com.android.application'
apply plugin: 'img-optimizer'
apply plugin: 'com.google.gms.google-services'
2022-10-24 17:55:43 +08:00
apply plugin: 'com.google.firebase.crashlytics'
2022-11-10 11:17:04 +08:00
apply plugin: 'com.alibaba.arouter'
apply from: "../package_config.gradle"
apply plugin: 'com.google.firebase.crashlytics'
2022-07-18 15:31:45 +08:00
android {
2024-07-13 10:37:37 +08:00
namespace "myname.pdlive.shayu"
compileSdk rootProject.ext.android.compileSdkVersion
2022-07-18 15:31:45 +08:00
packagingOptions {
pickFirst "lib/armeabi/libyuvutils.so"
pickFirst "lib/arm64-v8a/libyuvutils.so"
pickFirst "lib/armeabi-v7a/libyuvutils.so"
pickFirst "lib/armeabi/libyuvtools.so"
pickFirst "lib/arm64-v8a/libyuvtools.so"
pickFirst "lib/armeabi-v7a/libyuvtools.so"
exclude "lib/arm64-v8a/libmmcv_api_handgesture.so"
exclude "lib/arm64-v8a/libmmcv_api_express.so"
exclude "lib/arm64-v8a/libMediaEncoder.so"
exclude "lib/arm64-v8a/libarcore_sdk_c.so"
exclude "lib/arm64-v8a/libmediadecoder.so"
exclude "lib/arm64-v8a/libMediaMuxer.so"
exclude "lib/arm64-v8a/libarcore_sdk_jni.so"
exclude "lib/arm64-v8a/libMediaUtils.so"
exclude "lib/arm64-v8a/libcosmosffmpeg.so"
2022-10-20 10:49:08 +08:00
//旧美颜so
exclude 'lib/arm64-v8a/libxeengine.so'
exclude 'lib/arm64-v8a/libmmcv_base.so'
exclude 'lib/arm64-v8a/libmmcrypto.so'
exclude 'lib/arm64-v8a/libMNN.so'
exclude 'lib/arm64-v8a/libc++_shared.so'
exclude 'lib/arm64-v8a/libmmcv_api_base.so'
exclude 'lib/arm64-v8a/libmmcv_api_beauty.so'
exclude 'lib/arm64-v8a/libmmcv_api_bodylandmark.so'
exclude 'lib/arm64-v8a/libmmcv_api_express.so'
exclude 'lib/arm64-v8a/libmmcv_api_faceattributes.so'
exclude 'lib/arm64-v8a/libmmcv_api_facefeatures.so'
exclude 'lib/arm64-v8a/libmmcv_api_faceprocessor.so'
exclude 'lib/arm64-v8a/libmmcv_api_facerecognition.so'
exclude 'lib/arm64-v8a/libmmcv_api_handgesture.so'
exclude 'lib/arm64-v8a/libmmcv_api_imagequality.so'
exclude 'lib/arm64-v8a/libmmcv_api_objectdetect.so'
exclude 'lib/arm64-v8a/libmmcv_api_segmentation.so'
exclude 'lib/arm64-v8a/libmmcv_api_videoprocessor.so'
exclude 'lib/arm64-v8a/libmmlic.so'
exclude 'lib/arm64-v8a/libMNN_CL.so'
exclude 'lib/arm64-v8a/libMNN_Express.so'
exclude 'lib/armeabi-v7a/libxeengine.so'
exclude 'lib/armeabi-v7a/libmmcv_base.so'
exclude 'lib/armeabi-v7a/libmmcrypto.so'
exclude 'lib/armeabi-v7a/libMNN.so'
exclude 'lib/armeabi-v7a/libc++_shared.so'
exclude 'lib/armeabi-v7a/libmmcv_api_base.so'
exclude 'lib/armeabi-v7a/libmmcv_api_beauty.so'
exclude 'lib/armeabi-v7a/libmmcv_api_bodylandmark.so'
exclude 'lib/armeabi-v7a/libmmcv_api_express.so'
exclude 'lib/armeabi-v7a/libmmcv_api_faceattributes.so'
exclude 'lib/armeabi-v7a/libmmcv_api_facefeatures.so'
exclude 'lib/armeabi-v7a/libmmcv_api_faceprocessor.so'
exclude 'lib/armeabi-v7a/libmmcv_api_facerecognition.so'
exclude 'lib/armeabi-v7a/libmmcv_api_handgesture.so'
exclude 'lib/armeabi-v7a/libmmcv_api_imagequality.so'
exclude 'lib/armeabi-v7a/libmmcv_api_objectdetect.so'
exclude 'lib/armeabi-v7a/libmmcv_api_segmentation.so'
exclude 'lib/armeabi-v7a/libmmcv_api_videoprocessor.so'
exclude 'lib/armeabi-v7a/libmmlic.so'
exclude 'lib/armeabi-v7a/libMNN_CL.so'
exclude 'lib/armeabi-v7a/libMNN_Express.so'
/*if (rootProject.ext.manifestPlaceholders.isGooglePlay == 0) {
// 链接包剔除相心美颜SO
2023-06-14 17:59:08 +08:00
exclude 'lib/armeabi-v7a/libCNamaSDK.so'
exclude 'lib/armeabi-v7a/libfuai.so'
exclude 'lib/arm64-v8a/libCNamaSDK.so'
2023-06-14 17:59:08 +08:00
exclude 'lib/arm64-v8a/libfuai.so'
2022-07-18 15:31:45 +08:00
// 剔除声网X86架构的so
exclude 'lib/x86/libagora-core.so'
exclude 'lib/x86/libagora-ffmpeg.so'
exclude 'lib/x86/libagora-fdkaac.so'
exclude 'lib/x86/libagora-soundtouch.so'
exclude 'lib/x86/libagora-rtc-sdk.so'
*//* exclude 'lib/x86/libagora_ai_echo_cancellation_extension.so'
exclude 'lib/x86/libagora_ai_noise_suppression_extension.so'
exclude 'lib/x86/libagora_audio_beauty_extension.so'
exclude 'lib/x86/libagora_clear_vision_extension.so'
exclude 'lib/x86/libagora_content_inspect_extension.so'
exclude 'lib/x86/libagora_face_detection_extension.so'
exclude 'lib/x86/libagora_face_capture_extension.so'
exclude 'lib/x86/libagora_lip_sync_extension.so'
exclude 'lib/x86/libagora_screen_capture_extension.so'
exclude 'lib/x86/libagora_segmentation_extension.so'
exclude 'lib/x86/libagora_spatial_audio_extension.so'
exclude 'lib/x86/libagora_video_av1_decoder_extension.so'
exclude 'lib/x86/libagora_video_decoder_extension.so'
exclude 'lib/x86/libagora_video_encoder_extension.so'
exclude 'lib/x86/libagora_video_quality_analyzer_extension.so'
exclude 'lib/x86/libagora_video_dec.so'
exclude 'lib/x86/libagora_video_enc.so'/*
exclude 'lib/x86_64/libagora-core.so'
exclude 'lib/x86_64/libagora-ffmpeg.so'
exclude 'lib/x86_64/libagora-fdkaac.so'
exclude 'lib/x86_64/libagora-soundtouch.so'
exclude 'lib/x86_64/libagora-rtc-sdk.so'
/* exclude 'lib/x86_64/libagora_clear_vision_extension.so'
exclude 'lib/x86_64/libagora_segmentation_extension.so'
exclude 'lib/x86_64/libagora_screen_capture_extension.so'
exclude 'lib/x86_64/libagora_audio_beauty_extension.so'
exclude 'lib/x86_64/libagora_spatial_audio_extension.so'
exclude 'lib/x86_64/libagora_video_decoder_extension.so'
exclude 'lib/x86_64/libagora_video_encoder_extension.so'
exclude 'lib/x86_64/libagora_video_av1_decoder_extension.so'
exclude 'lib/x86_64/libagora_content_inspect_extension.so'
exclude 'lib/x86_64/libagora_video_quality_analyzer_extension.so'
exclude 'lib/x86_64/libagora_face_detection_extension.so'
exclude 'lib/x86_64/libagora_face_capture_extension.so'
exclude 'lib/x86_64/libagora_ai_noise_suppression_extension.so'
exclude 'lib/x86_64/libagora_ai_echo_cancellation_extension.so'
exclude 'lib/x86_64/libagora_lip_sync_extension.so'
exclude 'lib/x86_64/libagora_video_dec.so'
exclude 'lib/x86_64/libagora_video_enc.so'
*//*
}*/
2022-07-18 15:31:45 +08:00
}
2022-07-18 15:31:45 +08:00
compileOptions {
2024-07-13 10:37:37 +08:00
sourceCompatibility JavaVersion.VERSION_18
targetCompatibility JavaVersion.VERSION_18
}
buildFeatures {
buildConfig = true
2022-07-18 15:31:45 +08:00
}
2022-10-13 16:07:52 +08:00
applicationVariants.all { variant ->
// 根据渠道配置删除美颜so文件
if (variant.flavorName == "link_test" || variant.flavorName == "link_online") {
println "variant.flavorName${variant.flavorName}"
println "variant.name${variant.name}"
// 这里使用 mergeNativeLibs 任务,它会在文件合并后执行
def taskName = "merge${variant.name.capitalize()}NativeLibs"
tasks.matching { it.name == taskName }.configureEach { task ->
task.doLast {
def soFiles = [
file("${buildDir}/intermediates/merged_native_libs/${variant.name}/merge${variant.name.capitalize()}NativeLibs/out/lib/armeabi-v7a/libCNamaSDK.so"),
file("${buildDir}/intermediates/merged_native_libs/${variant.name}/merge${variant.name.capitalize()}NativeLibs/out/lib/armeabi-v7a/libfuai.so"),
file("${buildDir}/intermediates/merged_native_libs/${variant.name}/merge${variant.name.capitalize()}NativeLibs/out/lib/arm64-v8a/libCNamaSDK.so"),
file("${buildDir}/intermediates/merged_native_libs/${variant.name}/merge${variant.name.capitalize()}NativeLibs/out/lib/arm64-v8a/libfuai.so")
]
soFiles.each { soFile ->
if (soFile.exists()) {
soFile.delete()
println "Deleted ${soFile.name} for ${variant.flavorName}"
} else {
println "File not found: ${soFile.path}"
}
}
}
}
}
2023-06-15 13:41:57 +08:00
println "清空build文件夹";
2024-06-29 10:11:42 +08:00
for (final def project in rootProject.getAllprojects()) {
def name = variant.name.replace('Debug', '').replace('Release', '').toLowerCase()
2024-06-29 10:11:42 +08:00
//delete project.buildDir
delete project.rootDir.absolutePath+File.separator+"app"+File.separator+name
2024-06-29 10:11:42 +08:00
//println project.buildDir
}
//delete project.rootDir.absolutePath + File.separator + "outputs"
2022-10-13 16:07:52 +08:00
String variantName = variant.name.capitalize()
def processManifestTask = project.tasks.getByName("process${variantName}Manifest")
2022-10-20 10:49:08 +08:00
processManifestTask.doLast { pm ->
// String manifestPath = "build/intermediates/bundle_manifest/google_onlineRelease/bundle-manifest/AndroidManifest.xml"
2024-08-21 17:04:50 +08:00
String manifestPath = "build/intermediates/merged_manifests/${variant.name}/process${variantName}Manifest/AndroidManifest.xml"
def isGooglePlay = !variant.name.contains("link")
println "variant = ${variant.name}"
println "谷歌版本:" + isGooglePlay
println "文件存在" + file(manifestPath).exists()
2024-08-21 17:04:50 +08:00
println "" + (isGooglePlay)
println "" + (file(manifestPath).exists() && isGooglePlay)
if (file(manifestPath).exists() && isGooglePlay) {
2022-10-13 16:07:52 +08:00
def manifestContent = file(manifestPath).getText()
println "移除权限"
2022-10-13 18:29:23 +08:00
manifestContent = manifestContent.replace('<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />', '')
manifestContent = manifestContent.replace('android.permission.REQUEST_INSTALL_PACKAGES', '')
2022-10-13 16:07:52 +08:00
file(manifestPath).write(manifestContent)
2022-10-20 10:49:08 +08:00
} else {
print "not Exists = " + manifestPath
2022-10-13 16:07:52 +08:00
}
manifestPath = "build/intermediates/merged_manifests/google_onlineRelease/processReleaseManifest/AndroidManifest.xml"
if (file(manifestPath).exists() && isGooglePlay) {
def manifestContent = file(manifestPath).getText()
println "移除权限2"
manifestContent = manifestContent.replace('<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />', '')
manifestContent = manifestContent.replace('android.permission.REQUEST_INSTALL_PACKAGES', '')
file(manifestPath).write(manifestContent)
}
}
variant.mergeAssetsProvider.configure {
doLast {
2023-11-28 18:28:47 +08:00
delete(fileTree(dir: outputDir, includes: ['model/ai_bgseg_green.bundle',
2024-10-18 16:39:46 +08:00
//'model/ai_face_processor.bundle',
//'model/ai_face_processor_lite.bundle',
2023-11-28 18:28:47 +08:00
'model/ai_hairseg.bundle',
'model/ai_hand_processor.bundle',
'model/ai_human_processor.bundle',
'model/ai_human_processor_gpu.bundle',
'model/ai_human_processor_mb_fast.bundle',
'graphics/body_slim.bundle',
'graphics/controller_cpp.bundle',
2024-10-18 16:39:46 +08:00
//'graphics/face_beautification.bundle',
2023-11-28 18:28:47 +08:00
'graphics/face_makeup.bundle',
'graphics/fuzzytoonfilter.bundle',
'graphics/fxaa.bundle',
'graphics/tongue.bundle',
//旧美颜
'model-all.zip',
'filterData.zip',
'KSYResource/*',
'Resources/*',
'Asset/*',
'image_effect_shaders/*',
'internal/*'
//美颜基础组件
2023-06-14 17:59:08 +08:00
]))
2023-06-15 13:41:57 +08:00
println "isPluginModel = " + rootProject.ext.manifestPlaceholders.isPluginModel
if (rootProject.ext.manifestPlaceholders.isPluginModel) {
2024-04-18 09:47:38 +08:00
delete(fileTree(dir: outputDir, includes: ['model/ai_face_processor.bundle',
2023-11-28 18:28:47 +08:00
'graphics/face_beautification.bundle']))
2023-06-15 13:41:57 +08:00
} else {
2023-06-14 17:59:08 +08:00
println "不删除bundle"
}
}
2022-10-13 16:07:52 +08:00
}
variant.assemble.doLast { vt ->
def channel = ''
def server = ''
if (variant.name.contains('huawei')) {
channel = "华为"
} else if (variant.name.contains('samsung')) {
channel = "三星"
} else if (variant.name.contains('google')) {
channel = "谷歌"
} else {
channel = "链接"
2023-06-15 13:41:57 +08:00
}
if (variant.name.contains('online')) {
server = '正式服'
} else {
server = '测试服'
2023-06-15 13:41:57 +08:00
}
2024-09-10 17:06:34 +08:00
def fileName = "[${new Date().format("yyyy-MM-dd HHmmss", TimeZone.getTimeZone("GMT+8"))}]PoYo-${defaultConfig.versionName}-${defaultConfig.versionCode}-${channel}-${server}-${variant.buildType.name}.apk"
variant.outputs.forEach { fe ->
copy {
from fe.outputFile
into file("${project.rootDir}\\outputs\\apk\\")
rename { fn ->
fileName
}
}
}
}
tasks.named("sign${variant.name.capitalize()}Bundle", com.android.build.gradle.internal.tasks.FinalizeBundleTask) {
File file = finalBundleFile.asFile.get()
def channel = ''
def server = ''
if (variant.name.startsWith('huawei')) {
channel = "华为"
} else if (variant.name.startsWith('samsung')) {
channel = "三星"
} else if (variant.name.startsWith('google')) {
channel = "谷歌"
} else {
channel = "链接"
}
if (variant.name.contains('online')) {
server = '正式服'
} else {
server = '测试服'
2023-06-15 13:41:57 +08:00
}
2024-09-10 17:06:34 +08:00
def fileName = "[${new Date().format("yyyy-MM-dd HHmmss", TimeZone.getTimeZone("GMT+8"))}]PoYo-${defaultConfig.versionName}-${defaultConfig.versionCode}-${channel}-${server}-${variant.buildType.name}.aab"
File finalFile = new File("${project.rootDir}\\outputs\\aab", fileName)
finalBundleFile.set(finalFile)
2023-06-15 13:41:57 +08:00
}
2022-10-13 16:07:52 +08:00
}
2022-07-18 15:31:45 +08:00
signingConfigs {
release {
keyAlias 'poyo'
keyPassword 'poyolive'
storeFile file('../py.jks')
storePassword 'poyolive'
2022-07-18 15:31:45 +08:00
}
//陌陌本地配置需要
config {//TODO BEAUTYSDK 这里需要配置keystore相关信息
keyAlias 'poyo'
keyPassword 'poyolive'
storeFile file('../py.jks')//keystore的存放路径
storePassword 'poyolive'
2022-07-18 15:31:45 +08:00
v2SigningEnabled true // android 5.0-8.0必须用V2否则会有安全问题
v1SigningEnabled true
}
}
aaptOptions {
cruncherEnabled = false
useNewCruncher = false
}
defaultConfig {
// applicationId "myname.pdlive.shayu"
applicationId "com.pdlive.shayu"
minSdkVersion rootProject.ext.android.minSdkVersion
//版本在这里修改
targetSdkVersion rootProject.ext.android.targetSdkVersion
versionCode rootProject.ext.android.versionCode
versionName rootProject.ext.android.versionName
manifestPlaceholders = rootProject.ext.manifestPlaceholders
multiDexEnabled true
ndk {
Gradle gradle = getGradle()
String tskReqStr = gradle.getStartParameter().getTaskRequests().args.toString()
println("处理ndk 版本 = " + tskReqStr)
def isLink = tskReqStr.contains("Link")
2024-07-25 15:00:05 +08:00
if (isLink) {//移除32位so库可以有效降低包体大小等需要时再弄
// abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
abiFilters "armeabi-v7a", "arm64-v8a"
println("打包ndk 链接")
} else {
abiFilters "armeabi-v7a", "arm64-v8a"
2024-09-02 18:32:06 +08:00
// abiFilters "arm64-v8a"
println("打包ndk其他")
}
2022-07-18 15:31:45 +08:00
}
javaCompileOptions {
annotationProcessorOptions {
arguments = [AROUTER_MODULE_NAME: project.getName()]
}
}
}
buildTypes {
release {
2023-05-08 13:29:24 +08:00
minifyEnabled true
2023-05-09 10:09:03 +08:00
shrinkResources true
zipAlignEnabled true
2022-07-18 15:31:45 +08:00
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
firebaseCrashlytics{
mappingFileUploadEnabled = true
}
2022-07-18 15:31:45 +08:00
}
debug {
2023-06-14 13:41:12 +08:00
minifyEnabled false
shrinkResources false
zipAlignEnabled false
2023-05-08 13:29:24 +08:00
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
2022-07-18 15:31:45 +08:00
signingConfig signingConfigs.release
firebaseCrashlytics{
mappingFileUploadEnabled = false
}
2022-07-18 15:31:45 +08:00
}
}
lintOptions {
checkReleaseBuilds false
abortOnError false
}
}
repositories {
flatDir {
dirs 'libs', '../libs'
}
}
dependencies {
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
2022-10-24 17:55:43 +08:00
2023-11-27 17:12:27 +08:00
//implementation platform('com.google.firebase:firebase-bom:30.5.0')
//implementation 'com.google.firebase:firebase-crashlytics'
2022-10-24 17:55:43 +08:00
2022-07-18 15:31:45 +08:00
//直播
api project(':main')
//短视频
api project(':video')
2022-07-18 15:31:45 +08:00
annotationProcessor rootProject.ext.dependencies["arouter-compiler"]
2022-08-26 13:00:45 +08:00
2022-10-20 10:49:08 +08:00
// implementation rootProject.ext.dependencies["leakcanary"]
2022-12-05 17:44:49 +08:00
//debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.10'
2022-09-09 13:36:01 +08:00
2022-08-26 13:00:45 +08:00
}