Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

[Released] Cross Platform Replay Kit : Record "Every Play" on iOS & Android [Now VUFORIA Compatible]

Discussion in 'Assets and Asset Store' started by Voxel-Busters, Jan 19, 2019.

  1. DazzleEye

    DazzleEye

    Joined:
    Dec 29, 2016
    Posts:
    1
    Error Log

    12-26 01:15:31.483 2137-2137/? I/art: Late-enabling -Xcheck:jni
    12-26 01:15:31.483 2137-2137/? I/art: Late-enabling JIT
    12-26 01:15:31.483 2137-2137/? D/libnb: enter native_bridge2_initialize /data/user/0/net.dazzleeye.fairytales/code_cache arm
    12-26 01:15:31.502 2137-2137/? D/houdini: [2137] Initialize library(version: 6.1.2d_x.48748 RELEASE)... successfully.
    12-26 01:15:31.532 2137-2137/? W/art: Unexpected CPU variant for X86 using defaults: x86
    12-26 01:15:31.532 2137-2137/? I/art: JIT created with code_cache_capacity=2MB compile_threshold=1000
    12-26 01:15:31.542 2137-2137/? I/Zygote: fake Product info net.dazzleeye.fairytales not matched any pattern
    12-26 01:15:31.748 2137-2137/net.dazzleeye.fairytales I/art: Rejecting re-init on previously-failed class java.lang.Class<com.voxelbusters.replaykit.extensions.FileProviderExtended>
    12-26 01:15:31.748 2137-2137/net.dazzleeye.fairytales D/AndroidRuntime: Shutting down VM


    --------- beginning of crash
    12-26 01:15:31.763 2137-2137/net.dazzleeye.fairytales E/AndroidRuntime: FATAL EXCEPTION: main
    Process: net.dazzleeye.fairytales, PID: 2137
    java.lang.RuntimeException: Unable to get provider com.voxelbusters.replaykit.extensions.FileProviderExtended: java.lang.ClassNotFoundException: Didn't find class "com.voxelbusters.replaykit.extensions.FileProviderExtended" on path: DexPathList[[zip file "/data/app/net.dazzleeye.fairytales-2/base.apk"],nativeLibraryDirectories=[/data/app/net.dazzleeye.fairytales-2/lib/x86, /data/app/net.dazzleeye.fairytales-2/base.apk!/lib/x86, /vendor/lib, /system/lib]]
    at android.app.ActivityThread.installProvider(ActivityThread.java:5278)
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:4836)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4760)
    at android.app.ActivityThread.-wrap1(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1414)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5539)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:745)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635)
    Caused by: java.lang.ClassNotFoundException: Didn't find class "com.voxelbusters.replaykit.extensions.FileProviderExtended" on path: DexPathList[[zip file "/data/app/net.dazzleeye.fairytales-2/base.apk"],nativeLibraryDirectories=[/data/app/net.dazzleeye.fairytales-2/lib/x86, /data/app/net.dazzleeye.fairytales-2/base.apk!/lib/x86, /vendor/lib, /system/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
    at android.app.ActivityThread.installProvider(ActivityThread.java:5263)
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:4836)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4760)
    at android.app.ActivityThread.-wrap1(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1414)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5539)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:745)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635)
    Suppressed: java.lang.NoClassDefFoundError: com.voxelbusters.replaykit.extensions.FileProviderExtended
    at dalvik.system.DexFile.defineClassNative(Native Method)
    at dalvik.system.DexFile.defineClass(DexFile.java:226)
    at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:219)
    at dalvik.system.DexPathList.findClass(DexPathList.java:338)
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54)
    ... 13 more
    Suppressed: java.lang.ClassNotFoundException: com.voxelbusters.replaykit.extensions.FileProviderExtended
    at java.lang.Class.classForName(Native Method)
    at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
    at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
    ... 12 more
    Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
    12-26 01:15:31.879 2137-2137/? I/Process: Sending signal. PID: 2137 SIG: 9


    Gradle

    // GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN

    buildscript {
    repositories {
    mavenCentral()
    google()
    jcenter()
    }

    dependencies {
    classpath 'com.android.tools.build:gradle:3.4.0'
    }
    }

    allprojects {
    repositories {
    mavenCentral()
    google()
    jcenter()
    flatDir {
    dirs 'libs'
    }
    }
    }

    apply plugin: 'com.android.application'


    dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation(name: 'VuforiaWrapper', ext:'aar')
    implementation project(':ShareRec')
    implementation project(':ShareSDK')
    implementation project(':com.voxelbusters.replaykit.androidlib')
    implementation project(':unity-android-resources')
    compile 'com.android.support:multidex:1.0.3'
    }

    android {
    compileSdkVersion 30
    buildToolsVersion '29.0.2'

    compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
    multiDexEnabled true
    minSdkVersion 22
    targetSdkVersion 30
    applicationId 'net.dazzleeye.fairytales'
    ndk {
    abiFilters 'armeabi-v7a', 'x86'
    }
    versionCode 1
    versionName '1.0.0'
    }

    lintOptions {
    abortOnError false
    }

    aaptOptions {
    noCompress = ['.unity3d', '.ress', '.resource', '.obb', 'defaultresources.zip', 'vuforia/fairytales.dat', 'vuforia/fairytales.xml']
    }

    signingConfigs {
    release {

    }
    }

    buildTypes {
    debug {
    minifyEnabled false
    useProguard false
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'
    jniDebuggable true
    }
    release {
    minifyEnabled false
    useProguard false
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'
    signingConfig signingConfigs.release
    }
    }

    packagingOptions {
    doNotStrip '*/armeabi-v7a/*.so'
    doNotStrip '*/x86/*.so'
    }

    bundle {
    language {
    enableSplit = false
    }
    density {
    enableSplit = false
    }
    abi {
    enableSplit = true
    }
    }
    }
     
  2. Voxel-Busters

    Voxel-Busters

    Joined:
    Feb 25, 2015
    Posts:
    1,952
    Please do a force resolve from Top menu bar => Assets => External Dependency Manager => Android => Force Resolve

    Please ping us on discord incase if you need further help or you still face any issues.

    Thanks,
    VB Team
     
  3. makaka-org

    makaka-org

    Joined:
    Dec 1, 2013
    Posts:
    1,003
    Your asset is used in my project now to record screen + mic simultaneously, because it's the only solution on market (at least for Android to avoid Google Play Services watermark): AR Masker app.

     
    Voxel-Busters likes this.
  4. Voxel-Busters

    Voxel-Busters

    Joined:
    Feb 25, 2015
    Posts:
    1,952
    @makaka-org Thanks a lot for sharing :)
     
    makaka-org likes this.
  5. VarietyARLabs

    VarietyARLabs

    Joined:
    Aug 26, 2013
    Posts:
    4
    Hi,
    while I used the plugin without problems on iOS, I crash the moment after the user confirms the permission for recording on android. Did you see the following message before?
    Working in Unity 2019.3.15. I guess it´s some kind of issue with the manifest, but I`m no native developer and got my problems on this one. As far as I can see, there is no other manifest from another plugin in the project.

    Code (CSharp):
    1. 0001/01/01 00:00:00.000 -1 -1 Info  --------- beginning of crash
    2. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime FATAL EXCEPTION: main
    3. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime Process: com.XXXXX.XXXXX, PID: 3967
    4. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime java.lang.RuntimeException: Unable to create service com.voxelbusters.replaykit.internal.ScreenRecordingService: java.lang.IllegalArgumentException: foregroundServiceType 0x00000020 is not a subset of foregroundServiceType attribute 0x00000000 in service element of manifest file
    5. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at android.app.ActivityThread.handleCreateService(ActivityThread.java:4082)
    6. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at android.app.ActivityThread.access$1800(ActivityThread.java:231)
    7. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1968)
    8. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at android.os.Handler.dispatchMessage(Handler.java:107)
    9. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at android.os.Looper.loop(Looper.java:214)
    10. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at android.app.ActivityThread.main(ActivityThread.java:7682)
    11. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at java.lang.reflect.Method.invoke(Native Method)
    12. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516)
    13. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
    14. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime Caused by: java.lang.IllegalArgumentException: foregroundServiceType 0x00000020 is not a subset of foregroundServiceType attribute 0x00000000 in service element of manifest file
    15. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at android.os.Parcel.createException(Parcel.java:2075)
    16. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at android.os.Parcel.readException(Parcel.java:2039)
    17. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at android.os.Parcel.readException(Parcel.java:1987)
    18. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at android.app.IActivityManager$Stub$Proxy.setServiceForeground(IActivityManager.java:6240)
    19. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at android.app.Service.startForeground(Service.java:742)
    20. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at com.voxelbusters.replaykit.internal.ScreenRecordingService.onCreate(ScreenRecordingService.java:74)
    21. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at android.app.ActivityThread.handleCreateService(ActivityThread.java:4070)
    22. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     ... 8 more
    23. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime Caused by: android.os.RemoteException: Remote stack trace:
    24. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at com.android.server.am.ActiveServices.setServiceForegroundInnerLocked(ActiveServices.java:1425)
    25. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at com.android.server.am.ActiveServices.setServiceForegroundLocked(ActiveServices.java:1058)
    26. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at com.android.server.am.ActivityManagerService.setServiceForeground(ActivityManagerService.java:15185)
    27. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2833)
    28. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime     at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3015)
    29. 2021/01/22 00:57:57.098 3967 3967 Error AndroidRuntime
    30.  
    Would be great to get some pointers.
    Thanks!
     
  6. VarietyARLabs

    VarietyARLabs

    Joined:
    Aug 26, 2013
    Posts:
    4
    Ok, I solved my problem: In my case I had to update to version 1.5 but I wasn´t aware of the procedure to do so:

    Uninstall from Top menu bar Window -> Voxel Busters -> Cross Platform Replay Kit -> Uninstall
    • Delete Assets/PlayServicesResolver folder
    • Import the new update
    • Click on save in ReplayKitSettings inspector
    • [Optional] Resolve libraries from Assets -> External Dependency Manager -> Android -> Force Resolv
    • Hope this helps somebody down the line.
     
  7. makaka-org

    makaka-org

    Joined:
    Dec 1, 2013
    Posts:
    1,003
    I have "This app saves videos to your Photo Library." description of camera permission in the app, which is set by your plugin. I got rejection from Apple because of this. So your default text need to be improved.

    "
    Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage


    We noticed that your app requests the user’s consent to access the photos and camera, but doesn’t sufficiently explain the use of the photos and camera in the purpose string.

    To help users make informed decisions about how their data is used, all permission request alerts need to specify how your app will use the requested information.

    Next Steps

    Please revise the relevant purpose string in your app’s Info.plist file to specify why your app needs access to the user's photos and camera. Make sure the purpose string includes an example of how the user's data will be used.

    You can modify your app's Info.plist file using the property list editor in Xcode.

    Resources

    - See examples of helpful, informative purpose strings.
    - Review a list of relevant property list keys.
    "
     
  8. makaka-org

    makaka-org

    Joined:
    Dec 1, 2013
    Posts:
    1,003
    Approved Description is next (based on Apple examples):

    Privacy - Photo Library

    Enable AR Masker to access your camera roll to upload your Videos and save ones you've taken with the app.
     
    Voxel-Busters likes this.
  9. allan-oooh

    allan-oooh

    Joined:
    Mar 29, 2019
    Posts:
    53
    On iOS the app output and the microphone input are both captured into their own audio track. So the resultant video file contains 2 audio tracks, which creates issues for streaming playback.

    Is it possible to have the 2 audio sources mixed into a single audio track?
     
  10. simonhoglund

    simonhoglund

    Joined:
    Jul 24, 2017
    Posts:
    2
    Is it possible to check if the user has denied the permission for recording the screen? I record the screen every time the player starts a level. And if the player press no for the permission, it keeps asking for permission every time the player starts a level. This is on iOS, I havent tried on Android yet. I upgraded to 1.6 and invoke PrepareRecording when I init ReplayKit (when game launches), but it still keeps asking for permissions all the time...
     
  11. RickEllis

    RickEllis

    Joined:
    Dec 10, 2016
    Posts:
    6
    On iOS when I try to get the internal path so I can save the file locally and upload it to S3, the path always comes back null, even when ReplayKitManager.IsPreviewAvailable() reports the file is ready. What am I missing? Everything else works, it records and stores in the camera roll.

    Also, since I won't be using the mic, camera or camera roll, is there a way to eliminate the user permission request?

    Thanks
     
  12. Voxel-Busters

    Voxel-Busters

    Joined:
    Feb 25, 2015
    Posts:
    1,952
    We scheduled a test on the same as you reported on our discord forum. We will update you!
     
  13. makaka-org

    makaka-org

    Joined:
    Dec 1, 2013
    Posts:
    1,003
    Just want to report you that your plugin contains missing stuff (checked with Maintainer).

    Examples (not complete list):

    Screenshot 2022-08-12 at 15.01.28.png