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

Introducing Unibill - the cross platform In App purchase plugin!

Discussion in 'Assets and Asset Store' started by Banderous, Jan 16, 2013.

  1. Saxi

    Saxi

    Joined:
    Jun 28, 2013
    Posts:
    381
    Any possibility of cleaning up your folder structure so it doesn't sprawl all over the place? When you start using ad plugins from say Prime31 and analytics, the plugin folder is a mess, and hard to tell what belongs to what. Why is it not Asset\Plugins\Unibill with everything under there?
     
    sevensails likes this.
  2. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @Saxi it's only recently been possible to organise a plugin in such a way. Reorganising Unibill now would break upgrades for enormous numbers of users since there's no way to delete or move files when doing so.

    Unity need to make a modern package manager that separates dependencies from your own code.
     
  3. Saxi

    Saxi

    Joined:
    Jun 28, 2013
    Posts:
    381
    A lot of assets mention certain updates require removal of all files prior to updating. Right now Unibill sprawls all over the project and is extremely confusing what files belong to which asset when you start adding in analytics, admob, and other assets that have very similar files. In fact, some popular assets like nGUI recommend you do it every update (open blank scene, remove all asset files, import new asset).

    With Prime31 Admob, Chartboost, Flurry, and a few others it has become nearly impossible to figure out what is going on when updating. Unibill is the worst offender as it is sprawled in many more folders than anything else. There is also a bug/feature in Unity on Windows that if you import an asset over (to update it) it will create copies with appended _1 at the end. Which makes it even more confusing.

    For example:

     
  4. yuriythebest

    yuriythebest

    Joined:
    Nov 21, 2009
    Posts:
    1,121
    Greetings! We are attempting to use Unibill (Amazon) and have an issue - the priceInLocalCurrency is always 1, the localizedPriceString is empty. (so it seems Unibiller.AllPurchasableItems only has the info from the inventory editor, not the JSON)

    Steps I've taken:
    1. use unity 4.6, latest unibill
    1.1 use the proper bundle identifier
    2. register the IAP's on amazon, create JSON file "amazon.sdktester.json", install the Amazon Testing App, add the "amazon.sdktester.json" file to the root of the sd card, and just in case to the root of the device
    3. Add all of the IAP's in the inventory editor

    onBillerReady is successful, however after that I cycle through Unibiller.AllPurchasableItems and get the above result. Is there some sort of event for getting the info about these? Or should they already be ready when onBillerReady is fired?

    So, the test purchases work, but the descriptions are from the editor, and the prices (even in the in-app Amazon Dialog are all $0.99, even though in the json they are different)
     
    Last edited: Apr 20, 2015
  5. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @yuriythebest Unibill already creates the JSON and puts it in the right place for you, when you select 'use amazon sandbox'.

    I believe that behaviour may be a feature of the sandbox tester, have you tried live testing using Amazon's new live test service?
     
  6. VeTaL

    VeTaL

    Joined:
    Jul 2, 2012
    Posts:
    125
    Hi,

    Thanks for a nice package, it works pretty fine. Now we are adding purchase validation, it is already implemented on our backend, but how can i add it to purchase process?

    It seems, currency is already added at onPurchaseComplete(), so even if receipt validation fails, user already got a currency. What's the recommended workflow including recipe validation?
     
  7. yuriythebest

    yuriythebest

    Joined:
    Nov 21, 2009
    Posts:
    1,121
    Hi! Thanks for your quick reply! Okay, we tried it, with the following steps/results:
    1. unchecked "use amazon sandbox", clicked save
    2. uploaded the app to the live test service.
    3. here is where it gets confusing - when I receive the invitation email, I click to download the app but redirects me to download the amazon store, which I already have. Anyhow, the workaround that I found was to add the app to the amazon wish list, and then enter the amazon app store, go to the wish list, and find it there and download it
    4. After downloading the app from the amazon app store, the "priceInLocalCurrency" is always 1, and localizedPriceString is empty. Also I am getting the following debug message:

    UnibillBiller: GetItemDataRequest returned an empty product list. Have you created your purchases on the Amazon developer portal?.

    (yes, they are created)
    Just in case, I had a look in my androidManifest and it contains:

    (the smiley face was there due to the formatting, it was android : permission, without the spaces)

    EDIT: it seems the IN-Apps were created, but not published/submitted (that is done separately from publishing the actual app) - we will try that now

    EDIT2: Yes, the problem was that while the in-apps were created, they weren't published - after publishing, it seems you also have to wait several hours for them to work.

    Thanks again Banderous for this wondrous plugin! I hope this post/solution will help somebody in 2 years.
     
    Last edited: Apr 22, 2015
  8. ade76

    ade76

    Joined:
    Apr 9, 2014
    Posts:
    19
    Hi

    I am trying to upgrade a unity 4.6 project to unity 5. Is there an "easy" way of doing this with unibill? as i am getting a bucket load of errors
     
  9. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @VeTaL Dealt with via email, you are free to modify the general Biller.cs.
    @ade76 make sure you're on the latest unity 5 version.
     
  10. Kobutapapa

    Kobutapapa

    Joined:
    Feb 25, 2015
    Posts:
    7
    With In App Purchases turned off in the iPhone restrictions I am seeing the following behaviour.
    1. As expected Unibiller.Initialise (); returns to OnBillerReady with a CRITICAL_ERROR.
    2. When attempting to initialise Unibill a second time (after the first critical error) OnBillerReady is never called.
    Any idea what I could possibly be doing wrong?

    ---------------------
    Additional Info:

    After calling initialise a second time I would expect to see something like this in my log, but instead receive no log messages at all:

    Unibill.RemoteConfigManager: Not using cached inventory, using bundled.

    UnibillBiller: Storekit reported In App purchasing as unavailable..

    See http://www.outlinegames.com/unibillerrors#STOREKIT_BILLING_UNAVAILABLE

    UnibillBiller: onSetupComplete(False)

    ---------------------
    @Banderous After scanning this thread it seems I'm asking a FAQ.

    What I've gathered so far is: After making a call to Initialise Unibill I should leave it alone and it will retry until it achieves success.

    Upon success how is the application notified? In the usual manner via OnBillerReady? How can we check before attempting a purchase that initialisation has succeeded?

    As a test I started the game with In App Purchase restrictions on, initialised (critical error as expected) then returned to the settings and enabled in app purchase. When switching back to the running game I still received no notification that initialisation had completed.
     
    Last edited: Apr 23, 2015
  11. cabanel

    cabanel

    Joined:
    Sep 22, 2014
    Posts:
    66
    I have a problem and I'm going crazy for several days.

    when I try to make test purchases on my phone

    Android. and just try to make test purchases but nothing happens, I verified

    publishing apk on play.google.com me a message saying

    I have not entered in APK authorization BILLING

    But it should not add the permissions automatically?

    I tried to publish the sample code Unibill but I added the

    authorizations

    help me!
     
  12. VeTaL

    VeTaL

    Joined:
    Jul 2, 2012
    Posts:
    125
    Hi,

    One more question. We're using Unibill with Upsigh for sending analytics.
    What i had noticed is that onPurchaseSuccessful() event is rising before final confirmation message box (on iOs).

    So, flow is next:
    1. User press Buy button
    2. Unibiller.initiatePurchase() is called
    3. Unibiller.onPurchaseComplete() is risen
    4. I'm sending Upsight event right now, because i have no other options
    5. "Thank you" message box appears, so application is moved to background.
    6. As application is deactivated, Upsight plugin is not able to get known that event was sent successfully.
    7. When user close "Thank you" window, Upsight tries to send the same message again. It happens randomly, depending on internet connection, but it happens to me in about 20% of cases, which makes statistic data less accurate.

    Is there an option to call onPurchaseComplete() after "Thank you" box is closed?
     
  13. ivantro

    ivantro

    Joined:
    May 3, 2014
    Posts:
    9
    Hello,
    I'm using Unity 5.0.1, and when I switch platforms to Windows Store I get the following error:

    ArgumentException: Assets\Plugins\unibillosx.bundle is a directory
    System.IO.File.Copy (System.String sourceFileName, System.String destFileName, Boolean overwrite) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.IO/File.cs:109)


    So I remove the unibillosx.bundle directory, and after that when I tried to build, I got 126 errors like the following:


    Reference Rewriter: Error: type `Windows.ApplicationModel.Store.UnfulfilledConsumable` doesn't exist in target framework. It is referenced from unibill.dll at Windows.Foundation.IAsyncOperation`1<System.Collections.Generic.IReadOnlyList`1<Windows.ApplicationModel.Store.UnfulfilledConsumable>> unibill.Win8.ICurrentApp::GetUnfulfilledConsumablesAsync().
    UnityEngine.Debug:LogError(Object)
    PostProcessMetroPlayer:RunReferenceRewriter(WSASDK, String, String, String, String) (at C:/buildslave/unity/build/PlatformDependent/MetroPlayer/Extensions/Managed/PostProcessMetroPlayer.cs:334)
    MetroPlugin:RunReferenceRewriter(String, String, String) (at C:/buildslave/unity/build/PlatformDependent/MetroPlayer/Extensions/Managed/MetroPlugin.cs:148)
    PostProcessMetroPlayer:postProcessSDKSpecific(WSASDK, BuildTarget, BuildOptions, String, String, ProjectImages, LibraryCollection) (at C:/buildslave/unity/build/PlatformDependent/MetroPlayer/Extensions/Managed/PostProcessMetroPlayer.cs:890)
    PostProcessMetroPlayer:postProcess(BuildTarget, BuildOptions, String, String, String, String) (at C:/buildslave/unity/build/PlatformDependent/MetroPlayer/Extensions/Managed/PostProcessMetroPlayer.cs:597)
    UnityEditor.HostView:OnGUI()


    any suggestions?
     
  14. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @Kobutapapa You would need to reinitialise unibill after correcting the problem if it reported a critical error.
    @cabanel Switch android platforms in the inventory editor and unibill will fix your manifest
    @VeTaL Are you saying that the onPurchaseSucceeded event is firing multiple times? That shouldn't be possible.
    @ivantro Please see this
     
  15. VeTaL

    VeTaL

    Joined:
    Jul 2, 2012
    Posts:
    125
    Hi,

    Not actually. I'm saying it is not a final event for a purchase process. When flow reaches onPurchaseSucceeded(), there will be one more messagebox window, which would suspend application. And if to send analytic sdk event (we're using Upsight), sometimes, that event can be sent twice.

    Wondering, if anyone else has the same issues for Unibiller+Upsight combination.
    We are going to try another analytic service, i'll report back if issue would stay.
     
  16. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @VeTaL As discussed via email, the problem is with your analytics package, not Unibill.
     
  17. djfrail

    djfrail

    Joined:
    Jan 16, 2014
    Posts:
    124
    Hi - got a few quick questions about when to call RestorePurchases(). This scenario is for when somebody has bought a non-consumable and is installing the game on another device (or re-installing the game after deleting.)

    I'm releasing on iOS, Google Play and Amazon store app stores and have non-consumable in-app purchases.

    It looks like when testing on Amazon devices, Unibill automatically calls RestorePurchases when it first initializes.
    But am I supposed to manually call RestorePurchases myself on Google Play and iOS?

    But - I thought I read in another post that you shouldn't automatically call RestorePurchases on iOS because it makes you enter your AppleID password.

    So...is the correct thing to do to do some preprocessor #if checks and on GooglePlay call RestoreTransactions and on iOS don't call it (and just rely on the user pressing the Restore Purchases button) ?

    Thanks.
     
  18. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @djfrail You are correct, it needs to be a manual option on iOS. As of 1.9 it should happen automatically on all other platforms.
     
  19. djfrail

    djfrail

    Joined:
    Jan 16, 2014
    Posts:
    124
    Thanks for the fast response!
     
  20. djfrail

    djfrail

    Joined:
    Jan 16, 2014
    Posts:
    124
    Just updated to the latest version and got this compile error:

    Assets/Editor/unibill/src/AmazonJSONGenerator.cs(26,29): error CS0234: The type or namespace name `jsonEncode' does not exist in the namespace `MiniJSON'. Are you missing an assembly reference?

    What's the correct way to fix that? Thanks.
     
  21. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @djfrail check you don't have another MiniJSON in the default namespace.
     
  22. maggiemartell

    maggiemartell

    Joined:
    Mar 8, 2015
    Posts:
    3
    Hi, i have the same error as @ivantro ..

    ArgumentException: Assets/Plugins/unibillosx.bundle is a directory
    System.IO.File.Copy (System.String sourceFileName, System.String destFileName, Boolean overwrite) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.IO/File.cs:109)
    PostProcessWP8Player.CopyPlugins (System.String stagingAreaDataManaged, BuildTarget target, .LibraryCollection libraries) (at C:/buildslave/unity/build/PlatformDependent/WP8Player/Extensions/Managed/PostProcessWP8Player.cs:277)
    PostProcessWP8Player.PostProcess (BuildTarget target, BuildOptions options, System.String installPath, System.String stagingArea, System.String playerPackage, System.String companyName, System.String productName, Guid productGUID) (at C:/buildslave/unity/build/PlatformDependent/WP8Player/Extensions/Managed/PostProcessWP8Player.cs:206)
    UnityEditor.WP8.BuildPostprocessor.PostProcess (BuildPostProcessArgs args) (at C:/buildslave/unity/build/PlatformDependent/WP8Player/Extensions/Managed/ExtensionModule.cs:103)
    UnityEditor.PostprocessBuildPlayer.Postprocess (BuildTarget target, System.String installPath, System.String companyName, System.String productName, Int32 width, Int32 height, System.String downloadWebplayerUrl, System.String manualDownloadWebplayerUrl, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:316)
    UnityEditor.HostView:OnGUI()


    I try the solution you suggested but it show a lots of error... So any ideas about this? Thank You
     
  23. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @maggiemartell Double check those settings and try a fresh build, they can't be right if you still get that error.
     
  24. ev3d

    ev3d

    Joined:
    Apr 19, 2013
    Posts:
    327
    I am having a strange issue. Kinda in a rush. I am getting a purchase failure with a reason of UNKOWN and no message on iOS. Totally stumped.
     
  25. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @ev3d take a look at the debug trace from XCode
     
  26. bakno

    bakno

    Joined:
    Mar 18, 2007
    Posts:
    604
    Hi. We have this plugin and we are trying to save a server side of each purchase in order to validate when necessary.

    According to other developers who have implemented IAP with Apple, right after a purchase, the app receives a receipt that can be sent to our server and get it validated against Apple's servers.

    However, according to the Unibill's documentation, the receipt is not always available. Is this correct?
     
  27. bakno

    bakno

    Joined:
    Mar 18, 2007
    Posts:
    604
    Apparently the hooked function "onPurchased" includes the receipt within the PurchaseEvent.

    However, after building and testing a Mac version, the "onPurchased" function is never called.

    The only difference is that we are using javascripts, but some of the other hooked functions work.

    Please help
     
  28. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @bakno Take a look at the trace from whatever device you are running on, to look for any errors.

    Apple provides a way to refresh App receipts when they are missing or stale, which Unibill exposes.
     
  29. bakno

    bakno

    Joined:
    Mar 18, 2007
    Posts:
    604
    This is the trace on the Mac OSX Console...

    Unibill: _unibillPurchaseProduct
    Unibill purchaseProduct: com.bakno.backgammon.subscription
    Unibill: updatedTransactions
    Unibill: Traceout: _unibillPurchaseProduct
    Unibill: updatedTransactions
    Unibill: updatedTransactions
    Unibill: finishTransaction
    Unibill: finishing transaction 1000000157208240

    But the "onPurchased" function is never called. And therefore the receipt is not available for validation.

    Is the function not called because there is no receipt?

    If we implement your workaround to this problem (refresh receipts) will it always work?
     
  30. Saxi

    Saxi

    Joined:
    Jun 28, 2013
    Posts:
    381
    Why would I get this message when I do in fact have "RemoveAds" in the inventory and I did click save. If I open the unibillInventory.json file I can see it listed in there for all the platforms.

    Code (csharp):
    1. Unknown purchasable item:RemoveAds. Check your Unibill inventory configuration.
     
  31. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @bakno is there more information in the player log at ~/Library/Logs/Unity/Player.log?

    @Saxi make sure the identifier name you are using matches exactly, including casing.
     
  32. bakno

    bakno

    Joined:
    Mar 18, 2007
    Posts:
    604
    No, that file is not updated since a few months ago.

    I tried with a development build and the file is not updated.

    Use Player Log is activated, and the app calls Debug.Log.
     
  33. Saxi

    Saxi

    Joined:
    Jun 28, 2013
    Posts:
    381
    Casing is exactly the same
     
  34. Saxi

    Saxi

    Joined:
    Jun 28, 2013
    Posts:
    381
    Any idea how to get rid of this error?

    Unknown purchasable item:RemoveAds. Check your Unibill inventory configuration.

    It is in fact in the database, the case is proper.
     
  35. ImaginaryChris

    ImaginaryChris

    Joined:
    Nov 25, 2013
    Posts:
    20
    I'm using Unibill for google play and wanted to run the receipt validation through our server, but our server requires "signeddata" and "signature" from the receipt. Do you know what those would refer to on a Google play receipt? is the "signature" the PurchaseEvent.Receipt and can I access the "signeddata"? I'm not even sure what that is.
     
  36. Kobutapapa

    Kobutapapa

    Joined:
    Feb 25, 2015
    Posts:
    7
    When testing our android app we make a purchase of a managed item on Google Play then quickly cut wifi access to simulate network dropout.

    When we next attempt to make a purchase we get the message "Item Already Owned" and are unable to make future purchases of that item.

    I assume the purchase has been recorded on Google (and cash removed from a users account) but a response was never received by Unibill so the item was never consumed and our app had no chance to record the purchase.

    In this case how do we process the purchase?

    We tried clearing the Google Play cache, but when next attempting to use unibill we receive the following error repeatedly in our log:

    06-04 12:38:09.807: E/IabHelper(15485): In-app billing error: Can't consume com.whatever.item. No token.
    06-04 12:38:09.807: I/Unibill(15485): Ending async operation: consume
    06-04 12:38:09.807: I/Unibill(15485): onConsumeFinished:false
    06-04 12:38:09.807: I/Unibill(15485): PurchaseInfo is missing token for sku: com.whatever.item PurchaseInfo(type:inapp):{"productId":"com.whatever.item"} (response: -1007:Missing token)
    06-04 12:38:09.807: I/Unibill(15485): Consumption failed. Retrying..
    06-04 12:38:09.807: I/Unibill(15485): ConsumeProductAndTellUnity:com.whatever.item
    06-04 12:38:09.807: I/Unibill(15485): Starting async operation: consume
    06-04 12:38:09.807: I/Unibill(15485): invoking callback
     
  37. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,240
    Has anyone set up Unibill for IAP in standalone Mac/Windows games...connecting to PayPal, maybe?
     
  38. Saxi

    Saxi

    Joined:
    Jun 28, 2013
    Posts:
    381
    Been asking for weeks, and I sent an email about this. Can I get an answer?

    Any idea how to get rid of this error?

    Unknown purchasable item:RemoveAds. Check your Unibill inventory configuration.

    It is in fact in the database, the case is proper.
     
  39. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @Saxi dealt with via email.

    @ImaginaryChris the "json" field in the unibill receipt would be the signed data equivalent.

    @Kobutapapa it sounds like you're on an old version of unibill, but regardless it is possible for google play's cache to get corrupted such that it reports products as owned, but will not allow them to be consumed. Clearing the google play cache should work, but try updating unibill.
     
    ImaginaryChris likes this.
  40. Saxi

    Saxi

    Joined:
    Jun 28, 2013
    Posts:
    381
    Wasn't relevant.
     
  41. ImaginaryChris

    ImaginaryChris

    Joined:
    Nov 25, 2013
    Posts:
    20
  42. Quiet-Pixel

    Quiet-Pixel

    Joined:
    Aug 23, 2013
    Posts:
    48
    I am finding that restoreTransactions () returns success even for users who have never purchased the item on Android.

    Here is what I have been doing to test:
    * Deleted my app from the device.
    * Deleted all Google Play accounts from the device.
    * Using App Manager cleared all caches and data for Google Play Store, Google Account Manager, and Google Play Services
    * Reboot phone/tablet
    * Create a brand new Google Play user account (new email address)
    * Reinstall my app
    * Run my app and tap my "Restore Purchases" button
    * This calls Unibiller.Initialize ()
    * Out of desperation, for the sake of this test, I am now calling Unibiller.clearTransactions ()
    * Call Unibiller.restoreTransactions ()
    * The restore callback function gets called with the bool parameter set to TRUE.

    How can a completely new user get credit for having purchased the product?

    If I tap my "Buy Product" button, which calls Unibiller.initiatePurchase (), it responds as if it has never been purchased, and goes through the steps to make the purchase. It is only restoreTransactions that does not function correctly.

    (Running on Android 4.4.2, using Unity 4.6.5p2 and latest Unibill build)
     
  43. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @Quiet Pixel That doesn't mean anything was restored, merely that the process completed. The purchase event fires if anything was restored.
     
  44. Quiet-Pixel

    Quiet-Pixel

    Joined:
    Aug 23, 2013
    Posts:
    48
    Ah, thank you @Banderous! Unibill is a great product, thank you for making it available.

    If you have a chance, maybe add a note to the docs in the "Transactions Restored" section clarifying that the purchase event fires separately.
     
  45. mdrotar

    mdrotar

    Joined:
    Aug 26, 2013
    Posts:
    377
  46. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @mdrotar It's there in plain text. You could code it into the GooglePlayBillingService if you like.
     
  47. mdrotar

    mdrotar

    Joined:
    Aug 26, 2013
    Posts:
    377
    If I did that then every time I updated Unibill my changes would get overwritten and break. And every project I imported Unibill into would need to be modified as well.
     
  48. mdrotar

    mdrotar

    Joined:
    Aug 26, 2013
    Posts:
    377
    @Banderous I took a closer look at your code. You've got some nice IoC in there but no way for us customers to take advantage of that.

    I'm looking at Unibiller.Initialise():
    new UnityPlayerPrefsStorage() - I could provide something that encrypts the data.
    new UnityAnalytics() - I could implement my own to work with any analytics platform, rather than just Unity's.
    new UnityResourceLoader() - I could make my own loader that decrypts the resource JSON files. Although this is a bit dangerous if it's not encrypted by the inventory editor too.
    [edit: and UnityLogger too, since I may have my own logging system in place for this type of thing.]

    If you add an overload for the Initialise function that accepts instances of these interfaces it would provide a way to work around some of the issues. I will do that myself for now, but again, updates and new projects will break until it's built-in by you.
     
    Last edited: Jun 12, 2015
  49. Alima-Studios

    Alima-Studios

    Joined:
    Nov 12, 2014
    Posts:
    78
    I have upgraded to the last version of unibill , and unity 5.0 (tested too in unity 5.1) and unibill seems to dont be able to init , on some version before it works on unity 5.. it compiles but in runtime dont get on ready event never and no error too

    is this a known issue ¿? or only its happening to me ¿?

    (android)

    lot of thanks
     
  50. Maulwurfmann

    Maulwurfmann

    Joined:
    Mar 11, 2014
    Posts:
    366
    I downloaded today Version 1.10.1.
    I have Unity 5.1.0f3

    With this Version building for Android does not work, i get following error message:

    CommandInvokationFailure: Unable to convert classes into dex format. See the Console for details.
    C:\Program Files\Java\jdk1.7.0_51\bin\java.exe -Xmx2048M -Dcom.android.sdkmanager.toolsdir="C:/adt/sdk\tools" -Dfile.encoding=UTF8 -jar "C:/Program Files/Unity/Editor/Data/BuildTargetTools/AndroidPlayer\sdktools.jar" -

    stderr[

    UNEXPECTED TOP-LEVEL EXCEPTION:
    java.lang.IllegalArgumentException: already added: Lcom/outlinegames/unibill/samsung/SaneJSONObject;
    at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122)
    at com.android.dx.dex.file.DexFile.add(DexFile.java:161)
    at com.android.dx.command.dexer.Main.processClass(Main.java:732)
    at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
    at com.android.dx.command.dexer.Main.access$300(Main.java:82)
    at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
    at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
    at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
    at com.android.dx.command.dexer.Main.processOne(Main.java:632)
    at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:279)
    at com.android.dx.command.dexer.Main.run(Main.java:245)
    at com.android.dx.command.dexer.Main.main(Main.java:214)
    at com.android.dx.command.Main.main(Main.java:106)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at SDKMain.main(SDKMain.java:129)
    1 error; aborting
    ]


    So I switched back to the previous version and everything works again. But please fix it for future updates.