BlackBerry - use own JAR file in own project
Asked Answered
P

1

11

(I have solved my problem, so have edited it to look more like a blog post - the final working solution has been placed as an "answer" below.)

Aim

I want to package our BB libraries (v4.5 OR v5.0) into JAR format, so we can give application source code to clients WITHOUT giving library source code.

Workaround

Currently, I have my SDK, and my apps, all setup with source code, as different projects in the same workspace. All projects compile. My SDK is setup as a library project, my apps as applications.

In each app, I add the SDK project to the build path.

Eclipse handles the build perfectly, creates the various COD files. I copy & unzip the COD files into the same folder, run updatejad to combine the JAD files, and end up with many COD files that install perfectly.

Problem is - the library is required to be in source code.

Problems Encountered

There are many conflicting sources of information on this. The process is simple, but not well documented. In some attempts, I have encountered the following problems:

  1. JAR file needing preverification (perhaps a topic for another comprehensive post in the future)
  2. JAR file needing the RIMAPPSA2 "secret" signature from the signing tool
  3. Final built app being seen as "not signed" despite signing tool confirming success
  4. Final built app not finding the SDK code (JAR file was not exported in the build path settings)

Unfortunately the main document that seems to be referenced from RIM is incorrect - details below.


(I hope its OK to cross-reference this question with the following long list of links?)

StackOverflow links:

This one gives other links - quite useful:

These not so useful:

RIM:

Panthia answered 2/4, 2012 at 12:59 Comment(1)
Excellent post, many thanks RichardBailiff
P
2

I have managed to solve the problem so have edited the question, and placed the final procedure, with notes, down here:

1) Change the SDK project to be a MIDLET application as per this link (Richard Schilling’s Professional Weblog)

  • The BlackBerry support forum has a post (Working with Libraries) erroneously advises the developer to set the project to be an APPLICATION.
  • If you follow those instructions, you may get a signing error requiring the infamous RIMAPPSA2 signature which we are not allowed to sign.

2) Build the SDK project in Eclipse. Package & Sign the project as normal.

  • This will create a JAR file in the deliverables folder (....deliverables\Standard\5.0.0)

3) Copy that resulting JAR file into your project, and update the build path to use that JAR.

  • You could probably get working results by just adding it as an external JAR, but I prefer to store the JAR files with my projects for now.

4) Also in the build path settings, go to the "Order & Export" tab & check the box to export this JAR file.

WARNING: at this point a lot of users seem to encounter the bug where Eclipse tells you "Project {0} has to have a jad file file if it exports a mildlet jar". This error happens if you do not set the SDK project's type to MIDLET.

NOTE: regarding the RIMAPPSA2 signature, I found some info about getting rid of that requirement. The steps seem strange, but they worked for me insofar as the signing stage went. Unfortunately for me the app didn't run on the phone (still requiring some signatures). But these steps might help someone else & can be found at Frustrations with Blackberry Developer plugins for Eclipse

NOTE 2: remember to refresh your project after reimporting a new build of the JAR file, if you have to go back to step 1 (otherwise Eclipse will keep using the old one you have just overwritten).


So to summarise:

  1. Build the SDK as a MIDLET.
  2. Package & Sign the SDK.
  3. Import into application project & be sure to check the box to export it in the build path settings.

If you get questions about RIMAPPSA2 signatures, see step 1.

Easy when you know how - but this took me many days to get right?!?

Panthia answered 2/4, 2012 at 14:34 Comment(1)
Here is another link that might be useful.Niel

© 2022 - 2024 — McMap. All rights reserved.