Okay, here's the situation:
I'm developing an application for a client (or trying to do so). It requires much (if not all) of the same functionality as the built-in SMS/MMS application. So, I thought - HEY! Android is open source right? I can take the application and modify to my needs, right?
So, I found the code on github for the MMS/SMS application (for some reason, based on the AndroidManifest file, it calls my project I built, "ConversationList"). But I get TONS of errors involving the import com.google.android.mms.* package and a couple other packages.
Everyone keeps saying "it's a private/internal package", and "download the entire AOSP". But, HOW do I do this on Windows, and WHY can't I just download the appropriate packages to use in the program?
ALL I want to do is build a project in Eclipse deploy it to my phone, and then modify the necessary code. If Android is open source, why so many secret/internal packages? This is frustrating.
Any advice?
So, I found the code on github for the MMS/SMS application (for some reason, based on the AndroidManifest file, it calls my project I built, "ConversationList"). But I get TONS of errors involving the import com.google.android.mms.* package and a couple other packages.
AOSP applications like this are designed to be built as part of a firmware image, not as standalone apps.
But, HOW do I do this on Windows
Most likely, you don't. Cygwin might work. More likely, you will need to use OS X or Linux, such as running Linux in VirtualBox. And the result of your build will not run on anything, except as part of a firmware build that you use to replace the firmware on a device.
WHY can't I just download the appropriate packages to use in the program?
Because that application is designed to be built as part of a firmware image, not as a standalone app.
ALL I want to do is build a project in Eclipse deploy it to my phone, and then modify the necessary code.
Then find a project that is designed to be built as a standalone app as your starting point. Or, work on modifying the project you are trying to use to work as a standalone app, by ripping out all the functionality that depends upon things that are not in the app itself.
If Android is open source, why so many secret/internal packages?
They are not "secret". They are part of the firmware.
For example -- since you appear to be familiar with Windows -- it is entirely possible that "apps" like Control Panel are not designed to be built independently from the Windows OS. If you were able to download the source code to Windows and tried to load Control Panel into Visual Studio, it is eminently possible that you could not create some standalone CPANEL.EXE file just via that one project. Rather, you would need to use a customized Windows OS build process to build the whole OS, which would then contain a CPANEL.EXE that would run within that built version of the OS.
Most of the AOSP apps work this way. Some have been forked to create standalone apps -- K-9 Mail came from the early version of the AOSP email app. I have no idea if anyone has done this with the stock AOSP Messaging app or not.
You could instead fork TextSecure[0] as it is no system application but looks very similar to the stock messaging application. The AOSP application needs to be installed on /system/app which requires root and might not be what your customer wants.
Please note that this application is copylefted (GPLv3) so you'd have to give your client access to the source code under the terms of the GPL if you fork.
[0] https://github.com/WhisperSystems/TextSecure
Related
My company has 2 native applications that run on Windows/Mac/Linux as services or daemons. I have taken this code and compiled it with the Android toolchain. I have a rooted android device to which I can push this application, run as as process and it works great. However, I'd like to build some sort of installer (probably an .apk) to which I could add this native application and run on ANY android device (e.g. without being rooted).
So does anybody know of a link, example or even just how to "install" a native application and run?
Thanks
/Loren
To do this properly, you need to rework your native service to be a library utilized by an android Service, and operate in keeping with android's conception of services (lifecycle, status bar notification, etc).
Trying to run your own executable (vs library to an android-provided executable) is not something android makes easy and not something you are encouraged to do.
Okay, here's where I'm at. I used Eclipse to import the code for the SMS/MMS app that is on Android devices. The code on GitHub is at https://github.com/android/platform_packages_apps_mms.git. I used the Import -> Git in Eclipse. Got the code into the environment. Had to manually paste the AndroidManifest.xml file into the project, and also copy over source and resource directories.
Basically, I want to get the Eclipse project to a point where I can run it on my device and it behaves JUST like the built-in app. THEN, I can modify it for my specific needs hopefully. I don't want to have to write all the SMS/MMS functionality from scratch if I can avoid it.
NOW, the problem is: A LOT of unresolveds. I keep reading various places where people are saying that some of the packages aren't REALLY in the SDK and are internal... Why the heck call it an "open source platform" when the source isn't available for the built-in apps that Google provides?! (If this is in fact the case). Further, why would they provide the code on GitHub for the MMS app if in fact not all the code is available and you can't compile it? Seems a little ridiculous to me.
I have read some answers to previous posts where I was just sticking my "toes into the water" so to speak, and people are saying that a lot of these packages are part of the firmware? Seems like there should be some base code for a texting/mms app out there somewhere.
Anyone know of any? (Open source, free, SMS/MMS Android code that I can easily obtain and that don't suck, if in fact I can't use Google's code?)
Thanks,
John
Mms as well as other system apps use private or hidden APIs that are not available through the SDK.
This has nothing to do with not being an open source platform, as you mentioned, but with the fact that you are trying to build the application in a way that is not supported and nobody says it was.
If you want to modify and build Mms, do it as part of the firmware build, using make, not importing the project to be built by the SDK in Eclipse.
The stock MMS app built into a device's original firmware, signed with a private key, and is able to use some private API.
Third party apps can't use the private API for various reasons, one being security. All the source is open if you wish to view it.
You can definitely build your own firmware, or ROM, as some call it, and run your own modified MMS app on it.
I don't know if you can make and install your own MMS app. You can find out by looking through the Play Store for similar apps or looking at the Android developer documentation to see what permissions and API are provided to third party apps.
I would like to create an App with python, but i need that it includes all it needs in order to operate correctly. I have saw this post about the ability to sell the app via and Market, but it didn't have a final answer there.
Currently the best solution i could find, is at this pdf chapter (from Pro SL4A Apress book), but still it seems that even if i create an .apk file, the user whom install that app would have to have the SL4A on his Android device.
Is there a way to incorporate the SL4A in the .apk file, or better yet, to incorporate just the needed stuff ?
As far as I'm aware, APKs created this way don't include the script interpreters that SL4A provides. According to the PDF you posted, it should request for SL4A and the relevant script interpreter to be installed when the APK is installed, however.
This question is now quite old, but for any other users who might come by here, it is now possible to embed the Python interpreter in an APK package. Look at this project for instructions and methods of doing so.
so what actually happens when compiling an APK via the method described in the book is a little bit different than what you have described. What actually happens is that upon installation of the APK file it will check to see if the user has Python installed, not SL4A. If the user does not have Python installed it will prompt for a download, similar to how certain applications prompt to install BusyBox in order to use certain commands. This means that the user doesn't need to have a scripting environment, or in fact even know what python is.
As for compiling 3rd party modules/libs into your APK, what happens is when you are compiling in Eclipse it will point to the folder on the computer containing python, and compile from there. That means that all you need to do in order to get extra modules or libraries into the APK are to make sure that they are included in the folder that Eclipse looks to when compiling the APK. By default I think that is your native Python folder, but I'm not 100% sure so somebody please correct me if I am wrong.
Hope this helps!
I want to modify the core applications like Settings.apk and install on my own android phone.I don't want to publish it on market. I have following doubts
Where can I get source code for core applications?
What are the things I need to do this?
Please tell me steps to do this.
You can get the source code here: https://android.googlesource.com
Keep in mind that the packages there might not be the ones on your phone as each vendor can provide a replacement of their own, the Camera for instance is almost never the google app.
You will also have to decide which version you want since each OS version has revisions that take advantage of newer API's etc.
As far as what you need pretty much the same thing you need to build android apps, eclipse, the sdk, tools etc. http://developer.android.com
You will of course have to remove the application from your phone before installing the new one since your signing certificate will not match. There can be difficulties when you swap out your own version so be sure to save the original.
I've built an Android app in the past (on a Windows machine using Eclipse), but having downloaded Ubuntu, the Android source and built it successfully (whew), I'm not sure how to tie it all together. How do I load my app into the Android that I've built?
If you really want to be building your own ROM you should head over to the Android Platform Developer's Guide and read it all through.
However if you simply want to develop your own applications then you only need the SDK (and on rare occasions when you want to add some native code also the NDK).
The easiest way to develop Android applications is by utilizing the Eclipse integration, which does most of the work for you.
You also probably want to know what all of the SDK tools (even if you are building your custom ROM) that the Eclipse plugin is using behind the scenes do, so head over to the Tools Overview.
You may want to take a look at the Android Cookbook.
It has loads of nice wee snippets of code to get you started.