ACardEmulator: Added F-Droid build flavor with FOSS only

- avoid precompiled JARs for JCardSim
- use gradle's shadow plugin to relocate JCardSim's use of Bouncycastle
- removes JCardSim's Hello world applet
- use vJCRE to avoid importing Oracle's api_classic.jar

(We may use vJCRE as full replacement for JCardSim in the future, but
JCardSim is currently the choice with more features and support)
This commit is contained in:
Frank Morgner
2019-09-27 15:29:57 +02:00
parent e6a42efb6b
commit 1caff4f497
15 changed files with 160 additions and 77 deletions

View File

@@ -1,4 +1,13 @@
apply plugin: 'com.android.application'
apply plugin: 'com.github.johnrengelman.shadow'
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
task shadowJar(type: ShadowJar) {
configurations = [project.configurations.shadow]
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn shadowJar
}
android {
compileSdkVersion 23
@@ -16,25 +25,43 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
flavorDimensions "distribution"
productFlavors {
full {
dimension "distribution"
}
fdroid {
dimension "distribution"
applicationIdSuffix ".fdroid"
}
}
sourceSets {
main.java.srcDirs += 'src/main/external/vJCRE/src'
main.java.exclude('pro/javacard/vre/VJCREProvider*')
main.java.exclude('visa/*')
main.java.srcDirs += 'src/main/external/jcardsim/src/main/java'
main.java.exclude('**/APDUScriptTool.java')
main.java.exclude('**/JavaxSmartCardInterface.java')
main.java.exclude('**/CardTerminalSimulator.java')
main.java.exclude('**/JCSCard*.java')
main.java.exclude('**/JCSTerminal.java')
main.java.exclude('**/JCSFactory.java')
main.java.exclude('**/CardSimulator.java')
main.java.exclude('**/CAD.java')
main.java.exclude('**/CardTerminalSimulator.java')
main.java.exclude('com/licel/jcardsim/smartcardio/*')
main.java.exclude('com/licel/jcardsim/remote/*')
main.java.exclude('com/licel/jcardsim/utils/APDUScriptTool*')
main.java.exclude('com/licel/jcardsim/io/JavaxSmartCardInterface*')
main.java.exclude('com/licel/jcardsim/io/CAD*')
main.java.exclude('javacard/framework/service/CardRemoteObject*')
main.java.exclude('javacard/framework/service/RMIService*')
main.java.exclude('com/licel/jcardsim/utils/JavaCardApiProcessor*')
main.java.exclude('com/licel/jcardsim/framework/service/*')
main.java.exclude('com/licel/jcardsim/samples/*')
main.java.exclude('com/licel/jcardsim/crypto/*')
main.java.srcDirs += 'src/main/external/GidsApplet/src'
main.java.exclude('**/gidsAppletTests/*.java')
main.java.exclude('com/mysmartlogon/gidsAppletTests/*')
main.java.srcDirs += 'src/main/external/IsoApplet/src'
main.java.srcDirs += 'src/main/external/PivApplet/src'
main.java.srcDirs += 'src/main/external/android-scio/src/main'
main.java.srcDirs += 'src/main/external/ykneo-openpgp/applet/src'
main.java.srcDirs += 'src/main/external/ykneo-oath/applet/src'
}
shadowJar {
relocate 'org.bouncycastle', 'com.vsmartcard.acardemulator.org.bouncycastle'
}
}
android.applicationVariants.all { variant ->
@@ -59,12 +86,15 @@ android.applicationVariants.all { variant ->
}
dependencies {
shadow localGroovy()
shadow gradleApi()
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:support-v4:23.0.1'
compile 'com.android.support:design:23.2.1'
compile 'com.journeyapps:zxing-android-embedded:3.2.0@aar'
compile 'com.google.zxing:core:3.2.1'
compile 'com.madgag.spongycastle:core:1.51.0.0'
compile files('libs/sdk-v1.0.0.jar')
compile 'org.bouncycastle:bcprov-jdk14:1.49'
fullCompile files('libs/sdk-v1.0.0.jar')
}