Showing posts with label Tools. Show all posts
Showing posts with label Tools. Show all posts

Friday, September 26, 2014

Android Library Project and its usage

"Android Library projects contain shareable Android source code and resources that you can reference in Android projects. This is useful when you have common code that you want to reuse. Library projects cannot be installed onto a device, however, they are pulled into the .apk file at build time." 

When creating a new Android project you can mark a project as ‘Library’ project. This will create a project that can be shared/used in multiple projects. You cannot run/install the library project stand alone instead you have to reuse it in Android project.

How to mark a project as library:


Create a new Android project that will use the library project. Library project can be added as reference as follows:
  • Android Project > Properties > Android (left option) > Library (bottom right pane) > Add

  
                       

Click ‘Apply’ > ‘OK’

  • To use the library class activities in android project, 'import' the library references where ever you are using library files.
  • To launch the library activity you should have that activity listed in your Android project 'AndroidManifest.xml'.
  • Don’t make files (Layouts, Classes, XML’s) with the same name in main and library projects. This can cause problems at run time. What I have noticed is that if you have same name layouts in both projects the library layout got overridden and parent layout will be used.


rizzz86

Thursday, April 22, 2010

Maven j2me-Archetype

I am using Netbeans6.7 for mobile project development and want to make that project a 'maven project'. I have maven configured on my machine.

To make maven based j2me project I have created a new project from File > New Project > Maven > Maven Project > j2me Archetype (2.0.4). The project created successfully and showing the properties of maven as well . . .  BUT !!

I cannot able to view the properties of mobile project (i.e. Platform Type, Device Profile and Configuration, Midlet Information etc). To execute that project it requires a class with main() method. So I have posted all that on forum and finally got the following answer:

j2me development is not supported for maven projects in netbeans :(

rizzz86

Wednesday, April 7, 2010

Share Common Code Between J2ME and J2SE Project -- Problem/Solution


Statement:

If you are creating a client/server project on Java, where client is a mobile device and server is a web application. Also if there is a common code between client and server then where do you place that common code ?

I also faces the same and go through the following phases before deciding what to do. The two points that came in mind right away are:

  • Create a J2SE Project and place common code there. Make your client and server project dependant on that common project.
  • Create a J2ME Project and place common code there. Make your client and server project dependant on that common project.

First I have created J2SE as a Common Project:

When I execute the client (J2ME) project with a dependency of common project (J2SE), I got the following error:

Running with storage root DefaultColorPhone
Method............: 100d2aa8 'com/sun/midp/midlet/MIDletState.createMIDlet (stat
ic)'
Stack Chunk.......: e58cd4
Frame Pointer.....: e58d30
Current IP........: 10128592 = 10128584 + offset 14
Previous Frame....: e58cf4
Previous IP.......: 1012052b (offset 22)
Frame size........: 8 (1 arguments, 7 local variables)
Argument[0].......: e59a9c
Local[1]..........: 0
Local[2]..........: e58cf4
Local[3]..........: e68858
Local[4]..........: e58d08
Local[5]..........: 100dcdd0
Local[6]..........: e58cd4
Local[7]..........: 1015f0a0
Operand[1]........: e59a9c

Method............: 100cd0e4 'com/sun/midp/midlet/Selector.run (virtual)'
Stack Chunk.......: e58cd4
Frame Pointer.....: e58cf4
Current IP........: 1012052b = 10120515 + offset 22
Previous Frame....: 0
Previous IP.......: 1
Frame size........: 6 (1 arguments, 5 local variables)
Argument[0].......: e59d10
Local[1]..........: e68a68
Local[2]..........: e59a9c
Local[3]..........: 0
Local[4]..........: 0
Local[5]..........: 0
Operand[1]........: e68a68

VM status:
Instruction pointer.: 10128592 (offset within invoking method: 14)
Next instruction....: 0x4c
Frame pointer.......: e58d30
Local pointer.......: e58d10
Stack size..........: 128; sp: e58d48; ranges: e58cdc-e58edc;
Contents of the current stack frame:
e58d10: e59a9c (lp)
e58d14: 0
e58d18: e58cf4
e58d1c: e68858
e58d20: e58d08
e58d24: 100dcdd0
e58d28: e58cd4
e58d2c: 1015f0a0
e58d30: e58cf4 (fp)
e58d34: 1012052b
e58d38: e58d0c
e58d3c: 100d2aa8
e58d40: e58cd4
e58d44: 0 (end of frame)
e58d48: e59a9c (sp)
Execution stack contains 112 items:
e59d10
e68a68
e59a9c
0
0
0
0
1
e58cd8
100cd0e4
e58cd4
0
e68a68
e59a9c
0
e58cf4
e68858
e58d08
100dcdd0
e58cd4
1015f0a0
e58cf4
1012052b
e58d0c
100d2aa8
e58cd4
0
e59a9c

Execution completed.
429584 bytecodes executed
10 thread switches
486 classes in the system (including system classes)
2380 dynamic objects allocated (72064 bytes)
1 garbage collections (0 bytes collected)
ALERT: java/lang/ClassFormatError: Bad version information.
Execution completed.
429584 bytecodes executed
10 thread switches
486 classes in the system (including system classes)
2380 dynamic objects allocated (72064 bytes)
1 garbage collections (0 bytes collected)


After reading some forums I recompile my common project (J2SE) on jdk1.4 and add it as a dependency in client project (J2ME) again (previously I have compiled it on jdk1.5). This time the client (J2ME) executes and works successfully.


ISSUES:

In Java the development toolkit for mobile (J2ME) contains limited features as compared to the standard edition (J2SE). If you are creating your project on J2SE then you must not use any feature of J2SE in project that is not provided by J2ME (mobile edition have limited features).

In jdk1.5 there are some major specification changes due to which it generates different byte-code number that results in "ALERT: java/lang/ClassFormatError: Bad version information". So you need to run/compile your common (J2SE) project on jdk1.3/1.4




Next I have created J2ME as a Common Project:

I am using Netbeans 6.7 for development, so I have created 'Java ME > Mobile Class Library' project for common code. The Mobile Class Library is a mobile project but does not contain any Midlets. It uses IDE-generated Ant build scripts and special tasks to pre-process, build, obfuscate, preverify, debug, run and depoly your library in JAVA ME Environment.

I moved all my common code in this mobile project and then use it as a dependency for both client (J2ME) and server (J2SE) projects and it works properly for both editions. Doing this ensures the compatability of both versions because mobile edition features are already supported by standard edition. Also you will be free from jdk-versioning issue that was faced in previously.

Conclusion:
So create 3 different projects, one is a client (J2ME), another is a server (J2SE) and a common project (J2ME) that will be used by client and server.



rizzz86

Wednesday, March 3, 2010

Installing Virtual Box Guest Addition (Problem/Solution)

I have a VirtualBox-OSE installed on my Ubuntu from which I am running WindowsXP. The 'OSE' type of VBox that was installed on my machine is not much rich i.e. no pointer sharing between operating systems, no full screen display for Virtual Box's OS etc. I need to overcome these problems to make my working more easy.

After reading comments on different forums, I conclude that I need a 'Guest Addition' of VBox. So I have started to install the Guest Addition for my VirtualBox-OSE. I follow the same steps as mentioned on forums to install the guest version but always gets the following error messages:

Could not find the VirtualBox Guest Additions CD image file /usr/share/virtualbox/VBoxGuestAdditions.iso or /usr/lib/virtualbox/additions/VBoxGuestAdditions.iso. (i.e. it cannot able to find 'VBoxGuestAdditions.iso' file) Do you want to download this CD image from the Internet? And then it returns 404 :s

Now on one of the forum I found different information related to VirtualBox Editions: "There are two different Editions of VBox: PUEL and OSE. PUEL has a lot richer functionality but is available from proprietory Sun repositories. The GA are bundled this as an ISO. In the OSE version the GA are typically available as a separate virtualbox-ose-modules package."

The next thing that I have done is to uninstall the VirtualBox-OSE right away. I have downloaded the PUEL Edition of VBox and installed it. Now I have got the PUEL Edition, I can install the 'Guest Addition' on this VBox. The missing file 'VBoxGuestAdditions.iso' is now available in the folder. I doesn't have any issued in installing the guest addition after that. And finally have some rich features in my VBox.



Small Screen



Full Display


rizzz86

Tuesday, January 12, 2010

Meld Diff Viewer


Meld is a tool which allows the user to see the changes in, and merge between, either two files, two directories, or two files with a common ancestor. I am using this tool in 'Ubuntu' as a replacement for WinMerge.



The tools is excellent and having user friendly UI. It also provides three way comparison between files and directories.

Look at some snapshots:



rizzz86