Remove completely ANT

-New build for LiblinphoneSdk
-New build for LinphoneSdk
-New run for Liblinphone tester
-New run for Linphone tester
This commit is contained in:
Erwan Croze 2017-04-04 14:17:01 +02:00
parent 00914a5aaf
commit 2d5a72216e
33 changed files with 640 additions and 1494 deletions

1
.gitignore vendored
View file

@ -49,3 +49,4 @@ WORK
.d
google-services.json
gradle.properties
.*clang*

11
AndroidManifestLibrary.xml Executable file
View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="org.linphone"
xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="auto"
android:versionCode="3253"
android:versionName="3.2.5">
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="23"/>
</manifest>

View file

@ -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 <!-- Change package ! --> 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 <!-- Change package ! --> appears
4. run again the Makefile script by calling "make"

View file

@ -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

View file

@ -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
}

109
build.xml
View file

@ -1,109 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="Linphone" default="help">
<!-- The local.properties file is created and updated by the 'android' tool.
It contains the path to the SDK. It should *NOT* be checked into
Version Control Systems. -->
<property file="local.properties" />
<!-- The ant.properties file can be created by you. It is only edited by the
'android' tool to add properties to it.
This is the place to change some Ant specific build properties.
Here are some properties you may want to change/update:
source.dir
The name of the source directory. Default is 'src'.
out.dir
The name of the output directory. Default is 'bin'.
For other overridable properties, look at the beginning of the rules
files in the SDK, at tools/ant/build.xml
Properties related to the SDK location or the project target should
be updated using the 'android' tool with the 'update' action.
This file is an integral part of the build system for your
application and should be checked into Version Control Systems.
-->
<property file="default.properties" />
<property file="ant.properties" />
<property file="ant_password.properties" />
<!-- if sdk.dir was not set from one of the property file, then
get it from the ANDROID_HOME env var.
This must be done before we load project.properties since
the proguard config can use sdk.dir -->
<property environment="env" />
<condition property="sdk.dir" value="${env.ANDROID_HOME}">
<isset property="env.ANDROID_HOME" />
</condition>
<!-- The project.properties file is created and updated by the 'android'
tool, as well as ADT.
This contains project specific properties such as project target, and library
dependencies. Lower level build properties are stored in ant.properties
(or in .classpath for Eclipse projects).
This file is an integral part of the build system for your
application and should be checked into Version Control Systems. -->
<loadproperties srcFile="project.properties" />
<!-- quick check on sdk.dir -->
<fail
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
unless="sdk.dir"
/>
<!--
Import per project custom build rules if present at the root of the project.
This is the place to put custom intermediary targets such as:
-pre-build
-pre-compile
-post-compile (This is typically used for code obfuscation.
Compiled code location: ${out.classes.absolute.dir}
If this is not done in place, override ${out.dex.input.absolute.dir})
-post-package
-post-build
-pre-clean
-->
<import file="custom_rules.xml" optional="true" />
<!-- Import the actual build file.
To customize existing targets, there are two options:
- Customize only one target:
- copy/paste the target into this file, *before* the
<import> task.
- customize it to your needs.
- Customize the whole content of build.xml
- copy/paste the content of the rules files (minus the top node)
into this file, replacing the <import> task.
- customize to your needs.
***********************
****** IMPORTANT ******
***********************
In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
in order to avoid having your file be overridden by tools such as "android update project"
-->
<path id="android.antlibs">
<pathelement path="${sdk.dir}/tools/lib/ant-tasks.jar" />
</path>
<!-- Custom tasks -->
<taskdef resource="anttasks.properties" classpathref="android.antlibs" />
<property name="exe" value="" />
<property name="bat" value="" />
<getbuildtools name="android.build.tools.dir" verbose="${verbose}" />
<property name="aidl" location="${android.build.tools.dir}/aidl${exe}" />
<property name="aapt" location="${android.build.tools.dir}/aapt${exe}" />
<property name="dx" location="${android.build.tools.dir}/dx${bat}" />
<property name="zipalign" location="${android.build.tools.dir}/zipalign${exe}" />
<!-- version-tag: custom -->
<import file="${sdk.dir}/tools/ant/build.xml" />
</project>

View file

@ -1,110 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="custom_rules">
<property name="linphone.package.name" value="org.linphone" />
<target name="-pre-build" description="Move file that is not to be compiled.">
<copy file="submodules/linphone/share/xml/lpconfig.xsd"
tofile="res/raw/lpconfig.xsd"
failonerror="false" />
</target>
<target name="partial-clean">
<delete file="bin/${ant.project.name}.ap_" />
</target>
<target name="javadoc">
<echo level="info">Generate Javadoc</echo>
<javadoc
destdir="${javadoc.dir}"
verbose="off"
use="true"
classpath="${sdk.dir}/platforms/${target}/android.jar:libs/android-support-v4.jar:libs/gcm.jar"
sourcepath="${source.dir}:gen"
linkoffline="http://developer.android.com/reference file:/${sdk.dir}/docs/reference"
stylesheetfile="${sdk.dir}/docs/assets/android-developer-docs.css">
</javadoc>
</target>
<target name="-package-resources" depends="-crunch">
<!-- only package resources if *not* a library project -->
<do-only-if-not-library elseText="Library project: do not package resources...">
<exec executable="${aapt}" failonerror="true">
<arg value="package" />
<arg value="-f" />
<arg value="-v" />
<arg value="--version-code" />
<arg value="${version.code}" />
<arg value="--version-name" />
<arg value="${version.name}" />
<arg value="--debug-mode" />
<arg value="-m" />
<arg value="-u" />
<arg value="-J" />
<arg path="${gen.absolute.dir}" />
<arg value="-M" />
<arg path="${out.manifest.abs.file}" />
<arg value="-I" />
<arg path="${project.target.android.jar}" />
<arg value="-F" />
<arg path="${out.absolute.dir}/${resource.package.file.name}" />
<arg value="-S" />
<arg path="${resource.absolute.dir}" />
<arg value="--rename-manifest-package" />
<arg value="${linphone.package.name}" />
<arg value="--custom-package" />
<arg value="${linphone.package.name}" />
</exec>
</do-only-if-not-library>
</target>
<target name="run">
<exec executable="adb">
<arg value="shell" />
<arg value="am" />
<arg value="start" />
<arg value="-a" />
<arg value="android.intent.action.MAIN" />
<arg value="-n" />
<arg value="${linphone.package.name}/org.linphone.LinphoneLauncherActivity" />
</exec>
</target>
<target name="liblinphone-android-sdk">
<echo level="info">Creating library output jar file...</echo>
<property name="out.library.jar.file" location="${out.absolute.dir}/liblinphone.jar" />
<jar destfile="${out.library.jar.file}">
<fileset dir="bin/intermediates/classes/debug"
includes="org/linphone/mediastream/**/*.class org/linphone/core/**/*.class org/linphone/tools/**/*.class"/>
<fileset dir="submodules/linphone/java" >
<include name="common/org/linphone/core/*.java"/>
<include name="j2se/org/linphone/core/*.java"/>
</fileset>
</jar>
<zip destfile="liblinphone-android-sdk-${version.name}.zip">
<zipfileset dir="libs" prefix="libs" includes="**/*.so" />
<zipfileset dir="${out.absolute.dir}" includes="liblinphone.jar" prefix="libs"/>
<zipfileset dir="libs-debug" prefix="libs-debug" includes="**/*.so" />
<zipfileset dir="${out.absolute.dir}" includes="liblinphone.jar" prefix="libs-debug"/>
</zip>
</target>
<target name="linphone-android-sdk">
<echo level="info">Creating library output jar file...</echo>
<property name="out.library.jar.file" location="${out.absolute.dir}/linphone.jar" />
<jar destfile="${out.library.jar.file}">
<fileset dir="bin/intermediates/classes/debug"
includes="org/linphone/mediastream/**/*.class org/linphone/core/**/*.class org/linphone/**/*.class org/linphone/tools/**/*.class"/>
<fileset dir="submodules/linphone/java" >
<include name="common/org/linphone/core/*.java"/>
<include name="j2se/org/linphone/core/*.java"/>
</fileset>
</jar>
<zip destfile="linphone-android-sdk-${version.name}.zip">
<zipfileset dir="libs" prefix="libs" includes="**/*.so" />
<zipfileset dir="${out.absolute.dir}" includes="linphone.jar" prefix="libs"/>
<zipfileset dir="libs-debug" prefix="libs-debug" includes="**/*.so" />
<zipfileset dir="${out.absolute.dir}" includes="linphone.jar" prefix="libs-debug"/>
</zip>
</target>
</project>

View file

@ -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
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="gen"/>
<classpathentry excluding="org/linphone/mediastream/MediastreamerActivity.java" kind="src" path="submodules/linphone/mediastreamer2/java/src"/>
<classpathentry kind="src" path="submodules/linphone/java/j2se"/>
<classpathentry kind="src" path="submodules/linphone/java/common"/>
<classpathentry kind="src" path="submodules/linphone/java/impl"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry exported="true" kind="lib" path="libs/aXMLRPC.jar"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry kind="lib" path="libs/android-support-v4.jar"/>
<classpathentry kind="lib" path="libs/gcm.jar"/>
<classpathentry kind="output" path="bin/classes"/>
</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
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.linphone" android:versionCode="1" android:versionName="1.0">
<uses-sdk android:minSdkVersion="4"/>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"></uses-permission>
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
<uses-permission android:name="android.permission.BOOT_COMPLETED"></uses-permission>
<uses-permission android:name="android.permission.VIBRATE"></uses-permission>
<uses-permission android:name="android.permission.CAMERA" />
<supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:anyDensity="true"/>
<application>
<activity android:name="org.linphone.TestConferenceActivity"
android:label="Conf test"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="org.linphone.core.tutorials.TutorialHelloWorldActivity"
android:label="Hello World"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="org.linphone.core.tutorials.TutorialRegistrationActivity"
android:label="Registration"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="org.linphone.core.tutorials.TutorialBuddyStatusActivity"
android:label="Buddy status"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="org.linphone.core.tutorials.TutorialChatRoomActivity"
android:label="Chat Room"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="org.mediastreamer2.test.Ring"
android:label="Ring+Echo"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
EOF
cat > $D/default.properties <<EOF
target=`android list target -c | grep android | tail -n1`
EOF
mkdir -p $D/.settings
cat > $D/.settings/org.eclipse.jdt.core.prefs <<EOF
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.5
EOF
}
DBASE="liblinphone-android-sdk"
D="../$DBASE"
rm -rf $D.zip $D
copy submodules/linphone/coreapi/help/java $D
copy libs $D
copy submodules/linphone/java/j2se $D
copy submodules/linphone/java/common $D
copy submodules/linphone/java/impl $D
copy submodules/linphone/mediastreamer2/java/src $D
androidize $D
echo "Creating zip $D"
(
cd ..
zip -rq liblinphone-android-sdk.zip $DBASE
rm -rf $DBASE
)
DBASE="liblinphone-android-javadoc"
D="../$DBASE.zip"
if grep -r "javadoc.dir" local.properties
then
echo "javadoc.dir already defined"
else
echo "javadoc.dir=$DBASE" >> local.properties
fi
echo "Generating javadoc to $D"
ant javadoc
rm -rf $D
zip -rq $D $DBASE
rm -rf $DBASE

View file

@ -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

View file

@ -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

View file

@ -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
}

View file

@ -20,7 +20,6 @@
<application
android:allowBackup="true"
android:debuggable="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >

View file

@ -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;

View file

@ -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

View file

@ -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 {

View file

@ -1,92 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="liblinphone_tester" default="help">
<!-- The local.properties file is created and updated by the 'android' tool.
It contains the path to the SDK. It should *NOT* be checked into
Version Control Systems. -->
<property file="local.properties" />
<!-- The ant.properties file can be created by you. It is only edited by the
'android' tool to add properties to it.
This is the place to change some Ant specific build properties.
Here are some properties you may want to change/update:
source.dir
The name of the source directory. Default is 'src'.
out.dir
The name of the output directory. Default is 'bin'.
For other overridable properties, look at the beginning of the rules
files in the SDK, at tools/ant/build.xml
Properties related to the SDK location or the project target should
be updated using the 'android' tool with the 'update' action.
This file is an integral part of the build system for your
application and should be checked into Version Control Systems.
-->
<property file="ant.properties" />
<!-- if sdk.dir was not set from one of the property file, then
get it from the ANDROID_HOME env var.
This must be done before we load project.properties since
the proguard config can use sdk.dir -->
<property environment="env" />
<condition property="sdk.dir" value="${env.ANDROID_HOME}">
<isset property="env.ANDROID_HOME" />
</condition>
<!-- The project.properties file is created and updated by the 'android'
tool, as well as ADT.
This contains project specific properties such as project target, and library
dependencies. Lower level build properties are stored in ant.properties
(or in .classpath for Eclipse projects).
This file is an integral part of the build system for your
application and should be checked into Version Control Systems. -->
<loadproperties srcFile="project.properties" />
<!-- quick check on sdk.dir -->
<fail
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
unless="sdk.dir"
/>
<!--
Import per project custom build rules if present at the root of the project.
This is the place to put custom intermediary targets such as:
-pre-build
-pre-compile
-post-compile (This is typically used for code obfuscation.
Compiled code location: ${out.classes.absolute.dir}
If this is not done in place, override ${out.dex.input.absolute.dir})
-post-package
-post-build
-pre-clean
-->
<import file="custom_rules.xml" optional="true" />
<!-- Import the actual build file.
To customize existing targets, there are two options:
- Customize only one target:
- copy/paste the target into this file, *before* the
<import> task.
- customize it to your needs.
- Customize the whole content of build.xml
- copy/paste the content of the rules files (minus the top node)
into this file, replacing the <import> task.
- customize to your needs.
***********************
****** IMPORTANT ******
***********************
In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
in order to avoid having your file be overridden by tools such as "android update project"
-->
<!-- version-tag: 1 -->
<import file="${sdk.dir}/tools/ant/build.xml" />
</project>

View file

@ -1,88 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="custom_rules" xmlns:unless="ant:unless">
<target name="run">
<exec executable="adb">
<arg value="shell" />
<arg value="am" />
<arg value="start" />
<arg value="-a" />
<arg value="android.intent.action.MAIN" />
<arg value="-n" />
<arg value="org.linphone.tester/org.linphone.tester.MainActivity" />
</exec>
</target>
<target name="test">
<property name="output.file" value="./tests.output" />
<tstamp>
<format property="archive.name" pattern="'liblinphonetester_'yyyyMMdd_HHmmss" />
</tstamp>
<echo>Adb log files are put in ${archive.name}.zip</echo>
<exec executable="adb" >
<arg value="logcat" />
<arg value="-c" />
</exec>
<exec executable="./adb-log-start.sh" >
<arg value=" ${archive.name}" />
</exec>
<exec executable="bash">
<arg value="-c"/>
<!-- use 'tee' command to write in file AND on stdout.
First is used below to check if tests failed or not while second
is used to get output in real time -->
<arg value="adb shell am instrument -r -w org.linphone.tester/org.linphone.tester.TestRunner | tee ${output.file}"/>
</exec>
<exec executable="bash" >
<arg value="-c" />
<arg value="kill `cat adb.pid`" />
</exec>
<condition property="has.crashed" >
<or>
<resourcecontains resource="${output.file}" substring="Process crashed" />
<resourcecontains resource="${output.file}" substring="Native crash" />
<resourcecontains resource="${output.file}" substring="longMsg=junit.framework.AssertionFailedError: View with id: '" />
<resourcecontains resource="${output.file}" substring="longMsg=java.lang.RuntimeException:" />
<resourcecontains resource="${output.file}" substring="longMsg=java.lang.NullPointerException:" />
<resourcecontains resource="${output.file}" substring="android.util.AndroidException: INSTRUMENTATION_FAILED:" />
</or>
</condition>
<exec executable="bash" unless:set="has.crashed">
<arg value="-c"/>
<arg value="adb shell cat /data/data/org.linphone.tester/files/junit-report.xml > liblinphone-junit-report.xml"/>
</exec>
<zip destfile="${archive.name}.zip">
<fileset dir="." includes="${archive.name}"/>
</zip>
<antcall target="check-for-crash"/>
<fail message="Tests failed" status="42">
<condition>
<resourcecontains resource="${output.file}" substring="FAILURES" />
</condition>
</fail>
<delete file="${archive.name}"/>
<delete file="${output.file}"/>
</target>
<target name="check-for-crash" if="has.crashed">
<exec executable="adb" outputproperty="arch">
<arg value="shell"/>
<arg value="getprop" />
<arg value="ro.product.cpu.abi"/>
</exec>
<exec executable="bash" outputproperty="abi">
<arg value="-c"/>
<arg value="echo ${arch} | tr -d '\r'"/>
</exec>
<exec executable="bash" >
<arg value="-c" />
<arg value="tail -n 500 ${archive.name}" />
</exec>
<exec executable="bash" >
<arg value="-c" />
<arg value="cat ${archive.name} |ndk-stack -sym ../libs-debug/${abi}" />
</exec>
<fail message="Tests crashed" status="125"/>
</target>
</project>

172
liblinphone_tester/gradlew vendored Executable file
View file

@ -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" "$@"

84
liblinphone_tester/gradlew.bat vendored Normal file
View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,3 @@
include ':libLinphoneAndroidSdk'
project(':libLinphoneAndroidSdk').projectDir = new File(rootProject.projectDir,'..')
project(':libLinphoneAndroidSdk').buildFileName = "libLinphoneAndroidSdk.gradle"

View file

@ -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());

View file

@ -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.

View file

@ -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});

View file

@ -18,12 +18,12 @@ public class Tester {
}
return false;
}
public static boolean isArmv7()
{
return System.getProperty("os.arch").contains("armv7");
}
static {
List<String> 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:

View file

@ -9,7 +9,7 @@ public class TesterList extends Tester {
super.printLog(level, message);
list.add(message);
}
public List<String> getList() {
return list;
}

View file

@ -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 <sip:linphone.android@unknown-host>";
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);

View file

@ -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 @@
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="23"/>
-
- <!-- Permissions for Push Notification -->
- <!--<uses-permission android:name="org.linphone.permission.C2D_MESSAGE"/> GCM permission--> <!-- Change package ! -->
- <!--<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/> GCM permission-->
- <uses-permission android:name="android.permission.INTERNET"/>
- <uses-permission android:name="android.permission.RECORD_AUDIO"/>
- <uses-permission android:name="android.permission.READ_CONTACTS"/>
- <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
- <uses-permission android:name="android.permission.WAKE_LOCK"/>
- <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
- <uses-permission android:name="android.permission.CALL_PHONE"/>
- <!-- Needed to allow Linphone to install on tablets, since android.permission.CALL_PHONE implies android.hardware.telephony is required -->
- <uses-feature
- android:name="android.hardware.telephony"
- android:required="false"/>
-
- <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
- <uses-permission android:name="android.permission.VIBRATE"/>
- <uses-permission android:name="android.permission.CAMERA"/>
- <!-- Needed to allow Linphone to install on tablets, since android.permission.CAMERA implies android.hardware.camera and android.hardware.camera.autofocus are required -->
- <uses-feature
- android:name="android.hardware.camera"
- android:required="false"/>
-
- <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
- <!-- Needed to store received images if the user wants to -->
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
- <!-- Needed to use our own Contact editor -->
- <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
- <!-- Needed to route the audio to the bluetooth headset if available -->
- <uses-permission android:name="android.permission.BLUETOOTH"/>
- <uses-permission android:name="android.permission.BROADCAST_STICKY"/>
- <!-- Needed to pre fill the wizard email field (only if enabled in custom settings) -->
- <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
- <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
- <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
- <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>
- <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/>
- <!-- Needed for in-app purchase -->
- <!-- <uses-permission android:name="com.android.vending.BILLING"/> -->
- <!-- Needed for overlay widget -->
- <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
-
- <supports-screens
- android:anyDensity="true"
- android:largeScreens="true"
- android:normalScreens="true"
- android:smallScreens="true"
- android:xlargeScreens="true"/>
-
- <application
- android:allowBackup="true"
- android:icon="@mipmap/ic_launcher"
- android:label="@string/app_name"
- android:largeHeap="true">
- <activity
- android:name=".LinphoneLauncherActivity"
- android:exported="true"
- android:label="@string/app_name"
- android:theme="@style/NoTitle"
- android:windowSoftInputMode="adjustPan|stateHidden">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
-
- <category android:name="android.intent.category.LAUNCHER"/>
- </intent-filter>
- <intent-filter>
- <action android:name="android.intent.action.CALL"/>
- <action android:name="android.intent.action.CALL_PRIVILEGED"/>
-
- <category android:name="android.intent.category.DEFAULT"/>
-
- <data android:scheme="tel"/>
- <data android:scheme="sip"/>
- </intent-filter>
- <intent-filter>
- <action android:name="android.intent.action.SENDTO"/>
-
- <category android:name="android.intent.category.DEFAULT"/>
-
- <data android:scheme="sip"/>
- <data android:scheme="imto"/>
- </intent-filter>
- <intent-filter>
- <data android:mimeType="@string/sync_mimetype"/> <!-- Change package in res/values/non_localizable_custom.xml ! -->
- <action android:name="android.intent.action.VIEW"/>
-
- <category android:name="android.intent.category.BROWSABLE"/>
- <category android:name="android.intent.category.DEFAULT"/>
- </intent-filter>
- </activity>
- <activity
- android:name=".LinphoneActivity"
- android:launchMode="singleTask"
- android:theme="@style/NoTitle">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- </intent-filter>
- </activity>
- <activity
- android:name=".CallIncomingActivity"
- android:launchMode="singleTop"
- android:theme="@style/NoTitle">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- </intent-filter>
- </activity>
- <activity
- android:name=".CallOutgoingActivity"
- android:launchMode="singleTop"
- android:theme="@style/NoTitle">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- </intent-filter>
- </activity>
- <activity
- android:name=".CallActivity"
- android:launchMode="singleTop"
- android:theme="@style/FullScreen">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- </intent-filter>
-
- <!--
- <intent-filter>
- <action android:name="android.intent.action.VIEW" />
- <data android:mimeType="audio/*" />
- <data android:mimeType="video/*" />
- <category android:name="android.intent.category.DEFAULT" />
- </intent-filter>
- -->
- </activity>
- <activity
- android:name=".assistant.AssistantActivity"
- android:screenOrientation="behind"
- android:theme="@style/NoTitle">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- </intent-filter>
- </activity>
- <activity
- android:name=".purchase.InAppPurchaseActivity"
- android:screenOrientation="nosensor"
- android:theme="@style/NoTitle">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- </intent-filter>
- </activity>
- <activity
- android:name=".assistant.RemoteProvisioningLoginActivity"
- android:screenOrientation="nosensor"
- android:theme="@style/NoTitle">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- </intent-filter>
- </activity>
- <activity
- android:name=".assistant.RemoteProvisioningActivity"
- android:screenOrientation="nosensor"
- android:theme="@style/NoTitle">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- </intent-filter>
- <intent-filter>
- <data android:scheme="linphone-config"/> <!-- Change if needed -->
- <action android:name="android.intent.action.VIEW"/>
-
- <category android:name="android.intent.category.BROWSABLE"/>
- <category android:name="android.intent.category.DEFAULT"/>
- </intent-filter>
- </activity>
-
- <service
- android:name=".LinphoneService"
- android:label="@string/service_name"
- android:stopWithTask="false"/>
- <service
- android:name=".sync.SyncService"
- android:exported="true">
- <intent-filter>
- <action android:name="android.content.SyncAdapter"/>
- </intent-filter>
-
- <meta-data
- android:name="android.content.SyncAdapter"
- android:resource="@xml/syncadapter"/>
- <meta-data
- android:name="android.provider.CONTACTS_STRUCTURE"
- android:resource="@xml/contacts"/>
- </service>
- <service android:name=".sync.AuthenticationService">
- <intent-filter>
- <action android:name="android.accounts.AccountAuthenticator"/>
- </intent-filter>
-
- <meta-data
- android:name="android.accounts.AccountAuthenticator"
- android:resource="@xml/authenticator"/>
- </service>
-
- <receiver android:name=".NetworkManager">
- <intent-filter>
- <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
- </intent-filter>
- </receiver>
- <receiver
- android:name=".BluetoothManager"
- android:enabled="false">
- </receiver>
- <receiver android:name=".BootReceiver">
- <intent-filter>
- <action android:name="android.intent.action.BOOT_COMPLETED"/>
- </intent-filter>
- <intent-filter>
- <action android:name="android.intent.action.ACTION_SHUTDOWN"/>
- </intent-filter>
- </receiver>
- <receiver android:name=".PhoneStateChangedReceiver">
- <intent-filter>
- <action android:name="android.intent.action.PHONE_STATE"/>
- </intent-filter>
- </receiver>
-
- <!-- This one needs to be registered from application -->
- <receiver android:name=".KeepAliveReceiver"/>
-
- <!-- Needed for push notification -->
- <!--<receiver
- android:name=".gcm.GCMReceiver"
- android:permission="com.google.android.c2dm.permission.SEND">
- <intent-filter>
- <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
- <action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
-
- <category android:name="org.linphone"/>--> <!-- Change package ! -->
- <!--</intent-filter>
- </receiver>
-
- <service android:name=".gcm.GCMService"/>-->
-
- <receiver
- android:name=".AccountEnableReceiver"
- android:permission="android.permission.CONFIGURE_SIP">
- <intent-filter>
- <action android:name="org.linphone.intent.ACCOUNTACTIVATE"/>
- </intent-filter>
- </receiver>
-
- <service android:name=".firebase.FirebaseIdService">
- <intent-filter>
- <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
- </intent-filter>
- </service>
-
- <service
- android:name=".firebase.FirebaseMessaging">
- <intent-filter>
- <action android:name="com.google.firebase.MESSAGING_EVENT"/>
- </intent-filter>
- </service>
-
- <activity
- android:name=".tutorials.TutorialLauncherActivity"
- android:theme="@style/NoTitle">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- </intent-filter>
- </activity>
- <activity
- android:name=".tutorials.TutorialBuddyStatusActivity"
- android:theme="@style/NoTitle">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- </intent-filter>
- </activity>
- <activity
- android:name=".tutorials.TutorialChatRoomActivity"
- android:theme="@style/NoTitle">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- </intent-filter>
- </activity>
- <activity
- android:name=".tutorials.TutorialHelloWorldActivity"
- android:theme="@style/NoTitle">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- </intent-filter>
- </activity>
- <activity
- android:name=".tutorials.TutorialRegistrationActivity"
- android:theme="@style/NoTitle">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- </intent-filter>
- </activity>
- <activity
- android:name=".tutorials.TutorialCardDavSync"
- android:theme="@style/NoTitle">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- </intent-filter>
- </activity>
- <activity android:name=".LinphoneGenericActivity">
- </activity>
- </application>
-
</manifest>
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
}
}

126
linphoneAndroidSdk.gradle Normal file
View file

@ -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
}

View file

@ -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|<property name="linphone.package.name" value="(.*)" />|\\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 && \\

@ -1 +1 @@
Subproject commit 2781e5a5d3c150fa277765bea00ea60e61dd76c4
Subproject commit 21a3e023adef4fe2568340af28cd3487e268ba2e