Skip to content

Commit 04c90e8

Browse files
author
archurtan
committed
增加Android Debug CI
1 parent 105405e commit 04c90e8

File tree

8 files changed

+290
-1
lines changed

8 files changed

+290
-1
lines changed

.github/script/build_armv7a.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/bin/sh
2+
3+
./init-android-openssl.sh
4+
./init-android.sh
5+
6+
cd android/contrib
7+
./compile-openssl.sh armv7a
8+
./compile-ffmpeg.sh clean
9+
./compile-ffmpeg.sh armv7a
10+
cd ..
11+
./compile-ijk.sh armv7a
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#!/bin/bash
2+
3+
# 最新tag,例如:v1.0.0
4+
latest_tag=$(git describe --tags `git rev-list --tags --max-count=1`)
5+
echo ">>>latest tag: $latest_tag"
6+
7+
# 最新tag,例如:1.0.0
8+
vtag=${latest_tag#*v}
9+
echo ">>>latest tag(no v): $vtag"
10+
11+
# snapshot版本自增(最新tag+1)
12+
vtaglist=(${vtag//./ })
13+
firsttag=${vtaglist[0]}
14+
secondtag=${vtaglist[1]}
15+
thirdtag=${vtaglist[2]}
16+
thirdtag=`expr $thirdtag + 1`
17+
18+
new_version=$firsttag.$secondtag.$thirdtag
19+
20+
echo ">>>new version: $new_version"
21+
22+
sed -i 's#def version.*#def version = \"'$new_version'-SNAPSHOT\"#g' ./android/ijkplayer/config.gradle
23+
24+
echo ">>>over!!!"

.github/workflows/android_push.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: IOT IJK ANDROID DEBUG CI
2+
3+
on:
4+
push:
5+
tags-ignore:
6+
- '*'
7+
branches:
8+
- '*'
9+
pull_request:
10+
branches: [ master ]
11+
12+
env:
13+
IOT_SONATYPE_USERNAME: ${{ secrets.IOT_SONATYPE_USERNAME }}
14+
IOT_SONATYPE_PASSWORD: ${{ secrets.IOT_SONATYPE_PASSWORD }}
15+
GPG_DECRYPT_PASSPHRASE: ${{ secrets.GPG_DECRYPT_PASSPHRASE }}
16+
17+
jobs:
18+
build:
19+
runs-on: ubuntu-latest
20+
steps:
21+
- uses: actions/checkout@v2
22+
with:
23+
fetch-depth: 0
24+
- name: Download r10e NDK
25+
run: |
26+
wget https://dl.google.com/android/repository/android-ndk-r10e-linux-x86_64.zip
27+
unzip android-ndk-r10e-linux-x86_64.zip
28+
- name: Build with Gradle
29+
run: |
30+
export ANDROID_NDK=./android-ndk-r10e
31+
sh .github/script/build_armv7a.sh
32+
cd android/ijkplayer
33+
./gradlew :ijkplayer-armv7a:build
34+
./gradlew :ijkplayer-java:build
35+
- name: Publish aar and jar to Maven
36+
run: |
37+
./gradlew :ijkplayer-armv7a:publish
38+
./gradlew :ijkplayer-java:publish

android/ijkplayer/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// Top-level build file where you can add configuration options common to all sub-projects/modules.
2-
2+
apply from: "config.gradle"
33
buildscript {
44
repositories {
55
jcenter()

android/ijkplayer/config.gradle

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
def version = "1.0.0-SNAPSHOT"
2+
ext {
3+
sdk = [
4+
version: version,
5+
]
6+
}

android/ijkplayer/gradle.properties

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ VERSION_NAME=0.8.8
2121
VERSION_CODE=800800
2222
GROUP=tv.danmaku.ijk.media
2323

24+
signing.keyId=MY_KEY_ID
25+
signing.password=MY_PASSWORD
26+
signing.secretKeyRingFile=MY_KEY_RING_FILE
27+
2428
# http://central.sonatype.org/pages/requirements.html
2529
POM_USER_ORG=bilibili
2630
POM_DESCRIPTION=Video player based on FFmpeg n3.1

android/ijkplayer/ijkplayer-armv7a/build.gradle

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
apply plugin: 'com.android.library'
2+
apply plugin: 'maven-publish'
3+
apply plugin: 'signing'
24

35
android {
46
// http://tools.android.com/tech-docs/new-build-system/tips
@@ -28,3 +30,104 @@ dependencies {
2830
}
2931

3032
apply from: new File(rootProject.projectDir, "tools/gradle-on-demand.gradle");
33+
34+
35+
task androidJavadocs(type: Javadoc) {
36+
failOnError false
37+
source = android.sourceSets.main.java.srcDirs
38+
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
39+
android.libraryVariants.all { variant ->
40+
if (variant.name == 'release') {
41+
owner.classpath += variant.javaCompile.classpath
42+
}
43+
}
44+
exclude '**/R.html', '**/R.*.html', '**/index.html'
45+
}
46+
47+
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
48+
classifier = 'javadoc'
49+
from androidJavadocs.destinationDir
50+
}
51+
52+
task androidSourcesJar(type: Jar) {
53+
classifier = 'sources'
54+
from android.sourceSets.main.java.srcDirs
55+
}
56+
57+
def libVersion = rootProject.ext.sdk.version
58+
ext.isReleaseVersion = !libVersion.endsWith("SNAPSHOT")
59+
publishing {
60+
publications {
61+
aar(MavenPublication) {
62+
groupId 'com.tencent.iot.thirdparty.android'
63+
artifactId 'ijkplayer-armv7a'
64+
version libVersion
65+
artifact(androidSourcesJar)
66+
artifact(androidJavadocsJar)
67+
artifact file('build/outputs/aar/ijkplayer-armv7a-release.aar')
68+
69+
pom {
70+
name = 'ijkplayer'
71+
description = 'Tencent Link Android library'
72+
url = 'https://github.com/tencentyun/iot-ijkplayer'
73+
licenses {
74+
license {
75+
name = 'Tencent Binary License'
76+
url = 'https://github.com/tencentyun/iot-link-android/blob/master/explorer-link-android/LICENSE'
77+
}
78+
}
79+
developers {
80+
developer {
81+
id = 'tencent_archurtan'
82+
name = 'Tencent archurtan'
83+
email = 'archurtan@tencent.com'
84+
}
85+
}
86+
scm {
87+
url = 'scm:git@github.com:tencentyun/iot-ijkplayer.git'
88+
connection = 'scm:git@github.com:tencentyun/iot-ijkplayer.git'
89+
developerConnection = 'scm:git@github.com:tencentyun/iot-ijkplayer.git'
90+
}
91+
}
92+
93+
pom.withXml {
94+
def dependenciesNode = asNode().appendNode('dependencies')
95+
configurations.implementation.allDependencies.withType(ModuleDependency) { ModuleDependency dp ->
96+
if (dp.version != "unspecified") { // 过滤项目内library引用
97+
def dependencyNode = dependenciesNode.appendNode('dependency')
98+
dependencyNode.appendNode('groupId', dp.group)
99+
dependencyNode.appendNode('artifactId', dp.name)
100+
dependencyNode.appendNode('version', dp.version)
101+
102+
// for exclusions
103+
if (dp.excludeRules.size() > 0) {
104+
def exclusions = dependencyNode.appendNode('exclusions')
105+
dp.excludeRules.each { ExcludeRule ex ->
106+
def exclusion = exclusions.appendNode('exclusion')
107+
exclusion.appendNode('groupId', ex.group)
108+
exclusion.appendNode('artifactId', ex.module)
109+
}
110+
}
111+
}
112+
}
113+
}
114+
}
115+
}
116+
repositories {
117+
maven {
118+
def releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2"
119+
def snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots"
120+
url = libVersion.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
121+
credentials {
122+
username = System.getenv("IOT_SONATYPE_USERNAME")
123+
password = System.getenv("IOT_SONATYPE_PASSWORD")
124+
}
125+
}
126+
}
127+
}
128+
129+
signing {
130+
if (isReleaseVersion) {
131+
sign publishing.publications.aar
132+
}
133+
}

android/ijkplayer/ijkplayer-java/build.gradle

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
apply plugin: 'com.android.library'
2+
apply plugin: 'maven-publish'
3+
apply plugin: 'signing'
24

35
android {
46
// http://tools.android.com/tech-docs/new-build-system/tips
@@ -27,3 +29,104 @@ dependencies {
2729
}
2830

2931
apply from: new File(rootProject.projectDir, "tools/gradle-on-demand.gradle");
32+
33+
34+
task androidJavadocs(type: Javadoc) {
35+
failOnError false
36+
source = android.sourceSets.main.java.srcDirs
37+
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
38+
android.libraryVariants.all { variant ->
39+
if (variant.name == 'release') {
40+
owner.classpath += variant.javaCompile.classpath
41+
}
42+
}
43+
exclude '**/R.html', '**/R.*.html', '**/index.html'
44+
}
45+
46+
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
47+
classifier = 'javadoc'
48+
from androidJavadocs.destinationDir
49+
}
50+
51+
task androidSourcesJar(type: Jar) {
52+
classifier = 'sources'
53+
from android.sourceSets.main.java.srcDirs
54+
}
55+
56+
def libVersion = rootProject.ext.sdk.version
57+
ext.isReleaseVersion = !libVersion.endsWith("SNAPSHOT")
58+
publishing {
59+
publications {
60+
aar(MavenPublication) {
61+
groupId 'com.tencent.iot.thirdparty.android'
62+
artifactId 'ijkplayer-java'
63+
version libVersion
64+
artifact(androidSourcesJar)
65+
artifact(androidJavadocsJar)
66+
artifact file('build/outputs/aar/ijkplayer-java-release.aar')
67+
68+
pom {
69+
name = 'ijkplayer'
70+
description = 'Tencent Link Android library'
71+
url = 'https://github.com/tencentyun/iot-ijkplayer'
72+
licenses {
73+
license {
74+
name = 'Tencent Binary License'
75+
url = 'https://github.com/tencentyun/iot-link-android/blob/master/explorer-link-android/LICENSE'
76+
}
77+
}
78+
developers {
79+
developer {
80+
id = 'tencent_archurtan'
81+
name = 'Tencent archurtan'
82+
email = 'archurtan@tencent.com'
83+
}
84+
}
85+
scm {
86+
url = 'scm:git@github.com:tencentyun/iot-ijkplayer.git'
87+
connection = 'scm:git@github.com:tencentyun/iot-ijkplayer.git'
88+
developerConnection = 'scm:git@github.com:tencentyun/iot-ijkplayer.git'
89+
}
90+
}
91+
92+
pom.withXml {
93+
def dependenciesNode = asNode().appendNode('dependencies')
94+
configurations.implementation.allDependencies.withType(ModuleDependency) { ModuleDependency dp ->
95+
if (dp.version != "unspecified") { // 过滤项目内library引用
96+
def dependencyNode = dependenciesNode.appendNode('dependency')
97+
dependencyNode.appendNode('groupId', dp.group)
98+
dependencyNode.appendNode('artifactId', dp.name)
99+
dependencyNode.appendNode('version', dp.version)
100+
101+
// for exclusions
102+
if (dp.excludeRules.size() > 0) {
103+
def exclusions = dependencyNode.appendNode('exclusions')
104+
dp.excludeRules.each { ExcludeRule ex ->
105+
def exclusion = exclusions.appendNode('exclusion')
106+
exclusion.appendNode('groupId', ex.group)
107+
exclusion.appendNode('artifactId', ex.module)
108+
}
109+
}
110+
}
111+
}
112+
}
113+
}
114+
}
115+
repositories {
116+
maven {
117+
def releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2"
118+
def snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots"
119+
url = libVersion.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
120+
credentials {
121+
username = System.getenv("IOT_SONATYPE_USERNAME")
122+
password = System.getenv("IOT_SONATYPE_PASSWORD")
123+
}
124+
}
125+
}
126+
}
127+
128+
signing {
129+
if (isReleaseVersion) {
130+
sign publishing.publications.aar
131+
}
132+
}

0 commit comments

Comments
 (0)