mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-26 02:17:34 +09:00
pt 1 in reviving the android build (copied from pm 28a1, wish me luck)
This commit is contained in:
parent
efa9662725
commit
d7788a6d6d
4249 changed files with 468189 additions and 0 deletions
176
mobile/android/geckoview/build.gradle
Normal file
176
mobile/android/geckoview/build.gradle
Normal file
|
|
@ -0,0 +1,176 @@
|
|||
buildDir "${topobjdir}/gradle/build/mobile/android/geckoview"
|
||||
|
||||
apply plugin: 'android-sdk-manager' // Must come before 'com.android.*'.
|
||||
apply plugin: 'com.android.library'
|
||||
|
||||
def VERSION_NAME = '0.0.1'
|
||||
|
||||
android {
|
||||
compileSdkVersion 23
|
||||
buildToolsVersion mozconfig.substs.ANDROID_BUILD_TOOLS_VERSION
|
||||
|
||||
defaultConfig {
|
||||
// TODO: version GeckoView explicitly. We'd like to avoid
|
||||
// mozconfig.substs.ANDROID_VERSION_CODE, which won't be intuitive to
|
||||
// consumer (and advances very quickly on pre-release channels).
|
||||
versionCode 1
|
||||
versionName VERSION_NAME
|
||||
targetSdkVersion 23
|
||||
minSdkVersion 15
|
||||
consumerProguardFiles 'proguard-rules.txt'
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
withGeckoBinaries {
|
||||
initWith release
|
||||
}
|
||||
withoutGeckoBinaries { // For clarity and consistency throughout the tree.
|
||||
initWith release
|
||||
}
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_7
|
||||
targetCompatibility JavaVersion.VERSION_1_7
|
||||
}
|
||||
|
||||
dexOptions {
|
||||
javaMaxHeapSize "2g"
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
abortOnError false
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
main {
|
||||
java {
|
||||
srcDir "${topsrcdir}/mobile/android/geckoview/src/thirdparty/java"
|
||||
|
||||
// TODO: support WebRTC.
|
||||
// if (mozconfig.substs.MOZ_WEBRTC) {
|
||||
// srcDir "${topsrcdir}/media/webrtc/trunk/webrtc/modules/audio_device/android/java/src"
|
||||
// srcDir "${topsrcdir}/media/webrtc/trunk/webrtc/modules/video_capture/android/java/src"
|
||||
// srcDir "${topsrcdir}/media/webrtc/trunk/webrtc/modules/video_render/android/java/src"
|
||||
// }
|
||||
|
||||
// TODO: don't use AppConstants.
|
||||
srcDir "${project.buildDir}/generated/source/preprocessed_code" // See syncPreprocessedCode.
|
||||
}
|
||||
|
||||
assets {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile "com.android.support:support-v4:${mozconfig.substs.ANDROID_SUPPORT_LIBRARY_VERSION}"
|
||||
}
|
||||
|
||||
task syncPreprocessedCode(type: Sync, dependsOn: rootProject.generateCodeAndResources) {
|
||||
into("${project.buildDir}/generated/source/preprocessed_code")
|
||||
from("${topobjdir}/mobile/android/base/generated/preprocessed") {
|
||||
// AdjustConstants is included in the main app project.
|
||||
exclude '**/AdjustConstants.java'
|
||||
}
|
||||
}
|
||||
|
||||
apply from: "${topsrcdir}/mobile/android/gradle/with_gecko_binaries.gradle"
|
||||
|
||||
android.libraryVariants.all { variant ->
|
||||
variant.preBuild.dependsOn syncPreprocessedCode
|
||||
|
||||
// Like 'debug', 'release', or 'withGeckoBinaries'.
|
||||
def buildType = variant.buildType.name
|
||||
|
||||
// It would be most natural for :geckoview to always include the Gecko
|
||||
// binaries, but that's difficult; see the notes in
|
||||
// mobile/android/gradle/with_gecko_binaries.gradle. Instead :app uses
|
||||
// :geckoview:release and handles it's own Gecko binary inclusion.
|
||||
if (buildType.equals('withGeckoBinaries')) {
|
||||
configureVariantWithGeckoBinaries(variant)
|
||||
}
|
||||
|
||||
// Javadoc and Sources JAR configuration cribbed from
|
||||
// https://github.com/mapbox/mapbox-gl-native/blob/d169ea55c1cfa85cd8bf19f94c5f023569f71810/platform/android/MapboxGLAndroidSDK/build.gradle#L85
|
||||
// informed by
|
||||
// https://code.tutsplus.com/tutorials/creating-and-publishing-an-android-library--cms-24582,
|
||||
// and amended from numerous Stackoverflow posts.
|
||||
def name = variant.name
|
||||
def javadoc = task "javadoc${name.capitalize()}"(type: Javadoc) {
|
||||
description = "Generate Javadoc for build variant $name"
|
||||
failOnError = false
|
||||
destinationDir = new File(destinationDir, variant.baseName)
|
||||
source = files(variant.javaCompile.source)
|
||||
classpath = files(variant.javaCompile.classpath.files) + files(android.bootClasspath)
|
||||
options.windowTitle("Mozilla GeckoView Android API $VERSION_NAME Reference")
|
||||
options.docTitle("Mozilla GeckoView Android API $VERSION_NAME")
|
||||
options.header("Mozilla GeckoView Android API $VERSION_NAME Reference")
|
||||
options.bottom("© 2016 Mozilla. All rights reserved.")
|
||||
options.links("http://docs.oracle.com/javase/7/docs/api/")
|
||||
options.linksOffline("http://d.android.com/reference/", "$System.env.ANDROID_HOME/docs/reference")
|
||||
// TODO: options.overview("src/main/java/overview.html")
|
||||
options.group("Mozilla GeckoView", "org.mozilla.gecko*") // TODO: narrow this down.
|
||||
exclude '**/R.java', '**/BuildConfig.java', 'com/googlecode/**'
|
||||
}
|
||||
|
||||
task "javadocJar${name.capitalize()}"(type: Jar, dependsOn: javadoc) {
|
||||
classifier = 'javadoc'
|
||||
from javadoc.destinationDir
|
||||
}
|
||||
|
||||
task "sourcesJar${name.capitalize()}"(type: Jar) {
|
||||
classifier 'sources'
|
||||
description = "Generate Javadoc for build variant $name"
|
||||
destinationDir = new File(destinationDir, variant.baseName)
|
||||
from files(variant.javaCompile.source)
|
||||
}
|
||||
}
|
||||
|
||||
apply plugin: 'maven'
|
||||
|
||||
uploadArchives {
|
||||
repositories.mavenDeployer {
|
||||
pom.groupId = 'org.mozilla'
|
||||
pom.artifactId = 'geckoview'
|
||||
pom.version = VERSION_NAME
|
||||
pom.project {
|
||||
licenses {
|
||||
license {
|
||||
name 'The Mozilla Public License, v. 2.0'
|
||||
url 'http://mozilla.org/MPL/2.0/'
|
||||
distribution 'repo'
|
||||
}
|
||||
}
|
||||
}
|
||||
repository(url: "file://${project.buildDir}/maven")
|
||||
}
|
||||
}
|
||||
|
||||
// This is all related to the withGeckoBinaries approach; see
|
||||
// mobile/android/gradle/with_gecko_binaries.gradle.
|
||||
afterEvaluate {
|
||||
// The bundle tasks are only present when the particular configuration is
|
||||
// being built, so this task might not exist. (This is due to the way the
|
||||
// Android Gradle plugin defines things during configuration.)
|
||||
def bundleWithGeckoBinaries = tasks.findByName('bundleWithGeckoBinaries')
|
||||
if (!bundleWithGeckoBinaries) {
|
||||
return
|
||||
}
|
||||
|
||||
// Remove default configuration, which is the release configuration, when
|
||||
// we're actually building withGeckoBinaries. This makes `gradle install`
|
||||
// install the withGeckoBinaries artifacts, not the release artifacts (which
|
||||
// are withoutGeckoBinaries and not suitable for distribution.)
|
||||
def Configuration archivesConfig = project.getConfigurations().getByName('archives')
|
||||
archivesConfig.artifacts.removeAll { it.extension.equals('aar') }
|
||||
|
||||
artifacts {
|
||||
// Instead of default (release) configuration, publish one with Gecko binaries.
|
||||
archives bundleWithGeckoBinaries
|
||||
// Javadoc and sources for developer ergononomics.
|
||||
archives javadocJarWithGeckoBinaries
|
||||
archives sourcesJarWithGeckoBinaries
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue