Stories
Slash Boxes
Comments

SoylentNews is people

posted by n1 on Monday November 09 2015, @01:56AM   Printer-friendly
from the acts-of-digital-gods dept.

Back in 2012, during the early days of KeepSafe, we sought to implement an encryption scheme for our Android App. Through many iterations and prototypes, we found a sweet spot of sorts by leveraging the power of the JNI (Java Native Interface.) We decided to write our interface into the encryption library we utilized in Java, calling into the library via the JNI solely for the purpose of encryption and decryption. We opted for an on-the-fly solution, minimizing the impact on user experience as much as possible. Once we were happy with our solution, we decided to deploy it into our production app. We rigorously tested our code and were confident that everything would go smoothly; that is, until things beyond our control broke.

As we anxiously refreshed our crash reports following our release, we started to notice a recurring error. Users were running into an “UnsatisfiedLinkError”, which means that either A) the native library we were calling into did not exist or B) the native method we were calling did not exist. Since B) would almost always be caught via compiling and basic testing, we were immediately perplexed at the fact that users’ installations did not have the native libraries we shipped within the APK.

That's the agony and ecstasy of software development right there, pal.


Original Submission

 
This discussion has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • (Score: 0, Insightful) by Anonymous Coward on Monday November 09 2015, @07:38AM

    by Anonymous Coward on Monday November 09 2015, @07:38AM (#260678)

    Why do you expect your IDE to automatically manage all your dependencies for you? Eclipse isn't specifically geared to Android programming so you'll need to manually download everything you need and tell Eclipse where to look. You have to do that for every IDE for every language. Or you can download an IDE pre-configured for whatever task you want, which in this case would be Android Studio which is what you eventually did and discovered it worked. Have you really been a programmer for 15-25 years?

    Someone languages like Python move the dependency managed into package/library managers that ship with the language itself. The package manager works well enough when everything you install happens to require the same versions as everything else, but it basically dumps everything into a folder on your python PATH and you're fucked when it doesn't work. I had to manually download, compile, and install about 19 different libraries just to get the one I wanted working. When the package manager forces you to use SSL in a business environment that breaks SSL, you have to fall back on manual everything (that's a failure of the package manager not the business). Dependencies at the IDE level at least give you a choice of using a different tool to handle them.

    If you're confused about the XML then look at the XML schema or DTD. Or do you prefer undocumented, unstructured formats? You can always use your hex editor to open the XML file..

    Starting Score:    0  points
    Moderation   0  
       Insightful=1, Overrated=1, Total=2
    Extra 'Insightful' Modifier   0  

    Total Score:   0  
  • (Score: 1, Interesting) by Anonymous Coward on Monday November 09 2015, @02:04PM

    by Anonymous Coward on Monday November 09 2015, @02:04PM (#260759)

    Why do you expect your IDE to automatically manage all your dependencies for you?

    Well... yes? Shouldn't I expect that a tool designed to automate the software development process... automates the software development process?

    You have to do that for every IDE for every language.

    No you don't.

    The package manager works well enough when everything you install happens to require the same versions as everything else, but it basically dumps everything into a folder on your python PATH and you're fucked when it doesn't work.

    The system-wide environments exists for the purpose of setting up system-wide libraries. I know, I know, +5 insightful remark right here. For development environments, I would use virtualenv [python.org] which conveniently exists to address exactly the problem you are having among other things.

    If you're confused about the XML then look at the XML schema or DTD. Or do you prefer undocumented, unstructured formats?

    *cough*double dichotomy*cough* Sorry, allergies.

    • (Score: 1, Flamebait) by Immerman on Monday November 09 2015, @03:16PM

      by Immerman (3985) on Monday November 09 2015, @03:16PM (#260784)

      No, stock Eclipse is designed for *Java* programming, and Android doesn't run Java, it runs Dalvik. As far as the language and bytecode are concerned it's the same, but Davlik only includes a small subset of the Java standard library, and includes a large selection of alternative libraries.

      Expecting a stock Eclipse install to compile Android apps is like expecting a stock C++ compiler to compile a Ogre3D-based app without having to install the SDK first.

  • (Score: 2) by Pino P on Monday November 09 2015, @03:00PM

    by Pino P (4721) on Monday November 09 2015, @03:00PM (#260777) Journal

    a business environment that breaks SSL

    With the rise of SNI, HSTS, DANE, Perspectives, and other means to make TCP connections tamper-evident, I have three words for anyone in such an environment: Update your resume.

    (that's a failure of the package manager not the business)

    Why is giving an assurance to the user that the packages were not tampered with between the repository and the local machine "a failure of the package manager"? Why is interfering with this assurance not "a failure of [...] the business"?

  • (Score: 2) by Lunix Nutcase on Monday November 09 2015, @03:21PM

    by Lunix Nutcase (3913) on Monday November 09 2015, @03:21PM (#260786)

    Why do you expect your IDE to automatically manage all your dependencies for you?

    Because the point of computers and software are to automate tasks and make the users of said computers and software easier. I'm sorry that some people expect functionality beyond that of 1970s software development tools.

    • (Score: 2) by Lunix Nutcase on Monday November 09 2015, @03:37PM

      by Lunix Nutcase (3913) on Monday November 09 2015, @03:37PM (#260795)

      Make the *lives* of users, that is.

      • (Score: 2) by FakeBeldin on Monday November 09 2015, @10:52PM

        by FakeBeldin (3360) on Monday November 09 2015, @10:52PM (#260967) Journal

        Though I wouldn't be surprised to find out that nerds have become easier since the 70s -- wink wink, nudge nudge, knowwhatimean?