Open GianpaMX opened 4 years ago
Hi @GianpaMX thanks much for reporting and for the sample project! I'm still digging into this bug - I've found the source of the problem, and am working on a proper fix.
The cause is the change to native library compression introduced in AGP 3.6 (https://developer.android.com/studio/releases/gradle-plugin#extractNativeLibs). This is resulting in the app not being able to find the native library it needs to connect to the JVMTI.
A workaround for now is to opt-out of that feature for your test APK using the android:extractNativeLibs="true"
flag in the manifest. You can do this by placing an AndroidManifest.xml file in your androidTest/ folder, and it will be used for the android test apk.
I'll keep this thread updated as we investigate a fix on the dexmaker side to make that unnecessary, but wanted to share it for now.
I wasn't able to find a solution for this, so I've opened https://issuetracker.google.com/u/1/issues/160108941 with the AGP team for this, hopefully they can provide some better guidance on a long term answer here.
Hi, I encountered similar errors while building test app on Q-AOSP with .bp
Since I'm working on AOSP, I started with including below library - Android version of dexmaker - to static :
...
static_libs: [
"mockito-target-inline",
...,
],
jni_libs: ["libdexmakerjvmtiagent", "libstaticjvmtiagent"],
...
First time my app was able to extract .so files but could not attach libraries. (returned -3, which means JNI_EVERSION)
The solution was add android:debuggable="true" option to
Workaround above doesn't work anymore.
The error is: error: existing attribute extractNativeLibs="true" conflicts with --extract-native-libs="false"
android:debuggable="true" doesn't help much as well
07-06 14:23:25.456 3535 3555 D InfraTrack: Tracking disabled due to lack of internet permissions
07-06 14:23:25.456 3535 3555 I UsageTrackerFacilitator: Usage tracking disabled
07-06 14:23:25.464 3535 3555 D TestExecutor: Adding listener androidx.test.internal.runner.listener.LogRunListener
07-06 14:23:25.465 3535 3555 D TestExecutor: Adding listener androidx.test.internal.runner.listener.InstrumentationResultPrinter
07-06 14:23:25.465 3535 3555 D TestExecutor: Adding listener androidx.test.internal.runner.listener.ActivityFinisherRunListener
07-06 14:23:25.465 3535 3555 I TestRunner: run started: 1 tests
07-06 14:23:25.466 3535 3555 I TestRunner: started: wrapperStartDownload(com.scania.service.phoneorg.tests.instrumental.PBAPClientWrapperTest)
07-06 14:23:25.529 3535 3555 W ervice.phoneor: Agent attach failed (result=1) : Unable to dlopen libstaticjvmtiagent.so: dlopen failed: library "libstaticjvmtiagent.so" not found
07-06 14:23:25.529 3535 3555 E MockMakerMultiplexer: Could not init mockmaker com.android.dx.mockito.inline.InlineStaticMockMaker
07-06 14:23:25.530 3535 3555 W ervice.phoneor: Agent attach failed (result=1) : Unable to dlopen libdexmakerjvmtiagent.so: dlopen failed: library "libdexmakerjvmtiagent.so" not found
07-06 14:23:25.532 3535 3555 E MockMakerMultiplexer: Could not init mockmaker com.android.dx.mockito.inline.InlineDexmakerMockMaker
07-06 14:23:25.532 3535 3555 E MockMakerMultiplexer: java.lang.reflect.InvocationTargetException
07-06 14:23:25.532 3535 3555 E MockMakerMultiplexer: at java.lang.reflect.Constructor.newInstance0(Native Method)
07-06 14:23:25.532 3535 3555 E MockMakerMultiplexer: at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
07-06 14:23:25.532 3535 3555 E MockMakerMultiplexer: at com.android.dx.mockito.inline.MockMakerMultiplexer.
In my case target has no libstaticjvmtiagent.so on it's disks. How do I properly install it?
Workaround above doesn't work anymore.
The error is: error: existing attribute extractNativeLibs="true" conflicts with --extract-native-libs="false"
android:debuggable="true" doesn't help much as well
this conflict can be solved by using "use_embedded_native_libs: true" but you will see another error: "Mockito could not self-attach a jvmti agent to the current VM. This feature is required for inline mocking. This error occured due to an I/O error during the creation of this agent: java.io.IOException: Initialization of libdexmakerjvmtiagent.so returned non-zero value of -3"
Hi, do we have any solution to this? I am trying to run unit tests with mockito but failing in 14 but all is fine in the lower version. Please, suggest and help I need to push some with this fix. I tried the provided but didn't work also we don't use the androidTest
Hello,
I'm having an issue when mocking a class in an App module.
Causing this error:
adb logcat
The weird thing is, it works in a Library module.
I created the following project with an app module and a library module to reproduce the issue: https://github.com/GianpaMX/MockMakerIssue
I'm running theses tests in an Android 10 device (HUAWEI ELE-L04)
This is very similar to #119 and #127
Thank you,