From db6a08d8caef8818032a89725340419f258d09ea Mon Sep 17 00:00:00 2001 From: Leith Bade Date: Fri, 18 Sep 2015 09:43:15 +1000 Subject: [PATCH] Add Crashlytics NDK to Android Closes #2107 --- Makefile | 2 +- android/java/.gitignore | 6 +++++ .../MapboxGLAndroidSDKTestApp/build.gradle | 18 +++++++++++++++ .../mapbox/mapboxgl/testapp/MainActivity.java | 3 ++- android/mapboxgl-app.gypi | 8 ++++++- scripts/android/run.sh | 22 +++++++++++-------- 6 files changed, 47 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 1a75c9759..c7099ce03 100644 --- a/Makefile +++ b/Makefile @@ -131,7 +131,7 @@ clean: clear_sqlite_cache clear_xcode_cache -rm -rf ./test/build -rm -rf ./config/*.gypi -rm -rf ./android/java/build ./android/java/MapboxGLAndroidSDK/build ./android/java/MapboxGLAndroidSDKTestApp/build - -rm -rf ./android/java/MapboxGLAndroidSDK/src/main/jniLibs ./android/java/MapboxGLAndroidSDK/src/main/assets + -rm -rf ./android/java/MapboxGLAndroidSDK/src/main/libs ./android/java/MapboxGLAndroidSDK/src/main/obj.target ./android/java/MapboxGLAndroidSDK/src/main/assets -rm -f ./android/test/features.zip distclean: clean diff --git a/android/java/.gitignore b/android/java/.gitignore index 866441810..a79fb8fae 100644 --- a/android/java/.gitignore +++ b/android/java/.gitignore @@ -10,6 +10,12 @@ build/ *.so *.apk +# JNI +MapboxGLAndroidSDK/src/main/libs/ +MapboxGLAndroidSDK/src/main/jniLibs/ +MapboxGLAndroidSDK/src/main/obj/ +MapboxGLAndroidSDK/src/main/obj.target/ + # Lib assets MapboxGLAndroidSDK/src/main/assets/ diff --git a/android/java/MapboxGLAndroidSDKTestApp/build.gradle b/android/java/MapboxGLAndroidSDKTestApp/build.gradle index 98c26912f..f71d821c2 100644 --- a/android/java/MapboxGLAndroidSDKTestApp/build.gradle +++ b/android/java/MapboxGLAndroidSDKTestApp/build.gradle @@ -80,6 +80,21 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + + splits { + abi { + enable true + reset() + include 'armeabi', 'armeabi-v7a', 'x86', 'mips' + universalApk true + } + } +} + +crashlytics { + enableNdk true + androidNdkOut '../MapboxGLAndroidSDK/src/main/obj.target' + androidNdkLibsOut '../MapboxGLAndroidSDK/src/main/obj.target' } dependencies { @@ -93,6 +108,9 @@ dependencies { compile('com.crashlytics.sdk.android:crashlytics:2.5.1@aar') { transitive = true; } + compile('com.crashlytics.sdk.android:crashlytics-ndk:1.1.1@aar') { + transitive = true; + } // Testing dependencies testCompile 'junit:junit:4.12' diff --git a/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxgl/testapp/MainActivity.java b/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxgl/testapp/MainActivity.java index 2f9b374e2..3f14ab557 100644 --- a/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxgl/testapp/MainActivity.java +++ b/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxgl/testapp/MainActivity.java @@ -25,6 +25,7 @@ import android.view.View; import android.widget.TextView; import android.widget.Toast; import com.crashlytics.android.Crashlytics; +import com.crashlytics.android.ndk.CrashlyticsNdk; import com.mapbox.mapboxgl.annotations.Marker; import com.mapbox.mapboxgl.annotations.MarkerOptions; import com.mapbox.mapboxgl.annotations.PolygonOptions; @@ -78,7 +79,7 @@ public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - Fabric.with(this, new Crashlytics()); + Fabric.with(this, new Crashlytics(), new CrashlyticsNdk()); // Load the layout setContentView(R.layout.activity_main); diff --git a/android/mapboxgl-app.gypi b/android/mapboxgl-app.gypi index e3db1269d..5731d21f8 100644 --- a/android/mapboxgl-app.gypi +++ b/android/mapboxgl-app.gypi @@ -74,13 +74,19 @@ ], 'destination': '<(pwd)/../android/java/MapboxGLAndroidSDK/src/main/assets' }, + { + 'files': [ + '<(PRODUCT_DIR)/obj.target' + ], + 'destination': '<(pwd)/../android/java/MapboxGLAndroidSDK/src/main' + }, ], 'actions': [ { 'action_name': 'Strip dynamic library', 'inputs': [ '<(PRODUCT_DIR)/lib.target/libmapbox-gl.so' ], - 'outputs': [ '<(pwd)/../android/java/MapboxGLAndroidSDK/src/main/jniLibs/$(JNIDIR)/libmapbox-gl.so' ], + 'outputs': [ '<(pwd)/../android/java/MapboxGLAndroidSDK/src/main/libs/$(JNIDIR)/libmapbox-gl.so' ], 'action': [ '$(STRIP)', '<@(_inputs)', '-o', '<@(_outputs)' ] }, ], diff --git a/scripts/android/run.sh b/scripts/android/run.sh index 2ef0c40c9..73ffc4c5c 100755 --- a/scripts/android/run.sh +++ b/scripts/android/run.sh @@ -39,16 +39,20 @@ if [ ! -z "${AWS_ACCESS_KEY_ID}" ] && [ ! -z "${AWS_SECRET_ACCESS_KEY}" ] ; then S3_PREFIX=s3://mapbox/mapbox-gl-native/android/build/${TRAVIS_JOB_NUMBER} APK_OUTPUTS=./android/java/MapboxGLAndroidSDKTestApp/build/outputs/apk + JNILIB=`mason env JNIDIR` - # Upload either the debug or the release build - if [ ${BUILDTYPE} == "Debug" ] ; then - aws s3 cp \ - ${APK_OUTPUTS}/MapboxGLAndroidSDKTestApp-debug.apk \ - ${S3_PREFIX}/MapboxGLAndroidSDKTestApp-debug.apk - elif [ ${BUILDTYPE} == "Release" ] ; then - aws s3 cp \ - ${APK_OUTPUTS}/MapboxGLAndroidSDKTestApp-release-unsigned.apk \ - ${S3_PREFIX}/MapboxGLAndroidSDKTestApp-release-unsigned.apk + # ARM64 does not build APK for now + if [ ${JNIDIR} != "arm64-v8a" ] ; then + # Upload either the debug or the release build + if [ ${BUILDTYPE} == "Debug" ] ; then + aws s3 cp \ + ${APK_OUTPUTS}/MapboxGLAndroidSDKTestApp-${JNILIB}-debug.apk \ + ${S3_PREFIX}/MapboxGLAndroidSDKTestApp-debug.apk + elif [ ${BUILDTYPE} == "Release" ] ; then + aws s3 cp \ + ${APK_OUTPUTS}/MapboxGLAndroidSDKTestApp-${JNILIB}-release-unsigned.apk \ + ${S3_PREFIX}/MapboxGLAndroidSDKTestApp-release-unsigned.apk + fi fi mapbox_time_finish