Android :: Dynamic Class Loading To Target Multiple Versions
Aug 20, 2010
I would like to make a single Android app for multiple Android versions (possibly every one of them)
My problem is that I want to check what is the version of Android the app is currently running on, and dynamically load a class which is version dependent. This part should be ok.
I just wonder how I can achieve that without compilation errors in my Eclipse project. I mean, the project is configured for a particular target (1.5, 2.1 ...), so if a class in my project is not compatible wich the selected target, it will result in errors.
Is there a way to export this classes even if they are not fit for the platform (I thought about a separated lib, but then again : how to compile theses classes into a lib without compilation pbs?) ? This should be ok since they won't be loaded until I ask them to after having checked Android version.
View 2 Replies
Nov 5, 2009
This is for an Android application but I'm broadening the question to Java as I don't know how this is usually implemented. Assuming you have a project that targets a specific SDK version. A new release of the SDK is backward incompatible and requires changing three lines in one class. How is this managed in Java without duplicating any code(or by duplicating the least amount)?
I don't want to create two projects for only 3 lines that are different. What I'm trying to achieve in the end is a single executable that'll work for both versions. In C/C++, you'd have a #define based on the version. How do I achieve the same thing in Java?
View 5 Replies
View Related
Sep 5, 2010
I'm trying to find a way to open resources which name is determined at runtime only. Let me explain in more details. I want to have a XML that references a bunch of other XML files in the application apk. for the purpose of explaining lets say the main XML is main.xml and the other XML are file1.xml file2.xml...fileX.xml...
what i want is to read main.xml, extract the name of the xml I want (fileX.xml) for example. and then read fileX.XML. the problem I face is that what I extract form main.xml is a string and I can't find a way to change that to R.raw.nameOfTheFile
View 2 Replies
View Related
Nov 2, 2010
Is it possible to dynamically load classes from a URL into your application in the same way as a desktop application can? For example, can you do a simple boot-strap application which you install onto the device, that boots up loads the main jars required for the applications from a server, or from a local jar on the SD for example?
View 2 Replies
View Related
Jul 1, 2010
I'm dealing with a problem you guys might not have faced earlier. I'm having a use-case in my Android application where the actual screen that I want to show to user is not stored in any layout file of my application. The layout of the of the screen is designed by server in this case, based on selection made by user on first screen.
Let me elaborate here,
1st Screen : List of check box with different biller names. (Imagine I've selected 2 billers from this screen)
2nd Screen : (The screen that server has decided how it should look like)
* Header,
* 1st Biller name (Label)
* Amount for 1st Biller TextBox
* Image (a Separator image)
* 2st Biller name (Label)
* Amount for 2st Biller TextBox.
* Here there can be a checbox/radio/another TextBox anything.
* Image (a Separator image)
* Button (to submit above form back to server)
I hope makes some sense in what I'm planning to design. The current issues I'm dealing with are as below.
1). How to draw this dynamic widgets?
2). How to fetch user Inputs from this dynamically created widgets?
View 3 Replies
View Related
May 29, 2014
I am developing an application. In that application i have 2 list view (a and b ), i need to load the content of the list view (b) according with the selected value of first list view(a).How its possible.
View 1 Replies
View Related
Apr 26, 2010
I have been given the tasks of speccing a mobile application, which will need to run on approx. 1000 devices. These devices already exist, and consist of iPhones, BlackBerrys, Androids, Windows Mobile and Netbooks. The application will have simple reporting capability, and a collection of forms. Anyway, the obvious solution would be to develop some browser based solution, although given the occasionally connected nature of the devices, there's a potential for data to get lost / not saved.
So instead of creating a complex application for each platform, I was thinking we could build what is effectively a form generator, with basic offline storage capability (text files), designed to run on each device, and have the device generate a form, based on for example an XML file that it could request from a server somewhere, resulting in minimal specialist development costs, and the ability to run most of the logic from the server end, with the devices being dumb clients that render forms and upload the data when there is an available connection. Anyway, my question summarised is, how have you made the decision on supporting multiple devices for your application. Is this always an unavoidable problem, and you just have to make the call to support 1 or 2, or pay for developers to write code for each platform, or alternatively supply pre-installed devices to the company?
View 5 Replies
View Related
Oct 3, 2009
How can I publish two versions of my app without changing the package name, so that users may upgrade to either version, one for Anroid 1.5 and one for Android 1.6 ? I want to offer new features requiring Android 1.6 as soon as possible, but not all users will have upgraded to Android 1.6.
View 2 Replies
View Related
Nov 17, 2009
We are upgrading our application to add 2.0 support. I have read http://developer.android.com/guide/appendix/api-levels.html and the older blog post http://android-developers.blogspot.com/2009/04/backward-compatibility.... I want to avoid using reflection if possible. I have found that if I set my minSdkVersion="3" in the application manifest but in my build path in eclipse point to the Adroid 2.0 jar file I can compile with direct calls to 2.0 code (with the relevant code to ensure they are not invoked on <2.0 devices). My question is will people with pre 2.0 devices be able to see the application in the market place in this case? What are other people using for multi-targeting different API levels with the same package.
View 7 Replies
View Related
Feb 19, 2009
I am planning to have two versions of the same app available in the market - let's say "App-Lite" and "App-Advanced". They both almost the same core functionality, but App-Advanced has a bit more specific features, than the App-Lite has. Now I am thinking what would be the strategy of deploying those two apps in the market. The simple way is to provide different name space in AndroidManifest.xml for both apps, so "App-Lite" and "App-Advanced" would show up as two completely different applications and could be installed parallel on the same device. But I'm also thinking about another way of installing the App-Advanced version - like an upgrade to the App-Lite which might be already installed. To do this, I can just set the same name space for both app in AndroidManifest.xml, so after installing one app would replace the other one - I can do this from adb command line, but I'm not sure how android market would behave in this case. Will it show them as two different apps, will it show them as two different versions of the same app with the ability to upgrade from one version to another, or it just will not allow to publish two apps with the same name space? Is this scenario doable with Android Market?
View 3 Replies
View Related
Aug 3, 2009
Whats the best way to deploy several customized versions of a Android application? Currently I have a script to exchange the resource folder for getting a customized version of my app. It works great, but all custom versions still have the same package name in the AndroidManifest.xml. Therefore it is not possible to install two customized versions of the app at the same time.
View 3 Replies
View Related
Jan 8, 2010
I need to be able to easily create different "flavors" on an app, each with a unique package name so that they can coexist on the same device. Is there a simple way this can be done, which doesn't require manually updating all the imports and other references to the package name each time I change it?
View 4 Replies
View Related
Feb 18, 2009
We're thinking about building light and paid versions of our app for the Market. But I am not clear what we need to do, or how to do it. (1) Do we definitely need the two versions to have different package names for the two builds ?It seems logical to do it that way, but I have not found a clear answer from Google to that question. Though I have found several people asking the same question. 2) Is there any support in Eclipse for building two similar apps with different package names from the same java and xml files ?In most of the IDEs I've used, it is a doddle to define multiple build targets for one project, but none of those mechanisms seem to be present here. And, the package name is embedded in every java file, as well as in many places in the manifest, leaving me without a tidy way to build to alternate package names.Is there a tidy way to build multiple version ? Or are we really going to end up copying the whole codebase and search-and-replacing the package name.
View 6 Replies
View Related
Sep 9, 2010
I would like to know if its possible to prevent my application from looking different every time I run it on a different android phone. For example, on stock 2.2, my seek bar (with default values and theme) has an orange color for the selected portion, whereas on a Samsung Galaxy S (with 2.1), it is green. Also the tab background is grey in stock 2.2, but blue in Galaxy S. On a similar note, my rating bar changes size too. I do not implement multiple screen resolutions and all my drawables are located in the "drawables" folder under "res". I donot specify a minimum sdk requirement.
View 5 Replies
View Related
Jul 30, 2010
I have an app on Android Market right now with a minSdkVersion corresponding to Android 1.6. I'd like to make an update that is only visible to users of Android 2.2 and higher (there is a good reason for this, which I will explain below). So I have two questions:
- First, if I publish an update with a higher minSdkVersion than the one it replaces, will existing users still be able to see and download the old version if their device is not >= that minSdkVersion? - Secondly, if so, would it be possible to publish updates to that older version branch? Or would it become a fossil relic, but at least always there for downlevel users? Now for the background. My apps use a large amount of resource files-- about 15MB for the Lite version, and about 55 for the Full version. Prior to Android 2.2, it was not possible to install an app on the SD card, so my solution to this was to have the app contain the bare essentials, and simply download the other resources from my web servers at first-run. However, this means that I must maintain external infrastructure, and it's also a bad experience for users who must download the app, then start another download sequence (I already have had several complaints about this in my user comments). What I would like to do is to keep the app as it is for users with Android OS < 2.2. I'd like to publish an update that is only visible to users with Android OS >= 2.2 which packages everything into the app and allows it to be stored on the SD card. And I'd like to be able to perform maintenance on both versions as needed. Why can't I just do the update as described above to a single branch of the app? Because it would mean that users with Android OS < 2.2 would have to download a massive application to their internal memory, which could be a deal-breaker for devices with only 128MB or 256MB, which is shared with the OS. Since I already have paying customers, I don't think I can ethically create an update that would potentially consume most of a user's internal memory, when the version they purchased was only a couple MB.
View 9 Replies
View Related
Jan 11, 2010
I need my app to run on all Android versions, but the Contacts API changed in 2.0. In SDK 1.6 and earlier I use android.provider.Contacts to query the contacts DB, but this does not work in 2.0 Instead, for 2.0 I use android.provider.ContactsContract. This presents a problem: when I have code for ContactsContract, my app will not build for 1.6 and earlier. Do I need to have two separate versions of my app (one for <= 1.6 and one for 2.0 and later) or is there a way to avoid doing this?
View 1 Replies
View Related
May 15, 2012
I'm contemplating the idea of developing an application for the android. I have several years of experience developing web applications with Java and so figured it shouldn't be too hard to pickup a book and learn how to do it for the android platform. So far so good; that's why I love Java.
My question is in regards to how does the android development community go about testing their applications of the various android version and phones? I think I'm more concerned about the android version rather than the phones. I'm planning on getting the Sprint Evo 4G LTE coming out on Friday, so I'm obviously going to be able to develop and test for Android 4 and HTC Sense 4 (though I don't think that is as important right? Development is usually against the OS and not the UI manager, right?). But how would I go about testing against Gingerbread, Froyo, etc.? Do you guys keep a previous old phone (like my old HTC Evo 4G) and flash diferent roms in order to test the app against previous versions of android? Are there other solutions? If it's using an old phone, does this work off-network/service? I guess you could just dump the apk on the sd card and install as third party app and test it out. As long as the app doing require phone services or mobile data network (internet) you'd be fine if you have wifi access right?
View 4 Replies
View Related
Jan 19, 2010
I am currently trying to make my app compliant with all screen sizes / api levels. I have this mostly working, however there is 1 issue i cannot resolve: Layouts in the "layout-hdpi" folder are used by and any phone on 1.5 (API level 3). - Which i dont want, i want API level 3 phones to use the "layout" folder. So to resolve this I added "-v4" onto the folder also, this works, the folder is no longer used by 1.5 phones. However, now the folder is also not used on API Level 6 phones, for example the droid. The droid only picks up the folder if i name the folder: "layout-hdpi-v6". (Also if i put "-v3" on a folder, the layout folder is not used by API level 4 phones) My understanding is that the -v<api level> qualifer allows you to exclude phones on an API level that is too low, so -v4 should mean that the folder will be used by all phones on API level 4 and above. I am finding a folder is only used for that specific API level. Has anybody else ran into this same issue? And does anybody know of any possible solutions?
View 3 Replies
View Related
May 4, 2010
Are there any viable approaches for creating multiple .APKs out of a single codebase? The apps may share the same code, but they could have different manifest files, different resources, or different external libraries (for example in an app with both free and paid versions, the free version could have a library for display ads). Ideally, this would be a single Eclipse project, with a way to specify which app to build/debug, and possibly a command line way to batch build everything.
View 16 Replies
View Related
Apr 23, 2010
I am learning how to program on Android phone. However I am unsure how to make my application work for the different screen sizes and resolutions.
I read the tutorial on the android site and still unsure how to do it.
First I know there are different files so could make a layout for each of the sizes but my problem is most of the screen needs to be dynamically created so there would not be much to put in these files.
So I am not sure how to android to re size dynamic controls based on the screen size.
I have also read it is bad practice to make controls in anything but the xml file as it separates view logic and programming logic. However they never talk about if you need to make these controls dynamically what you should do.
So is there some other way to do it that is considered good practice?
Edit
I get this error when I try to run the switcher application.
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: Error type 2
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: Error: Unable to connect to activity manager; is the system running?
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: usage: am [start|broadcast|instrument|profile]
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: am start [-D] INTENT
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: am broadcast INTENT
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: am instrument [-r] [-e <ARG_NAME> <ARG_VALUE>] [-p <PROF_FILE>]
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: [-w] <COMPONENT>
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: am profile <PROCESS> [start <PROF_FILE>|stop]
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: INTENT is described with:
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: [-c <CATEGORY> [-c <CATEGORY>] ...]
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: [--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: [-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: [-n <COMPONENT>] [-f <FLAGS>] [<URI>]
To your question: It's dynamic because
the buttons in my example grow and
shrink depending on one of the 3
possibles sizes, because they use
scaled pixel (You probably know that
you don't have to deal with screen
sizes itself). So a scaled pixel
compared to a real a pixel has a size
of 0.75px, 1.0px or 1.5px. Android
automatically and dynamically adjusts
it to the actual size. So you don't
have to care about this in your code.
So if I use scaled pixels then I don't have to worry about different screen sizes?
At the moment I don't know an example
except in games where you have to deal
with "real" pixel. But if you want use
it, multiply it with the value of the
current density. This is your "ratio".
I don't have the example with the ball
anymore but I have another which uses
the same technics. You can run it on
different screen sizes and you will
see that the buttons will always fit
into the layout. You could use the
same technics for your intents. In
this example you can scroll with the
"Scrn" buttons from one view to
another of 4 views. (At the moment
they all have a black background so
you don't see that they are different
views). The "Enter" button exits the
test. It's an Eclipse project. You can
download
So if I want to deal with ratio then I use real pixels and not scaled pixels? What advantage does this give me?
will scaled pixels work with changing from portrait to landscape( ie will it fill up the new found space)?
Finally should I make the controls now through code or is there another way? As I said I am getting data from a webservice that must look like this
checkbox label label
It can be one record or 10,000 records I don't know so these have to be appended to something that is like a window panel( the controls in there get a scroll bar).
View 3 Replies
View Related
Mar 4, 2010
Right now I have a class that extends LinearLayout and builds the view inside of the constructor using a series of addViews. I wanted to move this into an XML file, so I have the same view defined there. My problem is that I can't figure out how to load the XML file in the constructor of the derived class. I looked up the LayoutInflater stuff, but I wasn't entirely sure how to use it in that context. Do I need to call addView() with the result of the LayoutInflater? Is this even possible? The other issue is that the context object that is passed in doesn't have the LayoutInflater methods. I'm not sure if I need an instance of Activity to do that.
View 3 Replies
View Related
Mar 11, 2009
How are people here loading in their models? I'm just manually parsing a OBJ file into my own model class and drawing that.
View 4 Replies
View Related
Nov 1, 2010
I think I have a pretty easy problem to solve, but I have been beating my head against the wall for hours trying to get past it! I have an adapter that loads a list of URLS:
adapter=new MyAdapter(this, lStrings);
list.setAdapter(adapter);
The list of URLS looks like this:
private String[] lStrings={
"http://www.domain.com/file1.jpg",
"http://www.domain.com/file2.jpg",
"http://www.domain.com/file3.jpg",
};
What I want instead is to load these values from a text file that lies on the SD card. For that matter, I would be okay with loading the values from a text file into a String, and then load the String into the list as I imagine that would be the "cleaner approach". However, all attempts to do this have failed. For instance, I replaced the above snippet with this:
private String[] lStrings=
{ MainActivity.this.getString(R.string.myurllist) };
but then I get a Forced Close on loading.
I'm a bit new to Java, Android, and development in general.
View 1 Replies
View Related
Feb 23, 2010
I installed newst Android, JDK, Jer and eclipse. Than I tryed to build android project. But "build target" show "no target available". I looked at internet, they said I should run "Android SDK and AVD manager", I runed it but get follow message: Failed to fetch URL https://dl-ssl.google.com/android/repository/repository.xml, reason: No route to host: connect
I read this group's conversation that suggest to use http not https, I tried it but still can not run Available Packages.
View 2 Replies
View Related
Nov 10, 2011
I have a project (that compiles and runs in the emulator.) I have a test project that tests part of this project. This test project also compiles with no problems, but when I try to run (test) it in the emulator, I get a NoClassDefFoundError exception on one of the classes my test class tests (I hope that made sense!) when it starts to run in the emulator. This is coming out of the adb log. I looked in the bin directory (of the test project) for the missing class, but could not find it... Should it be there? I found no reference (apk, etc) of the project I am trying to test either in the test projects bin directory. How does the test project get the classes it needs to test against (in the classpath, I assume.) How do the tested classes get moved to the emulator? I did try running the app before testing, so I know it is installed and runs correctly. BTW, I am using netbeans with the nbandroid plugin.
View 1 Replies
View Related
Oct 7, 2009
What are the differences between building for target 2 (no gmaps add on) and target 3 (with gmaps addon).
Could any one has the ant scripts to bulids for these targets.
I see 1.5 SDK does these though custom ant tasks rather than 1.1 ant scripts (this was more clear and apperant on how it does the build)
View 4 Replies
View Related
Mar 18, 2010
I've done changes in an Android native library and installed a new system.img file but am now getting an unrelated Error on startup. I can get past it by swallowing the error but I wanted to know if anyone can explain what the issue is.
The Android implementation of Logger.java claims that it is Forcing the LogManager to be initialized since its class init code performs necessary one-time setup. But this forced initialization results in a NoClassDefFoundError. I'm thinking that it has something to do with the class not having been preloaded by Zygote yet but am not that familiar with the whole class loaders and VM business.
code:....................
View 5 Replies
View Related
Dec 16, 2009
I'm developing one android application which needs to support Android OS 1.5, 1.6, and 2.0. I've three different .apk files for all three SDK. How can I upload three different .apk files on Android Market Place for single application? I would like to have all 3 versions available under one application name. is this possible? So, users with any SDK can use my application.
View 5 Replies
View Related
Jul 1, 2010
I have written an Android application that I am about to release, but I would like to have a 2.1 version with multitouch and a lower API version without. However, if I simply just use the minSDK setting, the 1.6+ version would show up in the market with the 2.1 version on 2.1 phones. Is there any way to release for a specific range of OS versions?
View 3 Replies
View Related
Oct 28, 2009
I have a few scenarios where I guess I am not alone with. There is no easy solution but this has to be on top of the list I think.
1. Suppose you have an application that is compiled with 1.5 and is working fine even if started on a 1.6 device. But you now want to support other resolutions, so you need to compile with 1.6. Problem: If I recompile and publish the new apk, the 1.5 users want see my applications. Users already downloaded my application can not upgrade. (will there be a "new version" available shown to them in the market?)
2. Lets say your application works fine on 1.5 and 1.6 and you decided to publish your application twice with different package names. "MyApplication 1.5" and "MyApplication 1.6" for example. Problem: The user upgrading from a older version does not know that there is a new version, because you published a new Application. You can write it into the description and tell the user to download the 1.6 version but many users might not read that Settings from the other application are lost. Your downloads are split into two applications, so you might not make it into the top ranks that easy . You might even need to publish 4 applications if you have a light and a paid version.
3. Now 2.0 SDK is available and you want to add multi touch features or any other new stuff for all 2.0 users. Problem: The above problems are getting even worse. There is no way to easily upload multiple apks for the same application. Having to rename the package is also not making this better. Every time svn freaks out and marks everything as new. Sharing code between versions is difficult because of that.
I don't know if its just "3" (provider in Austria), but I still have not received an official update to 1.6. Testing on the real device is not possible with a 1.6 image if you don't want to root your phone and update the rom manually. 2.0 will be on some devices soon, so there is definitely a need to support all 3 versions. There should be a faster update cycle for the users or a slower update of new versions meaning bigger steps. or We get an easier way to support multiple versions. This also means we need a way to know how many actual devices with version 1.5 / 1.6 / 2.0 are already sold and/or upgraded. If i know that 1.5 is only on about 5% of the devices left, then I can just stop supporting that version and upgrade.
View 4 Replies
View Related