diff --git a/.gitignore b/.gitignore index b6b662e00..298eb7f2a 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,4 @@ WORK .d google-services.json gradle.properties +.*clang* diff --git a/AndroidManifestLibrary.xml b/AndroidManifestLibrary.xml new file mode 100755 index 000000000..36a1c9bc9 --- /dev/null +++ b/AndroidManifestLibrary.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/README.md b/README.md index e763459fb..2f4006ab6 100644 --- a/README.md +++ b/README.md @@ -25,9 +25,11 @@ Linphone is a free VoIP and video softphone based on the SIP protocol. 8. _(optional)_ To generate a libmediastreamer2 SDK zip containing a full jar and native libraries, run `make mediastreamer2-sdk` -9. _(optional)_ To generate a signed apk to publish on the Google Play, run `make release`. Make sure you filled the ant.properties values for version.name, key.store and key.alias in order to correctly sign the generated apk. You also may want to create a file name ant_password.properties with the following: - * key.store.password=[your_password] - * key.alias.password=[your_password] +9. _(optional)_ To generate a signed apk to publish on the Google Play, run `make release`. Make sure you filled the gradle.properties values for version.name, store file, store password, key alias and key password to correctly sign the generated apk: + * RELEASE_STORE_FILE="" + * RELEASE_STORE_PASSWORD= + * RELEASE_KEY_ALIAS= + * RELEASE_KEY_PASSWORD= If you don't, the passwords will be asked at the signing phase. @@ -43,9 +45,9 @@ Linphone is a free VoIP and video softphone based on the SIP protocol. ## To create an apk with a different package name -You need to edit the custom_rules.xml file: +You need to edit the build.gradle file: -1. look for the property named "linphone.package.name" and change it value accordingly +1. look for the function named "getPackageName()" and change it value accordingly 2. also update the values in the AndroidManifest file where the comment appears 3. change the package name also in the files: res/xml/syncadapter.xml, res/xml/contacts.xml and res/values/non_localizable_custom where appears 4. run again the Makefile script by calling "make" diff --git a/ant.properties b/ant.properties deleted file mode 100644 index 62c331092..000000000 --- a/ant.properties +++ /dev/null @@ -1,4 +0,0 @@ -source.dir=src:submodules/linphone/mediastreamer2/java/src:submodules/linphone/java/j2se:submodules/linphone/java/common:submodules/linphone/java/impl:submodules/linphone/coreapi/help/java -key.store=bc-android.keystore -key.alias=nw8000 -version.name=3.1.2 diff --git a/build.gradle b/build.gradle index 5a8b41f55..b4f723654 100644 --- a/build.gradle +++ b/build.gradle @@ -41,6 +41,26 @@ if (firebaseEnable()) { apply plugin: 'com.google.gms.google-services' } +//// Submodule Dir ///// +def submoduleDir = ['submodules/linphone/mediastreamer2/java/src', + 'submodules/linphone/java/j2se', + 'submodules/linphone/java/common', + 'submodules/linphone/java/impl', + 'submodules/linphone/coreapi/help/java'] +//////////////////////// + +///// Exclude Files ///// +def excludeFiles = [] +// Exclude firebase file if not enable +if (!firebaseEnable()) { + excludeFiles.add('**/Firebase*') + println '[Push Notification] Firebase disabled' +} else { + println '[Push Notification] Firebase enabled' +} +excludeFiles.add('**/mediastream/MediastreamerActivity.java') +///////////////////////// + android { defaultConfig { compileSdkVersion 23 @@ -74,48 +94,18 @@ android { sourceSets { main { - String firebase = '' - // Exclude firebase file if not enable - if (!firebaseEnable()) { - firebase = '**/Firebase*' - println '[Push Notification] Firebase disabled' - } else { - println '[Push Notification] Firebase enabled' - } manifest.srcFile 'AndroidManifest.xml' - java.srcDirs = ['submodules/linphone/mediastreamer2/java/src', - 'submodules/linphone/java/j2se', - 'submodules/linphone/java/common', - 'submodules/linphone/java/impl', - 'submodules/linphone/coreapi/help/java', - 'src/com', - 'src/org'] - resources.srcDirs = ['submodules/linphone/mediastreamer2/java/src', - 'submodules/linphone/java/j2se', - 'submodules/linphone/java/common', - 'submodules/linphone/java/impl', - 'submodules/linphone/coreapi/help/java', - 'src/com', - 'src/org'] - aidl.srcDirs = ['submodules/linphone/mediastreamer2/java/src', - 'submodules/linphone/java/j2se', - 'submodules/linphone/java/common', - 'submodules/linphone/java/impl', - 'submodules/linphone/coreapi/help/java', - 'src/com', - 'src/org'] - renderscript.srcDirs = ['submodules/linphone/mediastreamer2/java/src', - 'submodules/linphone/java/j2se', - 'submodules/linphone/java/common', - 'submodules/linphone/java/impl', - 'submodules/linphone/coreapi/help/java', - 'src/com', - 'src/org'] + def srcDirs = submoduleDir + srcDirs.addAll(['src/com', + 'src/org']) + java.srcDirs = srcDirs + resources.srcDirs = srcDirs + aidl.srcDirs = srcDirs + renderscript.srcDirs = srcDirs res.srcDirs = ['res'] assets.srcDirs = ['assets'] jniLibs.srcDirs = ['libs'] - - java.excludes = ['**/mediastream/MediastreamerActivity.java', firebase] + java.excludes = excludeFiles // Exclude some useless files packagingOptions { @@ -129,44 +119,19 @@ android { sourceSets { androidTest { - String firebase = '' - // Exclude firebase file if not enable - if (!firebaseEnable()) { - firebase = '**/Firebase*' - println '[Push Notification] Firebase disabled' - } else { - println '[Push Notification] Firebase enabled' - } manifest.srcFile 'AndroidManifest.xml' - java.srcDirs = ['submodules/linphone/mediastreamer2/java/src', - 'submodules/linphone/java/j2se', - 'submodules/linphone/java/common', - 'submodules/linphone/java/impl', - 'submodules/linphone/coreapi/help/java', - 'src'] - resources.srcDirs = ['submodules/linphone/mediastreamer2/java/src', - 'submodules/linphone/java/j2se', - 'submodules/linphone/java/common', - 'submodules/linphone/java/impl', - 'submodules/linphone/coreapi/help/java', - 'src'] - aidl.srcDirs = ['submodules/linphone/mediastreamer2/java/src', - 'submodules/linphone/java/j2se', - 'submodules/linphone/java/common', - 'submodules/linphone/java/impl', - 'submodules/linphone/coreapi/help/java', - 'src'] - renderscript.srcDirs = ['submodules/linphone/mediastreamer2/java/src', - 'submodules/linphone/java/j2se', - 'submodules/linphone/java/common', - 'submodules/linphone/java/impl', - 'submodules/linphone/coreapi/help/java', - 'src'] + def srcDirs = submoduleDir + srcDirs.addAll(['src/com', + 'src/org', + 'src/androidTest']) + java.srcDirs = srcDirs + resources.srcDirs = srcDirs + aidl.srcDirs = srcDirs + renderscript.srcDirs = srcDirs res.srcDirs = ['res'] assets.srcDirs = ['assets'] jniLibs.srcDirs = ['libs'] - - java.excludes = ['**/mediastream/MediastreamerActivity.java', firebase] + java.excludes = excludeFiles // Exclude some useless files packagingOptions { @@ -177,4 +142,12 @@ android { debug.setRoot('build-types/debug') release.setRoot('build-types/release') } +} + +task runApplication() { + def result = exec { + executable = 'adb' + args = ['shell', 'monkey', '-p', getPackageName(), '-c', 'android.intent.category.LAUNCHER', '1'] + } + return result } \ No newline at end of file diff --git a/build.xml b/build.xml deleted file mode 100644 index c23990f28..000000000 --- a/build.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/custom_rules.xml b/custom_rules.xml deleted file mode 100644 index 77a9af00b..000000000 --- a/custom_rules.xml +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - - - - - - - Generate Javadoc - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Creating library output jar file... - - - - - - - - - - - - - - - - - - Creating library output jar file... - - - - - - - - - - - - - - - - - diff --git a/deliver_sdk.sh b/deliver_sdk.sh deleted file mode 100755 index ac1b8ea50..000000000 --- a/deliver_sdk.sh +++ /dev/null @@ -1,172 +0,0 @@ -#!/bin/sh - -copy() -{ - todir="$2/`dirname $1`" - echo "Copying $1 to $2/$1" - mkdir -p $todir - cp -r $1 $todir -} - -androidize() -{ -D=$1 -mkdir -p $D/gen - -# Add sources to eclipse .classpath -cat > $D/.classpath < - - - - - - - - - - - - - - - -EOF - -# Fix package name -( -cd $D -grep -R "org.linphone.R" . -l | grep java | xargs sed -i 's/org\.linphone\.R/org\.linphone\.sdk\.R/g' -) - -# Create a basic AndroidManifest.xml -cat > $D/AndroidManifest.xml < - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -EOF - -cat > $D/default.properties < $D/.settings/org.eclipse.jdt.core.prefs <> local.properties -fi - -echo "Generating javadoc to $D" -ant javadoc -rm -rf $D -zip -rq $D $DBASE -rm -rf $DBASE diff --git a/jni/Android.mk b/jni/Android.mk deleted file mode 100755 index f44ba5cc0..000000000 --- a/jni/Android.mk +++ /dev/null @@ -1,187 +0,0 @@ -# script expect linphone-root-dir variable to be set by parent ! - -#enable video on armv7 and x86 targets only -#since we want to modify BUILD_VIDEO and BUILD_X264 depending on platform, we need to make a copy because the -#variables given on command line take precedence over the ones defined internally. -ifeq ($(TARGET_ARCH_ABI), armeabi) -_BUILD_X264=0 -_BUILD_OPENH264=0 -_BUILD_VIDEO=0 -else -_BUILD_X264=$(BUILD_X264) -_BUILD_OPENH264=$(BUILD_OPENH264) -_BUILD_VIDEO=$(BUILD_VIDEO) -endif - -ifeq ($(_BUILD_VIDEO),0) -ifeq (,$(DUMP_VAR)) -endif -endif - -#libxml2 -include $(linphone-root-dir)/submodules/externals/build/libxml2/Android.mk - -ifeq ($(BUILD_ZRTP), 1) - BUILD_SRTP=1 -ZRTP_C_INCLUDE= \ - $(linphone-root-dir)/submodules/bzrtp/include -endif - -ifeq ($(BUILD_SRTP), 1) -SRTP_C_INCLUDE= \ - $(linphone-root-dir)/submodules/externals/srtp \ - $(linphone-root-dir)/submodules/externals/srtp/include \ - $(linphone-root-dir)/submodules/externals/srtp/crypto/include -endif - - -#sqlite -ifeq ($(BUILD_SQLITE),1) -include $(linphone-root-dir)/submodules/externals/build/sqlite/Android.mk -endif - -#libupnp -ifeq ($(BUILD_UPNP),1) -include $(linphone-root-dir)/submodules/externals/build/libupnp/Android.mk -endif - -# Speex -include $(linphone-root-dir)/submodules/externals/build/speex/Android.mk - -# Gsm -include $(linphone-root-dir)/submodules/externals/build/gsm/Android.mk - -# Matroska -ifeq ($(BUILD_MATROSKA), 1) -include $(linphone-root-dir)/submodules/externals/build/libmatroska-c/Android.mk -endif - -ifeq ($(BUILD_BCTOOLBOX_MBEDTLS),1) -include $(linphone-root-dir)/submodules/externals/build/mbedtls/Android.mk -include $(linphone-root-dir)/submodules/bctoolbox/build/android/Android-mbedtls.mk -else -include $(linphone-root-dir)/submodules/externals/build/polarssl/Android.mk -include $(linphone-root-dir)/submodules/bctoolbox/build/android/Android-polarssl.mk -endif - -include $(linphone-root-dir)/submodules/bctoolbox/build/android/Android-tester.mk - -ifeq ($(BUILD_MEDIASTREAMER2_SDK), 0) -include $(linphone-root-dir)/submodules/externals/build/antlr3/Android.mk -include $(linphone-root-dir)/submodules/belle-sip/build/android/Android.mk -endif - - -include $(linphone-root-dir)/submodules/linphone/oRTP/build/android/Android.mk - -include $(linphone-root-dir)/submodules/linphone/mediastreamer2/build/android/Android.mk -include $(linphone-root-dir)/submodules/linphone/mediastreamer2/tools/Android.mk - - -#tunnel -ifeq ($(BUILD_TUNNEL), 1) -include $(linphone-root-dir)/submodules/tunnel/Android.mk -endif - -ifeq ($(BUILD_SILK), 1) -ifeq (,$(DUMP_VAR)) -endif -include $(linphone-root-dir)/submodules/mssilk/Android.mk -endif - -ifeq ($(BUILD_CODEC2), 1) -include $(linphone-root-dir)/submodules/mscodec2/Android.mk -include $(linphone-root-dir)/submodules/externals/build/codec2/Android.mk -endif - -ifeq ($(_BUILD_VIDEO),1) - -ifeq ($(_BUILD_X264),1) -ifeq (,$(DUMP_VAR)) -endif -include $(linphone-root-dir)/submodules/msx264/Android.mk -include $(linphone-root-dir)/submodules/externals/build/x264/Android.mk -endif - -ifeq ($(_BUILD_OPENH264),1) -ifeq (,$(DUMP_VAR)) -endif -include $(linphone-root-dir)/submodules/msopenh264/Android.mk -include $(linphone-root-dir)/submodules/externals/build/openh264/Android.mk -endif - -include $(linphone-root-dir)/submodules/externals/build/ffmpeg/Android.mk -include $(linphone-root-dir)/submodules/externals/build/libvpx/Android.mk - - -endif #_BUILD_VIDEO - - -ifeq ($(BUILD_ZRTP), 1) -ifeq (,$(DUMP_VAR)) -endif -include $(linphone-root-dir)/submodules/bzrtp/Android.mk -endif - -ifeq ($(BUILD_SRTP), 1) -include $(linphone-root-dir)/submodules/externals/build/srtp/Android.mk -endif - -include $(linphone-root-dir)/submodules/linphone/build/android/Android.mk - -_BUILD_AMR=0 -ifneq ($(BUILD_AMRNB), 0) -_BUILD_AMR=1 -endif - -ifneq ($(BUILD_AMRWB), 0) -_BUILD_AMR=1 -endif - -ifneq ($(_BUILD_AMR), 0) -include $(linphone-root-dir)/submodules/externals/build/opencore-amr/Android.mk -include $(linphone-root-dir)/submodules/msamr/Android.mk -endif - -ifneq ($(BUILD_AMRWB), 0) -include $(linphone-root-dir)/submodules/externals/build/vo-amrwbenc/Android.mk -endif - -ifneq ($(BUILD_G729), 0) -include $(linphone-root-dir)/submodules/bcg729/Android.mk -include $(linphone-root-dir)/submodules/bcg729/msbcg729/Android.mk -endif - -ifneq ($(BUILD_OPUS), 0) -include $(linphone-root-dir)/submodules/externals/build/opus/Android.mk -endif - -WEBRTC_BUILD_NEON_LIBS=false - -# AECM -ifneq ($(BUILD_WEBRTC_AECM),0) -ifeq ($(TARGET_ARCH_ABI), armeabi-v7a) -WEBRTC_BUILD_NEON_LIBS=true -endif - -include $(linphone-root-dir)/submodules/mswebrtc/build/android/system_wrappers/Android.mk -include $(linphone-root-dir)/submodules/mswebrtc/build/android/modules/audio_processing/utility/Android.mk -include $(linphone-root-dir)/submodules/mswebrtc/build/android/modules/audio_processing/aecm/Android.mk -endif - -# iSAC -ifneq ($(BUILD_WEBRTC_ISAC),0) -# don't build for neon in x86 -ifeq ($(TARGET_ARCH_ABI), armeabi-v7a) -WEBRTC_BUILD_NEON_LIBS=true -endif - -include $(linphone-root-dir)/submodules/mswebrtc/build/android/modules/audio_coding/codecs/isac/fix/source/Android.mk -include $(linphone-root-dir)/submodules/mswebrtc/build/android/modules/audio_coding/codecs/ilbc/Android.mk -endif - -# common modules for ISAC and AECM -ifneq ($(BUILD_WEBRTC_AECM)$(BUILD_WEBRTC_ISAC)$(BUILD_ILBC),000) -include $(linphone-root-dir)/submodules/mswebrtc/build/android/common_audio/signal_processing/Android.mk -include $(linphone-root-dir)/submodules/mswebrtc/Android.mk -endif diff --git a/jni/Application.mk b/jni/Application.mk deleted file mode 100644 index 5119f4c76..000000000 --- a/jni/Application.mk +++ /dev/null @@ -1,168 +0,0 @@ -APP_PROJECT_PATH := $(call my-dir)/../ -NDK_TOOLCHAIN_VERSION := 4.8 - -ifeq ($(BUILD_MEDIASTREAMER2_SDK),) -BUILD_MEDIASTREAMER2_SDK=0 -endif - -APP_MODULES :=libspeex libgsm libortp libmediastreamer2 -ifeq ($(BUILD_MEDIASTREAMER2_SDK), 0) -APP_MODULES += antlr3 libbellesip liblinphone liblpxml2 -endif - -#default values: - -ifeq ($(BUILD_AMRNB),) -BUILD_AMRNB=light -endif - -ifeq ($(BUILD_AMRWB),) -BUILD_AMRWB=0 -endif - -ifeq ($(BUILD_SRTP),) -BUILD_SRTP=1 -endif - -ifeq ($(BUILD_X264),) -BUILD_X264=0 -endif - -ifeq ($(BUILD_OPENH264),) -BUILD_OPENH264=0 -endif - -ifeq ($(BUILD_G729),) -BUILD_G729=0 -endif - -ifeq ($(BUILD_CODEC2),) -BUILD_CODEC2=0 -endif - -ifeq ($(BUILD_VIDEO),) -BUILD_VIDEO=1 -endif - -ifeq ($(BUILD_MEDIASTREAMER2_SDK), 0) -#sqlite -ifeq ($(BUILD_SQLITE),1) -APP_MODULES += liblinsqlite -endif - -#uPnp -ifeq ($(BUILD_UPNP),1) -APP_MODULES += libupnp -endif - -APP_MODULES +=bctoolbox bctoolbox_tester -ifeq ($(BUILD_TLS),1) -ifeq ($(BUILD_BCTOOLBOX_MBEDTLS),1) -APP_MODULES +=mbedtls -else -APP_MODULES +=polarssl -endif -endif -endif - -ifeq ($(BUILD_VIDEO),1) -APP_MODULES += libffmpeg-linphone -APP_MODULES += libvpx -ifeq ($(BUILD_X264),1) -APP_MODULES +=libx264 libmsx264 -endif -ifeq ($(BUILD_OPENH264),1) -APP_MODULES += libopenh264 libmsopenh264 -endif -ifeq ($(BUILD_MATROSKA), 1) -APP_MODULES += libmatroska2 -endif -endif # BUILD_VIDEO - -_BUILD_AMR=0 -ifneq ($(BUILD_AMRNB), 0) -_BUILD_AMR=1 -endif - -ifneq ($(BUILD_AMRWB), 0) -_BUILD_AMR=1 -endif - -ifneq ($(_BUILD_AMR), 0) -APP_MODULES += libopencoreamr libmsamr -endif - -ifneq ($(BUILD_AMRWB), 0) -APP_MODULES += libvoamrwbenc -endif - -ifeq ($(BUILD_SILK),1) -APP_MODULES +=libmssilk -endif - -ifeq ($(BUILD_G729),1) -APP_MODULES +=libbcg729 libmsbcg729 -endif - -ifneq ($(BUILD_OPUS), 0) -APP_MODULES += libopus -endif - -ifeq ($(BUILD_ILBC), 1) -APP_MODULES += libwebrtc_spl libwebrtc_ilbc libmswebrtc -ifneq (,$(findstring armeabi,$(TARGET_ARCH_ABI))) -APP_MODULES += libwebrtc_spl_neon -endif -endif - -ifneq ($(BUILD_WEBRTC_AECM), 0) -APP_MODULES += libwebrtc_system_wrappers libwebrtc_spl libwebrtc_apm_utility libwebrtc_aecm libmswebrtc -ifneq (,$(findstring armeabi,$(TARGET_ARCH_ABI))) -APP_MODULES += libwebrtc_spl_neon libwebrtc_aecm_neon -endif -endif - -ifeq ($(BUILD_WEBRTC_ISAC), 1) -APP_MODULES += libwebrtc_spl libwebrtc_isacfix libmswebrtc -ifneq (,$(findstring armeabi,$(TARGET_ARCH_ABI))) -APP_MODULES += libwebrtc_spl_neon libwebrtc_isacfix_neon -endif -endif - -ifeq ($(BUILD_MEDIASTREAMER2_SDK), 0) -ifeq ($(RING),yes) -APP_MODULES += libring -endif - -ifeq ($(BUILD_TUNNEL), 1) -APP_MODULES += libtunnelclient -endif -endif - -ifeq ($(BUILD_ZRTP), 1) -APP_MODULES += libbzrtp -endif - -ifeq ($(BUILD_CODEC2), 1) -APP_MODULES +=libcodec2 libmscodec2 -endif - -ifeq ($(BUILD_SRTP), 1) -APP_MODULES += libsrtp -endif - -linphone-root-dir:=$(APP_PROJECT_PATH) - -APP_BUILD_SCRIPT:=$(call my-dir)/Android.mk -APP_PLATFORM := android-8 -APP_ABI := armeabi-v7a -ifeq ($(BUILD_FOR_ARM), 1) -APP_ABI += armeabi -endif -ifeq ($(BUILD_FOR_X86), 1) -APP_ABI += x86 -endif - -APP_CFLAGS += -Werror -Wall -Wno-strict-aliasing -Wno-unused-function -# Thanks cpufeature.c imported from the NDK... -APP_CFLAGS += -Wno-unused-variable diff --git a/libLinphoneAndroidSdk.gradle b/libLinphoneAndroidSdk.gradle new file mode 100644 index 000000000..3b039a3c2 --- /dev/null +++ b/libLinphoneAndroidSdk.gradle @@ -0,0 +1,102 @@ +// Project information +buildDir = 'bin' + +buildscript { + repositories { + jcenter() + mavenCentral() + mavenLocal() + } + dependencies { + classpath 'com.android.tools.build:gradle:2.3.0' + } +} + +apply plugin: 'com.android.library' + +dependencies { + compile fileTree(dir: 'libs', include: 'commons-compress-1.11.jar') +} + +def submoduleDir = ['submodules/linphone/mediastreamer2/java/src', + 'submodules/linphone/java/j2se', + 'submodules/linphone/java/common', + 'submodules/linphone/java/impl', + 'submodules/linphone/coreapi/help/java'] + +android { + defaultConfig { + compileSdkVersion 23 + buildToolsVersion "25.0.2" + multiDexEnabled true + } + + lintOptions { + checkReleaseBuilds false + // Or, if you prefer, you can continue to check for errors in release builds, + // but continue the build even when errors are found: + abortOnError false + } + + sourceSets { + main { + manifest.srcFile 'AndroidManifestLibrary.xml' + java.srcDirs = submoduleDir + resources.srcDirs = submoduleDir + aidl.srcDirs = submoduleDir + renderscript.srcDirs = submoduleDir + jniLibs.srcDirs = ['libs'] + + java.excludes = ['**/mediastream/MediastreamerActivity.java'] + + // Exclude some useless files + packagingOptions { + exclude '**/gdb.*' + } + } + debug.setRoot('build-types/debug') + release.setRoot('build-types/release') + } +} + +android { + libraryVariants.all { variant -> + def appName = "liblinphone-android-sdk" + variant.outputs.each { output -> + def newSdkName = "bin/outputs/aar/${appName}.aar" + output.outputFile = new File(newSdkName) + } + } +} + +///////////// Task ///////////// + +task(releaseJavadoc, type: Javadoc, dependsOn: "assembleRelease") { + source = submoduleDir + excludes = ['**/mediastream/MediastreamerActivity.java', + '**/**.html', + '**/**.aidl'] + classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) + classpath += files(android.libraryVariants.release.javaCompile.classpath.files) +} + +task sourcesJar(type: Jar) { + classifier = 'sources' + from android.sourceSets.main.java.srcDirs +} + +task androidJavadocsJar(type: Jar, dependsOn: releaseJavadoc) { + classifier = 'javadoc' + from releaseJavadoc.destinationDir +} + +task sdkZip(type: Zip) { + String appName = "linphone-android-sdk" + String gitSha = 'git describe --always'.execute().text.trim() + String newSdkName = appName + "-" + gitSha + ".zip" + + from('bin/libs', + 'bin/outputs/aar') + include '*' + archiveName newSdkName +} \ No newline at end of file diff --git a/liblinphone_tester/AndroidManifest.xml b/liblinphone_tester/AndroidManifest.xml index 6c8623f2c..df3a24e3e 100644 --- a/liblinphone_tester/AndroidManifest.xml +++ b/liblinphone_tester/AndroidManifest.xml @@ -20,7 +20,6 @@ diff --git a/liblinphone_tester/Makefile b/liblinphone_tester/Makefile index 26b8dc004..a40a04c7f 100644 --- a/liblinphone_tester/Makefile +++ b/liblinphone_tester/Makefile @@ -1,30 +1,23 @@ -ANDROID_MOST_RECENT_TARGET=$(shell android list target -c | grep -E 'android-[0-9]+' | tail -n1) -SDK_PLATFORM_TOOLS_PATH=$(shell dirname `which adb`) - -all: update-project copy-files +all: copy-files ../gradlew clean ../gradlew uninstallDebug - ../gradlew installDebug run-all-tests: all - ant test - -update-project: - android update project --path . --target $(ANDROID_MOST_RECENT_TARGET) + ../gradlew installDebug + $(shell adb shell am instrument -r -w org.linphone.tester/org.linphone.tester.TestRunner | tee report.txt) copy-libs: - rm -rf libs/armeabi - mkdir -p assets/config_files - if test -d "../liblinphone-sdk/android-arm"; then \ - mkdir -p libs/armeabi && \ - cp -f ../liblinphone-sdk/android-arm/lib/libgnustl_shared.so libs/armeabi && \ - cp -f ../liblinphone-sdk/android-arm/lib/lib*-armeabi.so libs/armeabi && \ - cp -f ../liblinphone-sdk/android-arm/lib/mediastreamer/plugins/*.so libs/armeabi && \ - cp -f ../liblinphone-sdk/android-arm/share/linphone/rootca.pem assets/config_files; \ + rm -rf libs/arm64-v8a + if test -d "../liblinphone-sdk/android-arm64"; then \ + mkdir -p libs/arm64-v8a && \ + cp -f ../liblinphone-sdk/android-arm64/lib/libgnustl_shared.so libs/arm64-v8a && \ + cp -f ../liblinphone-sdk/android-arm64/lib/lib*-arm64-v8a.so libs/arm64-v8a && \ + cp -f ../liblinphone-sdk/android-arm64/lib/mediastreamer/plugins/*.so libs/arm64-v8a && \ + cp -f ../liblinphone-sdk/android-arm64/share/linphone/rootca.pem assets/config_files; \ fi - if test -f "../liblinphone-sdk/android-arm/bin/gdbserver"; then \ - cp -f ../liblinphone-sdk/android-arm/bin/gdbserver libs/armeabi && \ - cp -f ../liblinphone-sdk/android-arm/bin/gdb.setup libs/armeabi; \ + if test -f "../liblinphone-sdk/android-arm64/bin/gdbserver"; then \ + cp -f ../liblinphone-sdk/android-arm64/bin/gdbserver libs/arm64-v8a && \ + cp -f ../liblinphone-sdk/android-arm64/bin/gdb.setup libs/arm64-v8a; \ fi rm -rf libs/armeabi-v7a if test -d "../liblinphone-sdk/android-armv7"; then \ @@ -63,6 +56,3 @@ copy-files: ../submodules/linphone/tester/tester_hosts ../submodules/linphone/te cp -rf ../submodules/linphone/tester/rcfiles assets/config_files cp -rf ../submodules/linphone/tester/sounds assets/config_files cp -rf ../submodules/linphone/tester/vcards assets/config_files - if [ -a ../google-services.json ] ; \ - then cp ../google-services.json . ; \ - fi; diff --git a/liblinphone_tester/ant.properties b/liblinphone_tester/ant.properties deleted file mode 100644 index 1c4ad6f9f..000000000 --- a/liblinphone_tester/ant.properties +++ /dev/null @@ -1,2 +0,0 @@ -source.dir=src:../submodules/linphone/mediastreamer2/java/src:../submodules/linphone/java/j2se:../submodules/linphone/java/common:../submodules/linphone/java/impl -test.runner=com.zutubi.android.junitreport.JUnitReportTestRunner diff --git a/liblinphone_tester/build.gradle b/liblinphone_tester/build.gradle index b54ca8cbb..743932378 100644 --- a/liblinphone_tester/build.gradle +++ b/liblinphone_tester/build.gradle @@ -5,39 +5,24 @@ def getPackageName() { return "org.linphone.tester" } -def firebaseEnable() { - File googleFile = new File('google-services.json') - return googleFile.exists() -} - buildscript { - File googleFile = new File('google-services.json') repositories { jcenter() mavenCentral() mavenLocal() } dependencies { - classpath 'com.android.tools.build:gradle:2.2.2' - if (googleFile.exists()) { - classpath 'com.google.gms:google-services:3.0.0' - } + classpath 'com.android.tools.build:gradle:2.3.0' } } apply plugin: 'com.android.application' -if (firebaseEnable()) { - apply plugin: 'com.google.gms.google-services' -} - dependencies { + compile project(":libLinphoneAndroidSdk") compile fileTree(dir: 'libs', include: '*.jar') - if (firebaseEnable()) { - compile 'com.google.firebase:firebase-messaging:9.0.0' - } else { - compile 'com.android.support:support-v4:+' - } + androidTestCompile project(":libLinphoneAndroidSdk") + androidTestCompile fileTree(dir: 'libs', include: '*.jar') } android { @@ -46,30 +31,44 @@ android { buildToolsVersion "25.0.2" applicationId getPackageName() multiDexEnabled true + ndk { + ldLibs "log" + } } sourceSets { main { - String firebase = '' - // Exclude firebase file if not enable - if (!firebaseEnable()) { - firebase = '**/Firebase*' - println '[Push Notification] Firebase disabled' - } else { - println '[Push Notification] Firebase enabled' - } - manifest.srcFile 'AndroidManifest.xml' - java.srcDirs = ['../submodules/linphone/mediastreamer2/java/src','../submodules/linphone/java/j2se','../submodules/linphone/java/common','../submodules/linphone/java/impl','../submodules/externals/axmlrpc/src/main/java','../submodules/linphone/coreapi/help/java','src'] - resources.srcDirs = ['../submodules/linphone/mediastreamer2/java/src','../submodules/linphone/java/j2se','../submodules/linphone/java/common','../submodules/linphone/java/impl','../submodules/externals/axmlrpc/src/main/java','../submodules/linphone/coreapi/help/java','src'] - aidl.srcDirs = ['../submodules/linphone/mediastreamer2/java/src','../submodules/linphone/java/j2se','../submodules/linphone/java/common','../submodules/linphone/java/impl','../submodules/externals/axmlrpc/src/main/java','../submodules/linphone/coreapi/help/java','src'] - renderscript.srcDirs = ['../submodules/linphone/mediastreamer2/java/src','../submodules/linphone/java/j2se','../submodules/linphone/java/common','../submodules/linphone/java/impl','../submodules/externals/axmlrpc/src/main/java','../submodules/linphone/coreapi/help/java','src'] + java.srcDirs = ['src'] + resources.srcDirs = ['src'] + aidl.srcDirs = ['src'] + renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] jniLibs.srcDir 'libs' - java.exclude firebase + // Exclude some useless files + packagingOptions { + exclude '**/gdb.*' + } } + debug.setRoot('build-types/debug') + release.setRoot('build-types/release') + } + + sourceSets { + androidTest { + manifest.srcFile 'AndroidManifest.xml' + java.srcDirs = ['src'] + resources.srcDirs = ['src'] + aidl.srcDirs = ['src'] + renderscript.srcDirs = ['src'] + res.srcDirs = ['res'] + assets.srcDirs = ['assets'] + jniLibs.srcDir 'libs' + } + debug.setRoot('build-types/debug') + release.setRoot('build-types/release') } lintOptions { diff --git a/liblinphone_tester/build.xml b/liblinphone_tester/build.xml deleted file mode 100644 index 4eb05f07c..000000000 --- a/liblinphone_tester/build.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/liblinphone_tester/custom_rules.xml b/liblinphone_tester/custom_rules.xml deleted file mode 100644 index 71c0890c6..000000000 --- a/liblinphone_tester/custom_rules.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - - - - - - - - - - Adb log files are put in ${archive.name}.zip - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/liblinphone_tester/gradlew b/liblinphone_tester/gradlew new file mode 100755 index 000000000..4453ccea3 --- /dev/null +++ b/liblinphone_tester/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save ( ) { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/liblinphone_tester/gradlew.bat b/liblinphone_tester/gradlew.bat new file mode 100644 index 000000000..e95643d6a --- /dev/null +++ b/liblinphone_tester/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/liblinphone_tester/jni/Android.mk b/liblinphone_tester/jni/Android.mk deleted file mode 100644 index bacf8a993..000000000 --- a/liblinphone_tester/jni/Android.mk +++ /dev/null @@ -1,3 +0,0 @@ -include ../jni/Android.mk -include $(linphone-root-dir)/submodules/externals/build/cunit/Android.mk -include $(linphone-root-dir)/submodules/linphone/build/android/liblinphone_tester.mk diff --git a/liblinphone_tester/jni/Application.mk b/liblinphone_tester/jni/Application.mk deleted file mode 100644 index a6da504c7..000000000 --- a/liblinphone_tester/jni/Application.mk +++ /dev/null @@ -1,7 +0,0 @@ -LOCAL_PATH:= $(call my-dir) -include ../jni/Application.mk -APP_PROJECT_PATH := $(LOCAL_PATH)/../ -APP_BUILD_SCRIPT := $(LOCAL_PATH)/Android.mk -APP_OPTIM := debug - -APP_MODULES += cunit liblinphone_tester diff --git a/liblinphone_tester/libs/commons-compress-1.11.jar b/liblinphone_tester/libs/commons-compress-1.11.jar deleted file mode 100644 index 71c92ce17..000000000 Binary files a/liblinphone_tester/libs/commons-compress-1.11.jar and /dev/null differ diff --git a/liblinphone_tester/settings.gradle b/liblinphone_tester/settings.gradle new file mode 100644 index 000000000..e18620715 --- /dev/null +++ b/liblinphone_tester/settings.gradle @@ -0,0 +1,3 @@ +include ':libLinphoneAndroidSdk' +project(':libLinphoneAndroidSdk').projectDir = new File(rootProject.projectDir,'..') +project(':libLinphoneAndroidSdk').buildFileName = "libLinphoneAndroidSdk.gradle" diff --git a/liblinphone_tester/src/org/linphone/tester/MainActivity.java b/liblinphone_tester/src/org/linphone/tester/MainActivity.java index 0c64e6ef5..32afda090 100644 --- a/liblinphone_tester/src/org/linphone/tester/MainActivity.java +++ b/liblinphone_tester/src/org/linphone/tester/MainActivity.java @@ -23,7 +23,7 @@ public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - + setContentView(R.layout.activity_main); try { TestUnit.copyAssetsFromPackage(getApplicationContext()); diff --git a/liblinphone_tester/src/org/linphone/tester/SuitesActivity.java b/liblinphone_tester/src/org/linphone/tester/SuitesActivity.java index ffaa91bd7..dd1ca2224 100644 --- a/liblinphone_tester/src/org/linphone/tester/SuitesActivity.java +++ b/liblinphone_tester/src/org/linphone/tester/SuitesActivity.java @@ -58,8 +58,8 @@ public class SuitesActivity extends Activity { layout.addView(button); } - - + + @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. diff --git a/liblinphone_tester/src/org/linphone/tester/TestRunner.java b/liblinphone_tester/src/org/linphone/tester/TestRunner.java index af83f0005..e7da82e0b 100644 --- a/liblinphone_tester/src/org/linphone/tester/TestRunner.java +++ b/liblinphone_tester/src/org/linphone/tester/TestRunner.java @@ -11,13 +11,13 @@ import java.lang.Override; public class TestRunner extends JUnitReportTestRunner { String mSuite = null; String mTest = null; - + @Override public void onCreate(Bundle arguments) { mSuite = arguments.getString("suite"); mTest = arguments.getString("test"); Tester.keepAccounts(true); - + super.onCreate(arguments); } @@ -26,7 +26,7 @@ public class TestRunner extends JUnitReportTestRunner { Tester.clearAccounts(); super.onDestroy(); } - + @Override public TestSuite getAllTests () { TestSuite suite = new TestSuite("Tests"); @@ -34,7 +34,7 @@ public class TestRunner extends JUnitReportTestRunner { addSuites(suite, mSuite, mTest); return suite; } - + public static void addSuites(TestSuite suite, String suiteCheck, String testCheck) { TesterList testerList = new TesterList(); testerList.run(new String[]{"tester", "--list-suites"}); @@ -45,7 +45,7 @@ public class TestRunner extends JUnitReportTestRunner { } } } - + public static void addSuite(TestSuite suite, String suiteStr, String testCheck) { TesterList testerList = new TesterList(); testerList.run(new String[]{"tester", "--list-tests", suiteStr}); diff --git a/liblinphone_tester/src/org/linphone/tester/Tester.java b/liblinphone_tester/src/org/linphone/tester/Tester.java index 049c4405e..8eb537496 100644 --- a/liblinphone_tester/src/org/linphone/tester/Tester.java +++ b/liblinphone_tester/src/org/linphone/tester/Tester.java @@ -18,12 +18,12 @@ public class Tester { } return false; } - + public static boolean isArmv7() { return System.getProperty("os.arch").contains("armv7"); } - + static { List cpuabis=Version.getCpuAbis(); String ffmpegAbi; @@ -41,7 +41,7 @@ public class Tester { System.loadLibrary("mediastreamer_voip-" + abi); System.loadLibrary("linphone-" + abi); System.loadLibrary("linphonetester-" + abi); - + Log.i("LinphoneCoreFactoryImpl","Loading done with " + abi); libLoaded=true; break; @@ -49,19 +49,19 @@ public class Tester { if (firstException == null) firstException=e; } } - + if (!libLoaded){ throw new RuntimeException(firstException); - + }else{ Version.dumpCapabilities(); } } - + public native int run(String args[]); public static native void keepAccounts(boolean keep); public static native void clearAccounts(); - + public void printLog(final int level, final String message) { switch(level) { case 0: diff --git a/liblinphone_tester/src/org/linphone/tester/TesterList.java b/liblinphone_tester/src/org/linphone/tester/TesterList.java index 4dceb606b..e2ba3a15c 100644 --- a/liblinphone_tester/src/org/linphone/tester/TesterList.java +++ b/liblinphone_tester/src/org/linphone/tester/TesterList.java @@ -9,7 +9,7 @@ public class TesterList extends Tester { super.printLog(level, message); list.add(message); } - + public List getList() { return list; } diff --git a/liblinphone_tester/src/org/linphone/tester/WrapperTester.java b/liblinphone_tester/src/org/linphone/tester/WrapperTester.java index cdd21365a..3f9103d98 100644 --- a/liblinphone_tester/src/org/linphone/tester/WrapperTester.java +++ b/liblinphone_tester/src/org/linphone/tester/WrapperTester.java @@ -18,7 +18,7 @@ public class WrapperTester extends AndroidTestCase { super(); setName("wrapper tester"); } - + LinphoneCore mCore; @Override protected void runTest() throws Throwable { @@ -27,39 +27,39 @@ public class WrapperTester extends AndroidTestCase { Assert.assertEquals(true, mCore.audioMulticastEnabled()); mCore.enableAudioMulticast(false); Assert.assertEquals(false, mCore.audioMulticastEnabled()); - + mCore.enableVideoMulticast(true); Assert.assertEquals(true, mCore.videoMulticastEnabled()); mCore.enableVideoMulticast(false); Assert.assertEquals(false, mCore.videoMulticastEnabled()); - + LinphoneCallParams params = mCore.createCallParams(null); params.enableAudioMulticast(true); Assert.assertEquals(true, params.audioMulticastEnabled()); params.enableAudioMulticast(false); Assert.assertEquals(false, params.audioMulticastEnabled()); - + params.enableVideoMulticast(true); Assert.assertEquals(true, params.videoMulticastEnabled()); params.enableVideoMulticast(false); Assert.assertEquals(false, params.videoMulticastEnabled()); - - + + String ip = "224.3.2.1"; mCore.setAudioMulticastAddr(ip); Assert.assertEquals(ip, mCore.getAudioMulticastAddr()); - + ip = "224.3.2.3"; mCore.setVideoMulticastAddr(ip); Assert.assertEquals(ip, mCore.getVideoMulticastAddr()); - + mCore.setAudioMulticastTtl(3); Assert.assertEquals(3, mCore.getAudioMulticastTtl()); - + mCore.setVideoMulticastTtl(4); Assert.assertEquals(4, mCore.getVideoMulticastTtl()); //multicast end - + //Test setPrimaryContact String address = "Linphone Android "; mCore.setPrimaryContact(address); @@ -87,7 +87,7 @@ public class WrapperTester extends AndroidTestCase { LinphoneFriend friend = mCore.createFriendWithAddress("sip:lala@test.linphone.org"); friend.setRefKey(key); Assert.assertEquals(friend.getRefKey(),key); - + //Test filter enablement Factory factory = mCore.getMSFactory(); factory.enableFilterFromName("MSUlawEnc", false); diff --git a/library.patch b/library.patch deleted file mode 100644 index 915c5ee0c..000000000 --- a/library.patch +++ /dev/null @@ -1,366 +0,0 @@ -diff --git a/AndroidManifest.xml b/AndroidManifest.xml -index 8bc78f3..5481307 100755 ---- a/AndroidManifest.xml -+++ b/AndroidManifest.xml -@@ -8,314 +8,4 @@ - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - -diff --git a/build.gradle b/build.gradle -index 3dd7bdc..9f467cb 100644 ---- a/build.gradle -+++ b/build.gradle -@@ -25,7 +25,7 @@ buildscript { - } - } - --apply plugin: 'com.android.application' -+apply plugin: 'com.android.library' - - dependencies { - compile fileTree(dir: 'libs', include: '*.jar') -@@ -44,7 +44,7 @@ android { - defaultConfig { - compileSdkVersion 23 - buildToolsVersion "25.0.2" -- applicationId getPackageName() -+ //applicationId getPackageName() - multiDexEnabled true - } - -@@ -57,17 +57,17 @@ android { - - // Signing - signingConfigs { -- release { -- storeFile file(RELEASE_STORE_FILE) -- storePassword RELEASE_STORE_PASSWORD -- keyAlias RELEASE_KEY_ALIAS -- keyPassword RELEASE_KEY_PASSWORD -- } -+ //release { -+ //storeFile file(RELEASE_STORE_FILE) -+ //storePassword RELEASE_STORE_PASSWORD -+ //keyAlias RELEASE_KEY_ALIAS -+ //keyPassword RELEASE_KEY_PASSWORD -+ //} - } - - buildTypes { - release { -- signingConfig signingConfigs.release -+ signingConfig null//signingConfigs.release - } - } - diff --git a/linphoneAndroidSdk.gradle b/linphoneAndroidSdk.gradle new file mode 100644 index 000000000..218e92829 --- /dev/null +++ b/linphoneAndroidSdk.gradle @@ -0,0 +1,126 @@ +// Project information +buildDir = 'bin' + +def getPackageName() { + return "org.linphone" +} + +buildscript { + repositories { + jcenter() + mavenCentral() + mavenLocal() + } + dependencies { + classpath 'com.android.tools.build:gradle:2.2.2' + classpath 'com.google.gms:google-services:3.0.0' + } +} + +apply plugin: 'com.android.library' + +dependencies { + compile fileTree(dir: 'libs', include: '*.jar') + compile 'com.google.firebase:firebase-messaging:9.0.0' + compile 'com.android.support:support-v4:+' +} + +apply plugin: 'com.google.gms.google-services' + + +def srcDirs = ['submodules/linphone/mediastreamer2/java/src', + 'submodules/linphone/java/j2se', + 'submodules/linphone/java/common', + 'submodules/linphone/java/impl', + 'submodules/linphone/coreapi/help/java', + 'src/org/', + 'src/com'] + +def excludeFiles = [] + +excludeFiles.add('**/mediastream/MediastreamerActivity.java') + +android { + defaultConfig { + compileSdkVersion 23 + buildToolsVersion "25.0.2" + multiDexEnabled true + } + + lintOptions { + checkReleaseBuilds false + // Or, if you prefer, you can continue to check for errors in release builds, + // but continue the build even when errors are found: + abortOnError false + } + + sourceSets { + main { + manifest.srcFile 'AndroidManifest.xml' + java.srcDirs = srcDirs + resources.srcDirs = srcDirs + aidl.srcDirs = srcDirs + renderscript.srcDirs = srcDirs + res.srcDirs = ['res'] + assets.srcDirs = ['assets'] + jniLibs.srcDirs = ['libs'] + + java.excludes = excludeFiles + + // Exclude some useless files + packagingOptions { + exclude '**/gdb.*' + } + } + + debug.setRoot('build-types/debug') + release.setRoot('build-types/release') + } +} + +android { + libraryVariants.all { variant -> + def appName = "linphone-android-sdk" + + variant.outputs.each { output -> + def newSdkName = "bin/outputs/aar/${appName}.aar" + output.outputFile = new File(newSdkName) + } + } +} + +///////////// Task ///////////// + +task(releaseJavadoc, type: Javadoc, dependsOn: "assembleRelease") { + source = ['submodules/linphone/mediastreamer2/java/src', + 'submodules/linphone/java/j2se', + 'submodules/linphone/java/common', + 'submodules/linphone/java/impl', + 'submodules/linphone/coreapi/help/java'] + excludes = ['**/mediastream/MediastreamerActivity.java', + '**/**.html', + '**/**.aidl'] + classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) + classpath += files(android.libraryVariants.release.javaCompile.classpath.files) +} + +task sourcesJar(type: Jar) { + classifier = 'sources' + from android.sourceSets.main.java.srcDirs +} + +task androidJavadocsJar(type: Jar, dependsOn: releaseJavadoc) { + classifier = 'javadoc' + from releaseJavadoc.destinationDir +} + +task sdkZip(type: Zip) { + String appName = "linphone-android-sdk" + String gitSha = 'git describe --always'.execute().text.trim() + String newSdkName = appName + "-" + gitSha + ".zip" + + from('bin/libs', + 'bin/outputs/aar') + include '*' + archiveName newSdkName +} \ No newline at end of file diff --git a/prepare.py b/prepare.py index b11b68c16..dbac00ed1 100755 --- a/prepare.py +++ b/prepare.py @@ -205,11 +205,9 @@ class AndroidPreparator(prepare.Preparator): archs={archs} TOPDIR=$(shell pwd) LINPHONE_ANDROID_VERSION=$(shell git describe --always) -ANT_SILENT=$(shell ant -h | grep -q -- -S && echo 1 || echo 0) -PACKAGE_NAME=$(shell sed -nE 's||\\1|p' custom_rules.xml) .PHONY: all -.NOTPARALLEL: all generate-apk generate-mediastreamer2-apk install release +.NOTPARALLEL: all generate-apk install release all: generate-apk @@ -222,9 +220,6 @@ install: install-apk run-linphone java-clean: \t./gradlew clean -ant-clean: -\tant clean - $(TOPDIR)/res/raw/rootca.pem: \tcp liblinphone-sdk/android-{first_arch}/share/linphone/rootca.pem $@ @@ -306,46 +301,43 @@ copy-libs: \t\tcp -f liblinphone-sdk/android-x86/bin/gdb.setup libs/x86; \\ \tfi -update-mediastreamer2-project: -\t@cd $(TOPDIR)/submodules/linphone/mediastreamer2/java - generate-apk: java-clean build copy-libs $(TOPDIR)/res/raw/rootca.pem -\techo "version.name=$(LINPHONE_ANDROID_VERSION)" > default.properties && \\ \t./gradlew assembleDebug -generate-mediastreamer2-apk: ant-clean build copy-libs update-mediastreamer2-project -\t@cd $(TOPDIR)/submodules/linphone/mediastreamer2/java && \\ -\techo "version.name=$(LINPHONE_ANDROID_VERSION)" > default.properties && \\ -\tant debug - quick: clean install-apk run-linphone install-apk: \t./gradlew installDebug uninstall: -\tadb uninstall $(PACKAGE_NAME) +\t./gradlew uninstallAll release: java-clean build copy-libs \t./gradlew assembleRelease generate-sdk: liblinphone-android-sdk -liblinphone-android-sdk: generate-apk -\ttant liblinphone-android-sdk +liblinphone-android-sdk: java-clean build copy-libs $(TOPDIR)/res/raw/rootca.pem +\t./gradlew -b libLinphoneAndroidSdk.gradle androidJavadocsJar +\t./gradlew -b libLinphoneAndroidSdk.gradle sourcesJar +\t./gradlew -b libLinphoneAndroidSdk.gradle assembleRelease +\t./gradlew -b libLinphoneAndroidSdk.gradle sdkZip -linphone-android-sdk: generate-apk -\tant linphone-android-sdk +linphone-android-sdk: java-clean build copy-libs $(TOPDIR)/res/raw/rootca.pem +\t./gradlew -b linphoneAndroidSdk.gradle androidJavadocsJar +\t./gradlew -b linphoneAndroidSdk.gradle sourcesJar +\t./gradlew -b linphoneAndroidSdk.gradle assembleRelease +\t./gradlew -b linphoneAndroidSdk.gradle sdkZip -mediastreamer2-sdk: generate-mediastreamer2-apk -\t@cd $(TOPDIR)/submodules/linphone/mediastreamer2/java && \\ -\tant mediastreamer2-sdk +mediastreamer2-sdk: build copy-libs +\t@cd $(TOPDIR)/submodules/mediastreamer2/java && \\ +\t./gradlew assembleRelease liblinphone_tester: \t$(MAKE) -C liblinphone_tester run-linphone: -\tadb shell monkey -p $(PACKAGE_NAME) -c android.intent.category.LAUNCHER 1 +\t./gradlew runApplication run-liblinphone-tests: \t@cd liblinphone_tester && \\ diff --git a/submodules/mediastreamer2 b/submodules/mediastreamer2 index 2781e5a5d..21a3e023a 160000 --- a/submodules/mediastreamer2 +++ b/submodules/mediastreamer2 @@ -1 +1 @@ -Subproject commit 2781e5a5d3c150fa277765bea00ea60e61dd76c4 +Subproject commit 21a3e023adef4fe2568340af28cd3487e268ba2e