* [android] add jacoco test code coverage data

Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/aef6abac
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/aef6abac
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/aef6abac

Branch: refs/heads/0.16-dev
Commit: aef6abac446ec0b46877e245527fcf16736f65ef
Parents: 18d5dc5
Author: atomtong <tong_huab...@qq.com>
Authored: Thu Aug 31 15:47:34 2017 +0800
Committer: atomtong <tong_huab...@qq.com>
Committed: Thu Aug 31 15:47:34 2017 +0800

----------------------------------------------------------------------
 android/build.gradle                            |  25 ++-
 android/playground/app/build.gradle             |  50 +++++-
 android/playground/app/jacoco.gradle            | 154 +++++++++++++++++++
 .../java/com/alibaba/weex/IndexActivity.java    |   6 +-
 .../java/com/alibaba/weex/WXPageActivity.java   |   2 +-
 5 files changed, 224 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/aef6abac/android/build.gradle
----------------------------------------------------------------------
diff --git a/android/build.gradle b/android/build.gradle
index 04cbb67..b1297a9 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -2,10 +2,14 @@
 buildscript {
     repositories {
         mavenCentral()
+        maven {
+            url "http://mvnrepo.alibaba-inc.com/mvn/repository";
+        }
         jcenter()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.3'
+        classpath 'com.android.tools.build:gradle:2.3.0'
+        classpath 'com.taobao.android.gradle:mtl-plugin:2.3.1.jacoco-SNAPSHOT'
     }
 }
 
@@ -13,19 +17,30 @@ plugins {
     id "de.undercouch.download" version "3.2.0"
 }
 
-repositories {
+allprojects {
+    repositories {
         mavenCentral()
+        maven {
+            url "http://mvnrepo.alibaba-inc.com/mvn/repository";
+        }
         jcenter()
+    }
 }
 
 subprojects {
     repositories {
         mavenCentral()
+        maven {
+            url "http://mvnrepo.alibaba-inc.com/mvn/repository";
+        }
         jcenter()
     }
     buildscript {
         repositories {
             mavenCentral()
+            maven {
+                url "http://mvnrepo.alibaba-inc.com/mvn/repository";
+            }
             jcenter()
         }
         dependencies {
@@ -35,9 +50,9 @@ subprojects {
     ext {
         compileSdkVersion=25
         buildToolsVersion="25.0.3"
-        minSdkVersion=14
-        appMinSdkVersion=15
-        targetSdkVersion=25
+        minSdkVersion=21
+        appMinSdkVersion=21
+        targetSdkVersion=21
         supportLibVersion="25.3.1"
         fastjsonLibVersion="1.1.46.android"
     }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/aef6abac/android/playground/app/build.gradle
----------------------------------------------------------------------
diff --git a/android/playground/app/build.gradle 
b/android/playground/app/build.gradle
index 1da00d1..f098434 100755
--- a/android/playground/app/build.gradle
+++ b/android/playground/app/build.gradle
@@ -1,6 +1,5 @@
 apply plugin: 'com.android.application'
-apply from: '../../jacoco.gradle'
-
+apply plugin: 'com.taobao.android.jacoco'
 
 android {
     compileSdkVersion project.compileSdkVersion
@@ -44,9 +43,9 @@ android {
         main {
             jniLibs.srcDir(['libs'])
             java {
-                srcDirs = ["src/main/java", "src/main/java_zxing"];
+//                srcDirs = ["src/main/java", "src/main/java_zxing"];
+                srcDirs = ['src/main/java']
             }
-            resources.includes = [ '**/jacoco-agent.properties' ]
         }
     }
     lintOptions {
@@ -109,4 +108,47 @@ dependencies {
     compile 
'com.taobao.android.weex_inspection:urlconnection_interceptor:1.0.0'
     compile 'com.android.support.test.espresso:espresso-idling-resource:2.2.2'
     compile 'com.taobao.android:weex_inspector:0.11.0'
+}
+
+
+def coverageSourceDirs = ['../../../android/sdk/src/main/java']
+task jacocoTestReport(type: JacocoReport) {
+    group = "Reporting"
+    description = "Generate Jacoco coverage reports after running tests."
+    reports {
+        xml.enabled = true
+        html.enabled = true
+    }
+    classDirectories = fileTree(//"enter code here"
+            dir: '../../../android/sdk/build/intermediates/classes/debug',
+            excludes: ['**/R*.class',
+                       '**/*$InjectAdapter.class',
+                       '**/*$ViewInjector*.class',
+                       '**/*$BuildConfig.*',
+                       '**/R.class',
+                       '**/*$ViewInjector*.*',
+                       '**/*$ViewBinder*.*',
+                       '**/*MembersInjector*.*',
+                       '**/BuildConfig.*',
+                       '**/Manifest*.*',
+                       '**/*$Lambda$*.class',
+                       '**/*Factory*.class',
+                       '**/*$Builder*',
+                       '**/*DaggerApplicationComponent*.class',
+                       '**/api'
+            ])
+    sourceDirectories = files(coverageSourceDirs)
+    File configFile = 
file('../../../android/sdk/build/intermediates/classes/debug')
+
+    configFile = file(configFile.absolutePath)
+    println configFile.path
+
+    executionData = files("$buildDir/outputs/coverage.ec")
+    doFirst {
+        new 
File("../../../android/sdk/build/intermediates/classes/").eachFileRecurse { 
file ->
+            if (file.name.contains('$$')) {
+                file.renameTo(file.path.replace('$$', '$'))
+            }
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/aef6abac/android/playground/app/jacoco.gradle
----------------------------------------------------------------------
diff --git a/android/playground/app/jacoco.gradle 
b/android/playground/app/jacoco.gradle
new file mode 100644
index 0000000..f098434
--- /dev/null
+++ b/android/playground/app/jacoco.gradle
@@ -0,0 +1,154 @@
+apply plugin: 'com.android.application'
+apply plugin: 'com.taobao.android.jacoco'
+
+android {
+    compileSdkVersion project.compileSdkVersion
+    buildToolsVersion project.buildToolsVersion
+
+    defaultConfig {
+        applicationId "com.alibaba.weex"
+        minSdkVersion project.appMinSdkVersion
+        targetSdkVersion project.targetSdkVersion
+        versionCode 13
+        versionName "0.5.2.5"
+        testInstrumentationRunner 
"android.support.test.runner.AndroidJUnitRunner"
+        ndk{
+            abiFilters "x86"
+            abiFilters "armeabi"
+        }
+    }
+    applicationVariants.all { variant ->
+        variant.outputs.each { output ->
+            def outputFile = output.outputFile
+            if (outputFile != null && outputFile.name.equals('app-debug.apk')) 
{
+                def fileName = outputFile.name.replace("app-debug.apk", 
"playground.apk")
+                output.outputFile = new File(outputFile.parent, fileName)
+            }
+        }
+    }
+    signingConfigs {
+        debug {
+            storeFile file("tools/weex.jks")
+            storePassword "123456"
+            keyAlias "weex"
+            keyPassword "123456"
+        }
+    }
+    buildTypes {
+        debug {
+            testCoverageEnabled true
+        }
+    }
+    sourceSets {
+        main {
+            jniLibs.srcDir(['libs'])
+            java {
+//                srcDirs = ["src/main/java", "src/main/java_zxing"];
+                srcDirs = ['src/main/java']
+            }
+        }
+    }
+    lintOptions {
+        abortOnError false
+    }
+
+    packagingOptions {
+        exclude 'LICENSE.txt'
+    }
+    testOptions {
+        reportDir = "$project.buildDir/test/report"
+    }
+    dexOptions {
+        preDexLibraries false
+    }
+}
+
+
+dependencies {
+    compile fileTree(include: ['*.jar'], dir: 'libs')
+    androidTestCompile 
"com.android.support:support-annotations:${project.supportLibVersion}"
+    androidTestCompile 'junit:junit:4.12'
+    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
+    
androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.2', {
+        exclude group: 'com.android.support', module: 'support-annotations'
+        exclude group: 'com.android.support', module: 'support-v4'
+        exclude group: 'com.android.support', module: 'design'
+        exclude group: 'com.android.support', module: 'appcompat-v7'
+        exclude group: 'com.android.support', module: 'recyclerview-v7'
+    })
+    androidTestCompile 'com.android.support.test:runner:0.5'
+    androidTestCompile 'com.squareup.picasso:picasso:2.5.2'
+    androidTestCompile 'org.hamcrest:hamcrest-library:1.3'
+    androidTestCompile 
'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
+    /*source dependency*/
+    compile project(':weex_sdk')
+    debugCompile project(':weex_debug')
+
+    //https://github.com/weexteam/weex-analyzer-android
+    //Weex-Analyzer provides several convenient tools such as Memory Monitor
+    // to optimize your application. It's not available by default,you can
+    // set WXAnalyzerDelegate#DEBUG==true to enable it
+    debugCompile 'com.taobao.android:weex_analyzer:0.1.0.5'
+
+    compile project(':commons')
+    compile 'com.taobao.android:dexposed:0.1.8'
+    compile 'com.loopj.android:android-async-http:1.4.9@aar'
+    compile 'com.facebook.fresco:fresco:0.12.0+'
+    compile 'com.facebook.fresco:animated-gif:0.12.0'
+
+    compile 'com.squareup.okhttp:okhttp:2.3.0'
+    compile 'com.squareup.okhttp:okhttp-ws:2.3.0'
+    compile 'com.squareup.okio:okio:1.0.1'
+    compile "com.alibaba:fastjson:${project.fastjsonLibVersion}"
+    compile "com.android.support:support-v4:${project.supportLibVersion}"
+    compile "com.android.support:appcompat-v7:${project.supportLibVersion}"
+    compile "com.android.support:design:${project.supportLibVersion}"
+    compile 
"com.android.support:support-annotations:${project.supportLibVersion}"
+    compile 'com.jakewharton.scalpel:scalpel:1.1.2'
+    compile 
'com.taobao.android.weex_inspection:urlconnection_interceptor:1.0.0'
+    compile 'com.android.support.test.espresso:espresso-idling-resource:2.2.2'
+    compile 'com.taobao.android:weex_inspector:0.11.0'
+}
+
+
+def coverageSourceDirs = ['../../../android/sdk/src/main/java']
+task jacocoTestReport(type: JacocoReport) {
+    group = "Reporting"
+    description = "Generate Jacoco coverage reports after running tests."
+    reports {
+        xml.enabled = true
+        html.enabled = true
+    }
+    classDirectories = fileTree(//"enter code here"
+            dir: '../../../android/sdk/build/intermediates/classes/debug',
+            excludes: ['**/R*.class',
+                       '**/*$InjectAdapter.class',
+                       '**/*$ViewInjector*.class',
+                       '**/*$BuildConfig.*',
+                       '**/R.class',
+                       '**/*$ViewInjector*.*',
+                       '**/*$ViewBinder*.*',
+                       '**/*MembersInjector*.*',
+                       '**/BuildConfig.*',
+                       '**/Manifest*.*',
+                       '**/*$Lambda$*.class',
+                       '**/*Factory*.class',
+                       '**/*$Builder*',
+                       '**/*DaggerApplicationComponent*.class',
+                       '**/api'
+            ])
+    sourceDirectories = files(coverageSourceDirs)
+    File configFile = 
file('../../../android/sdk/build/intermediates/classes/debug')
+
+    configFile = file(configFile.absolutePath)
+    println configFile.path
+
+    executionData = files("$buildDir/outputs/coverage.ec")
+    doFirst {
+        new 
File("../../../android/sdk/build/intermediates/classes/").eachFileRecurse { 
file ->
+            if (file.name.contains('$$')) {
+                file.renameTo(file.path.replace('$$', '$'))
+            }
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/aef6abac/android/playground/app/src/main/java/com/alibaba/weex/IndexActivity.java
----------------------------------------------------------------------
diff --git 
a/android/playground/app/src/main/java/com/alibaba/weex/IndexActivity.java 
b/android/playground/app/src/main/java/com/alibaba/weex/IndexActivity.java
index 866733a..ab26512 100644
--- a/android/playground/app/src/main/java/com/alibaba/weex/IndexActivity.java
+++ b/android/playground/app/src/main/java/com/alibaba/weex/IndexActivity.java
@@ -40,7 +40,7 @@ import android.widget.TextView;
 import android.widget.Toast;
 
 import com.alibaba.weex.commons.AbstractWeexActivity;
-import com.google.zxing.client.android.CaptureActivity;
+//import com.google.zxing.client.android.CaptureActivity;
 import com.taobao.weex.WXRenderErrorCode;
 import com.taobao.weex.WXSDKEngine;
 import com.taobao.weex.WXSDKInstance;
@@ -145,7 +145,7 @@ public class IndexActivity extends AbstractWeexActivity {
             ActivityCompat.requestPermissions(this, new 
String[]{Manifest.permission.CAMERA}, CAMERA_PERMISSION_REQUEST_CODE);
           }
         } else {
-          startActivity(new Intent(this, CaptureActivity.class));
+//          startActivity(new Intent(this, CaptureActivity.class));
         }
         break;
       default:
@@ -159,7 +159,7 @@ public class IndexActivity extends AbstractWeexActivity {
   public void onRequestPermissionsResult(int requestCode, String[] 
permissions, int[] grantResults) {
     super.onRequestPermissionsResult(requestCode, permissions, grantResults);
     if (requestCode == CAMERA_PERMISSION_REQUEST_CODE && grantResults.length > 
0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-      startActivity(new Intent(this, CaptureActivity.class));
+//      startActivity(new Intent(this, CaptureActivity.class));
     } else if (requestCode == WRITE_EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE 
&& grantResults.length > 0 && grantResults[0] == 
PackageManager.PERMISSION_GRANTED) {
     } else {
       Toast.makeText(this, "request camara permission fail!", 
Toast.LENGTH_SHORT).show();

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/aef6abac/android/playground/app/src/main/java/com/alibaba/weex/WXPageActivity.java
----------------------------------------------------------------------
diff --git 
a/android/playground/app/src/main/java/com/alibaba/weex/WXPageActivity.java 
b/android/playground/app/src/main/java/com/alibaba/weex/WXPageActivity.java
index dd303b5..e1a3b83 100644
--- a/android/playground/app/src/main/java/com/alibaba/weex/WXPageActivity.java
+++ b/android/playground/app/src/main/java/com/alibaba/weex/WXPageActivity.java
@@ -321,7 +321,7 @@ public class WXPageActivity extends WXBaseActivity 
implements IWXRenderListener,
   protected void onDestroy() {
     super.onDestroy();
        //jacoco code coverage
-       JacocoCodeCoverage.dumpCodeCoverageByJacoco(getApplicationContext());
+//     JacocoCodeCoverage.dumpCodeCoverageByJacoco(getApplicationContext());
 
     if (mInstance != null) {
       mInstance.onActivityDestroy();

Reply via email to