forked from laowan/RealX
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.gradle
154 lines (138 loc) · 5.24 KB
/
build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
apply plugin: 'com.android.library'
apply plugin: 'android-native-dependencies'
apply plugin: 'maven'
android {
compileSdkVersion rootProject.ext.externalCompileSdkVersion
buildToolsVersion rootProject.ext.externalBuildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.externalMinSdkVersion
targetSdkVersion rootProject.ext.externalTargetSdkVersion
versionCode rootProject.ext.externalVersionCode
versionName rootProject.ext.externalVersionName
ndk {
abiFilters "armeabi-v7a"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
pickFirst 'lib/armeabi-v7a/libaudioengine.so'
pickFirst 'lib/armeabi-v7a/libffmpeg-neon.so'
pickFirst 'lib/armeabi-v7a/libjpeg_jni.so'
pickFirst 'lib/armeabi-v7a/libycmedia.so'
pickFirst 'lib/armeabi-v7a/libijkplayer.so'
pickFirst 'lib/armeabi-v7a/libijksdl.so'
pickFirst 'lib/armeabi-v7a/libycmediayuv.so'
}
externalNativeBuild {
ndkBuild {
path './src/main/cpp/mediarecord-armv7a-neon/libycmedia/jni/Android.mk'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
compile("com.yy.android.stmobile:stmobileAPI:${stmobile_version}:@aar")
compile "com.yy.android.orangefilter:orangefilter_android:${orangefilter_version}"
compile "com.yy.android.venus:venus_android:${venus_version}"
compile 'com.yy.android.hiidostatsdk:hiido_statis:3.4.53'
compile "com.google.code.gson:gson:${gson_version}"
/*本地构建时打开,提交到svn时关闭*/
//embedded project(':sTMobileAPI')/*本地构建时关闭,提交到svn时打开*/
}
//publish package to local repository
uploadArchives {
repositories {
mavenDeployer {
println ".....uploadArchives --> " + repositories.mavenLocal().getUrl() + "${description}"
repository(url: repositories.mavenLocal().getUrl())
pom.project {
groupId "${GROUP}"
artifactId 'yymediarecordersdk'
version "${version}"
}
}
}
}
import org.apache.tools.ant.taskdefs.condition.Os
def deleteJniLibso() {
def SODIR = "$projectDir/src/main/jniLibs/armeabi-v7a"
File file = new File("$SODIR/libaudioengine.so")
file.delete()
file = new File("$SODIR/libffmepeg-neon.so")
file.delete()
file = new File("$SODIR/libijkplayer.so")
file.delete()
file = new File("$SODIR/libijksdl.so")
file.delete()
file = new File("$SODIR/libycmedia.so")
file.delete()
file = new File("$SODIR/libycmediayuv.so")
file.delete()
file = new File("$SODIR/libjpeg_jni.so")
file.delete()
//file = new File("$SODIR/libst_mobile.so")
//file.delete()
//file = new File("$SODIR/libstmobile_jni.so")
//file.delete()
}
task ndkBuild(type: Exec, description: 'Compile JNI source via NDK') {
def androidMKfile = "$projectDir/src/main/cpp/mediarecord-armv7a-neon/libycmedia/jni/Android.mk"
def applicationMKfile = "$projectDir/src/main/cpp/mediarecord-armv7a-neon/libycmedia/jni/Application.mk"
def ndkDir = System.env.ANDROID_NDK_HOME
if (ndkDir == null) {
if (Os.isFamily(Os.FAMILY_MAC)) {
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
ndkDir = properties.getProperty('ndk.dir')
} else {
ndkDir = android.ndkDirectory
}
}
def ndkbuildcmd = ""
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
ndkbuildcmd = "$ndkDir/ndk-build.cmd"
} else {
ndkbuildcmd = "$ndkDir/ndk-build"
}
def NDK_OUT_DIR = "$projectDir/libs"
def execmd = ["$ndkbuildcmd", "-j16", "NDK_PROJECT_PATH=$buildDir",
"APP_BUILD_SCRIPT=$androidMKfile", "NDK_APPLICATION_MK=$applicationMKfile", "NDK_APP_LIBS_OUT=$NDK_OUT_DIR"]
println(execmd)
commandLine execmd
}
//pack the generated so library with symbols into zip
task packSymbolsSo(type: Tar) {
destinationDir = file("${rootDir}/target")
baseName = 'lib name'
compression = Compression.GZIP
extension = 'tar.gz'
from(new File(buildDir, 'obj/local'))
include("**/*.so") //收集obj/local目录下所有so文件,你可以指定具体的文件
exclude("**/objs") //排除obj/local目录下不需要的子目录objs
}
ndkBuild.finalizedBy packSymbolsSo
task copyTask(type: Copy) {
deleteJniLibso()
def NDK_OUT_DIR = "$projectDir/libs/armeabi-v7a"
from "$NDK_OUT_DIR/libaudioengine.so"
from "$NDK_OUT_DIR/libffmepeg-neon.so"
from "$NDK_OUT_DIR/libijkplayer.so"
from "$NDK_OUT_DIR/libijksdl.so"
from "$NDK_OUT_DIR/libycmedia.so"
from "$NDK_OUT_DIR/libycmediayuv.so"
from "$NDK_OUT_DIR/libjpeg_jni.so"
//from "$NDK_OUT_DIR/libst_mobile.so"
//from "$NDK_OUT_DIR/libstmobile_jni.so"
into "$projectDir/src/main/jniLibs/armeabi-v7a"
}
copyTask.dependsOn ndkBuild
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn copyTask
}
apply from: '../publish.gradle'