For making exec file configurable you need use build variables
To define variable  in build.gradle (present inside 'app' folder ) at
 'buildTypes'  add following for both build types
          buildConfigField "String", "exec_name", "\"mycoverage.exec\""
Then access this variable in your 'MainActivity.java' using
'BuildConfig.exec_name'


To generate report using   build.gradle , add one task as below in
build.gradle (present inside 'app' folder )

task jacocoTestReport(type: JacocoReport) {
def coverageSourceDirs = [
            'src/main/java'
    ]
    group = "Reporting"
    description = "Generates Jacoco coverage reports"
    reports {
        csv.enabled false
        xml{
            enabled = true
            destination "${buildDir}/jacoco/jacoco.xml"
        }
        html{
            enabled true
            destination "${buildDir}/jacocoHtml"
        }
    }
    classDirectories = fileTree(
            dir: 'build/intermediates/classes',
            excludes: ['**/R.class',
                       '**/R$*.class',
                       '**/BuildConfig.*',
                       '**/Manifest*.*',
                       '**/*Activity*.*',
                       '**/*Fragment*.*'
            ]
    )
    sourceDirectories = files(coverageSourceDirs)
        executionData = files('coverage.exec')
}



Thanks
Abhishek






On Wed, Jan 13, 2016 at 6:14 AM, Annam, Mohan Reddy <mohan.an...@openscg.com
> wrote:

> Hi All,
>
> 1) Could you please let us know, how to add exclusions like Add below as
> Exclusions:-
>
> **/R.class,**/R$*.class,**/BuildConfig.*,**/Manifest*.*,**/*Fragment*.*,**/*Activity$*.*
> in the java class .
>
> 2) I had hot coded the device path say /mnt/sdcard/ in the jacoco source
> code and rebuild the jar and used it as jacoco default takes path as / to
> store jacoco.exec.
>
> How to pass the path as argument to android ?
>
> Thanks
> Mohan
>
>
> On Fri, Dec 18, 2015 at 12:16 AM, <abhigupta2...@gmail.com> wrote:
>
>> You can achieve code coverage of android apk using gradle and jacoco, by
>> following below steps.
>>
>> 1.Configuring JaCoCo plugin in build.gradle (present inside 'app' folder
>> ) as below
>>     apply plugin: 'jacoco'
>>     jacoco {
>>         toolVersion = "0.7.4+"
>>     }
>>  2. Enable Jacoco code coverage on the debug build in build.gradle
>> (present inside 'app' folder ) at 'buildTypes' as below
>>
>>         debug {
>>                 testCoverageEnabled true
>>                 }
>> 3. Add below line in your 'app/src/main/AndroidManifest.xml ' to access
>> sdcard for writting coverage data
>>     <uses-permission
>> android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
>> 4. Add below lines in 'MainActivity.java' at end
>>     protected void onStop()
>>     {
>>         super.onStop();
>>         if(BuildConfig.DEBUG)
>>         {
>>                 try {
>>                         Class<?> emmaRTClass =
>> Class.forName("com.vladium.emma.rt.RT");
>>                         Method dumpCoverageMethod =
>> emmaRTClass.getMethod("dumpCoverageData",coverageFile.getClass(),
>> boolean.class, boolean.class);
>>                         dumpCoverageMethod.invoke(null,
>> "/sdcard/coverage.exec", ture, false);
>>                     } catch (Exception e) {}
>>         }
>>      }
>> 5.Build debug apk.
>> 6..Install this apk in your device , and to do the test.
>> 7.After testing kill your app.
>> 8.Connect device with computer, run below command to get coverage data
>> file from device
>>           'adb pull /sdcard/coverage.exec'
>> 9.Genrate coverage report using ant(with jacoco task) or jenkings (jacoco
>> plugin) by using following:-
>>      Copy classes from "D:\coverage\app\build\intermediates\classes\debug"
>>      Copy source from "D:\coverage\app\\src\main\java"
>>      Copy exec file from "D:\coverage\mycoverage.exec"
>>      Add below as Exclusions:-
>>
>> **/R.class,**/R$*.class,**/BuildConfig.*,**/Manifest*.*,**/*Fragment*.*,**/*Activity$*.*
>>
>>
>> Thanks
>> Abhishek  Gupta
>>
>>
>> On Saturday, 17 October 2015 10:11:14 UTC+5:30, vishy  wrote:
>> > Hi guys,
>> >
>> > I am investigating code-coverage for our Android app. built with Gradle
>> and Android Studio.
>> >
>> > I need code-coverage reports in two situations: during manual tests,
>> and during automated tests built with our Appium suite.
>> >
>> > I need to get a proof-of-concept that JaCoCo can indeed do code
>> coverage in this case.
>> >
>> > Given that we need coverage for Appium and manual tests, I believe
>> offline-instrumentation with JaCoCo is what I need.
>> >
>> > I have succeeded in creating an instrumented APK.
>> > But when I run the app manually, I keep seeing errors in the logcat
>> W/System.err: java.io.FileNotFoundException: /jacoco.exec: open failed:
>> EROFS (Read-only file system)
>> >
>> > From JaCoCo docs as well as general Googling, I understand that Jacoco
>> needs to know where to store the jacoco.exec file - and that I need to
>> package a jacoco-agent.properties (containing a destfile property) with the
>> APK.
>> >
>> > I have tried putting jacoco-agent.properties in the "assets" folder of
>> my app - it was packaged into the APK properly, but did not seem to have
>> any effect (i.e Jacoco failed as usual) I tried putting it inside res - it
>> did not get packaged into the APK. I tried res/raw and hit the error about
>> a dash in the filename.
>> >
>> > I am at my wit's end, and would really appreciate help. How do I
>> package jacoco-agent.properties using my Gradle build into the APK, so that
>> JaCoCo will read it?
>>
>> --
>> You received this message because you are subscribed to a topic in the
>> Google Groups "JaCoCo and EclEmma Users" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/jacoco/vx0g_6TKY8Q/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to
>> jacoco+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/jacoco/66a5b5af-8987-46a3-9902-0b6e0c7e079c%40googlegroups.com
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "JaCoCo and EclEmma Users" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/jacoco/vx0g_6TKY8Q/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> jacoco+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/jacoco/CAP_M%3DRqmEd0eOZ3KEiGweFstWCGsd3eBUN8y_TUF2AOBQeZjdg%40mail.gmail.com
> <https://groups.google.com/d/msgid/jacoco/CAP_M%3DRqmEd0eOZ3KEiGweFstWCGsd3eBUN8y_TUF2AOBQeZjdg%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"JaCoCo and EclEmma Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jacoco+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jacoco/CAN-5WUp1OHNcoxzazWMU3EsxJSoUSEg2bjHq-%2Bstj080dZG5sQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to