[Q] Question on Android SDK - General Questions and Answers

Hello, guys.
Let me tell you a little bit about myself: I'm a software and hardware enthusiast. I have lots of experience slimming down operating systems, including iOS, BlackBerry OS, and Windows itself (I'm pretty proud of my knowledge to tell you the truth). However, I don't know squat about programming. I have very little experience with Python, but nothing else.
Not until recently was that I first had an Android smartphone under my property (3 days ago to be accurate), and I've been playing around with it this whole weekend. So far, I've managed to unlock the bootloader and root the phone (a Moto G, by the way) without installing any other ROM. Not bad for my first time, is it? Anyway, now that I know stuff as "simple" as that (took me a whole day to accomplish them), I want to take the next step: installing a ROM.
I downloaded the Android SDK, and I realized it contained a system.img file. I know that image is generic, and you're supposed to custom it according to your needs, but my questions are: if I install the untouched system.img file to my device, is my device going to work? What are the risks of doing that? Would I need to integrate my device's drivers in order for the image to work, or many more things than just integrating drivers? And, most importantly, is that file what you guys call a "pure Android (or AOSP)"?
Thank you very much.

Related

Bought a Nexus One; totally, completely baffled by tethering

I'm a professional programmer, and I'm baffled. It seems that there is a whole "smartphone scene" and it's intimidating. I'm a Java expert and am comfortable with the Android SDK in Eclipse. However I'm completely baffled by the prospect of getting tethering to work on my Nexus One.
One thing that baffles me, for example, is the concept of a "ROM". Is there a ROM on the N1? I thought that ROMs haven't been used for 10 years. I was under the impression that the N1 is basically a little PC running Linux, which means that it should only have a bare minimum of a BIOS and everything else would be on "disk", or flash.
Another thing that baffles me is the concept of "rooting" the N1. It's running Android, which is an open-source mobile operating system. And, as far as I know, I have the permission to change all bits of the phone. Heck, that's part of the appeal! To say that you have to "root" your N1 is like saying that you have to "root" your Ubuntu box - it just doesn't make sense.
Complicating matters is the release of Froyo. I simply don't know enough to judge whether the actions required to upgrade the N1 to Froyo are compatible with the actions required to install a tethering app.
And that's the thing: I'm not just interested in installing tethering. I want to understand what I'm doing and why. I'd like to understand the options choose intelligently between them. There are so many resources online which are trying so hard to be helpful, but which don't really answer these simple questions.
I really appreciate your help.
-Ablation
search the correct forum for your phones model here on xda. some roms provide tethering preinstalled
check this thread for more info
http://forum.xda-developers.com/showthread.php?t=668090
while that targeted at g1, its the same concept. again search xda for the n1 section
Thanks for the link. However, I think I need a more conceptual introduction to the scene. The essential question is: what are the bits? On a PC you have:
1. BIOS
2. Disk
3. Peripheral firmware.
The disk is further broken down:
1. Bootloader
2. Operating system
3. Drivers
4. Applications
When you say ROM I assume you mean some combination of BIOS and Peripheral Firmware?

[Q] Port Android Questions

Ok, I know much of what I'm about to ask has generally been answered or discussed in other posts, but I could really use some more direct/specific answers to my own questions.
My first question is about hardware drivers. To my understanding, a great many, if not most, of the more common wifi drivers are incorporated into the latest linux kernels. If this is the case, will more or less any Android system run on a device so long as the appropriate kernel is provided?
To be a little more clear on that, I'm actually trying to learn Android development (both for apps and building roms) on a cheap Chinese tablet that I picked up. Naturally it already has a version of Android 2.2 pre-installed. However, I have not been able to extract the contents of the boot.img or the system.img, I keep getting an error, whereas I can unpack the SDK img's no problem. So I was hoping that I can get away without compiling a custom kernel, use the already existing one, and go ahead with tweaking the system.img from either the AOSP or SDK sources. Getting the source code from the manufacturer may be impossible since I can't even seem to find out who the manufacturer is or get their contact info.
I'm actually looking to port CM7 to my wife's LG Shine Plus eventually, but I don't want to pull a Tim Allen on her phone so I want to get some experience and feel for working with Android's internals on my tablet.
So my next question is still about drivers, but what I want to know is how are things like the LCD, touchscreen input, audio output, wifi and the cell radio handled on a typical Android device? Is it mostly handled by the hardware itself with the Android framework or kernel just passing universal APIs or do the drivers for each individual piece of hardware need to be compiled into the kernel? As in the gkisystem for radios, is this handled by the kernel or the framework? Which kinda brings me back to my first question, if it is built into the kernel itself, can I not use, for example, the already existing kernel on the LG Shine Plus (it's running 2.1) to port CM7?
Any and ALL help is honestly and truly appreciated. I've been looking for detailed answers for these questions EVERYWHERE.
** just bumping this post so that it can get seen**
any help or advice at all?

Request for guidance on SGP5 development journey

Hello! I'm a semi-competent programmer (been doing it for fun and profit for the last few years) and I do almost everything in Linux (and in Python/Java).
When I started working with Linux I wanted to learn everything about it, but I was an idiot when I started (probably still am) and didn't understand much of what I was reading so I focused on my programming skills instead of the OS itself.
When I first got an android device (xmas present from my girlfriend about a year ago), I looked at her like she was nuts, "WTH would I want one of them for? Thanks, though." Soon after, I loved the Samsung Galaxy Player 5 (YP-G70 Gingerbread 2.3.5 API level 10) she got me, and started learning how to write useful programs on it, and also stuck several thousand PDF copies of books on it so I could always learn wherever I went.
I had a dream, though, to totally customize it. Every sound, button, box, and bar and especially the boot/shutdown animations, made by me.
In doing so, I hope to learn a ton about embedded Linux and android.
So I started reading through everything I could find about development for Android (especially all the google docs) and my device in particular.
I've confirmed with myself that a so-called "hard-brick" is all but certain, and I will simply buy a new device or take the time to learn how to reflash through a JTAG interface, or both. (Actually, the JTAG would be my preferred option. I've done SOME work with JTAGs before, but didn't understand what I was doing at the time. Thank God for written language, the internet and smarter people than myself!)
I have some questions before I go blowing stuff up, though...
I want to compile Android from source (after making some adjustments, of course!) and flash it to my device. Per the google docs, fastboot makes that pretty easy to do, but per the dozen or so threads on XDA that I've read about fastboot on a SGP5, fastboot isn't available and I'll need to use someone elses stuff to make it work (eg, the great works of Cyanogen).
My question is:
Is it possible to put vanilla AOSP on an SGP5? Is it "possible" like it's "possible" to go to the moon (eg, I'll be reverse engineering the GPU/WIFI/etc hardware and writing drivers for them from scratch?)
Obviously Cyanogen and others have figured it out, and that probably means I could start with his work, but there's a ton of stuff on his github account and none of it speaks about my device specifically.
tl;dr
Basically, if I want to build my own super-minimal Android 2.3.5 distro that will run on a SGP5, whose branch of AOSP am I looking for?
Also, if I did manage to figure out the JTAG interface, I could, say, flash the engineering bootloader to the device and use fastboot, right? Is there another way to achieve this/remove all traces of Samsung?
Thanks!

Looking for help on porting .. I think? crDroid specific (Wallpaper won't set)

I've been using crDroid for a few years now -- it's my preferred ROM.
Someone recently ported it to work on the Pixel 2 XL, which is honestly the only reason I bought the phone. Well that and its bootloader was easily unlockable and is CDMA capable (Verizon.. sigh.)
However, regardless of how one goes about doing it, the wallpaper won't change. It's a bug within the ROM and I'm wondering how I might be able to fix it myself without having to wait for the original poster to release an update -- I've got a lot of free time and this kind of stuff genuinely interests me.
I've got (albeit basic) experience with python, perl, batch and shell scripting, pretty limited knowledge with C++ but am familiar with system architectures and such though have no knowledge of using java or porting apps, that kind of thing. I'm thinking this issue is just a problem with how the wallpaper's linked when selected.. or just a simple permission issue.
I've gone through the process of extracting the payload.bin and the image files within, looked through a few files and their contents (specifically for *wall*) but don't see anything promising. Anyone have any ideas who might be able to help a newbie with this stuff? I see a lot of posts on how to extract apk contents and recompile, that sort of thing. But I'm .. honestly not sure what I'm looking for, or whether it's an app-specific issue or a system issue, you know?
Kudos in advance.

[Firefly] [ROCKCHIP] [ITX-3588J] ITX-3588J ARM Android/Linux Dual "Deskphone" Progress

First off, I wanted to say I posted a few threads about this thing here asking questions about stuff I needed to get it working in the way I'd like and I'd want to thank you because I have made a lot of progress in getting it to be what I'd like it to be. I also don't know if this is the best forum to post this report because it's neither a question nor necessarily a tutorial but rather a summary and description of work already done so far, and especially because this device, while it sure runs Android (very well!) does not fit into any of the categories on this site neatly.
The story so far
This post concerns my experience working with the ITX-3588J, a board released just a few months ago by the Chinese manufacturer Firefly (or T-Chip Intelligent Technology Co. Ltd, based in Zhongshan) that is in the coveted mini-ITX form factor which means it can actually fit into a small-size desktop computer case and indeed has enough compute power to theoretically - and perhaps not so theoretically! - function as an honest desktop system with an ARM processor: namely the - also very new - Rockchip RK3588 system-on-a-chip.
About two months ago, I was looking into acquiring a new kind of computer to replace my somewhat longer on the tooth x86 machine that would be compact, low-power, and easy to transport while also being a fully capable desktop. And I certainly didn't want Apple. I had seen some very small form x86 desktops before, but I also knew there were many boards - like Raspberry Pi - that featured the ARM processor. Not content with the Pi, which is still very weak for this application at least when compared against modern software, I wanted to see if there was something else by now in a similar vein, and when I saw this board I thought it was an amazing option, esp. given I have not yet found a peer. Many ARM single-board devices exist but this is the only one I've found so far that looks to be in a proper desktop form factor and sporting a processor powerful enough to work at that level.
So I got the board, a case, and - noting it had SATA ports - a cheap 250 GB SSD, and put it all together ... and fired it up! And to my surprise, it booted up Android! Which was a real shocker because I generally thought this'd be like another PC board, not having had much experience with this ecosystem beyond phones, so that it would just give the usual "OS not found" stuff. Nope - pre-loaded on the board. Very minimal, very bare-bones though, not even the Google Play and similar essentials required for a usable Android experience. Yet with the little bit I had, I couldn't help but notice it was extremely fluid, responsive, and snappy, moreso than my aging 2018 era x86 box. Moreover, it was very, very interesting (and exciting!) to see Android booted onto a full-size monitor screen like Linux or Microsoft Windows - and actually and surprisingly, to see that it didn't look and feel all that bad!
However, of course, I wanted more. First, I wanted a fully-featured installation of Android. Second, I wanted to run Linux on it - especially given that, a short while later, I found that the board manufacturers were offering a stock Ubuntu 20.04 to be installable to it. Although, in the early stages, I didn't know how to do this at all, and then soon after learned how to reflash the embedded MMC chip to change the OS. And I did so, trying the Ubuntu and finding it also very performant, but not liking either that it was not quite the newest version but also more that it was mutually exclusive with Android - so far.
And that would begin a long - and at many times frustrating, especially given how much information out there is not at all tuned to a device like this being pressed into this application - learning journey toward exploring topics as diverse as how ARM processors and SoCs work under the hood, U-Boot, kernel features, the Firefly-Rockchip developer kit - and having to essentially single-handedly discover many of that kit's ins and outs given there was pretty much no documentation - and more, ultimately leading to where I've got it to now.
What it can do at this point
And that is, right now, I have it sitting here, loaded up with the stock Android 12 and Ubuntu 20.04 - with the former on the eMMC and the latter on the SSD hard drive. On the Android side, Google Play is now loaded and functional, though Google Chrome is not (it crashes with a "Telephony is null" exception for some reason, which seems to suggest for some reason it's trying to act like it's on a phone but isn't). Zoom - an app that I really, really wanted to have (and why I wanted to keep Android around on it) - works and works smoother and cleaner than my 2018 x86 Linux clunker. On the Ubuntu side, though, things are not yet coming - mostly because of seeming inability to use U-Boot to boot from the SSD. I managed to install GRUB, and given that Firefly's generous board SDK provides the full U-Boot source code was able to recompile it with the necessary "bootefi" command enabled which is not present in stock, but nonetheless alas this U-Boot seems to have its SATA support bugged or incomplete, because it would crash immediately upon trying to initialize that subsystem.
Where I'd like to go with it
Obviously, full dual boot of Android and Ubuntu, so getting U-Boot to boot the GRUB resident on the hard drive, is the biggest issue so far, and that means investigating whatever is the problem (or not?) in its SATA subsystem. Getting Google Chrome working on Android is another important step. Moreover - though it would cost extra money that I do not have right now - there's the very interesting possibility, owing to the fact that it has a built in M.2 slot on the board, and alluded to in the title - that the device could be made to act as a cell phone. And finally, the possibility of upgrading to a newer version of Ubuntu (ideally 22.04) - however from what I know so far, it looks like this will have to wait because the stock Linux kernels do not currently support the RK3588 fully - though I'd suggest the Linux kernel developers really should take a look at the SDK that came with this thing because it has lots of code in it including for the kernel, all under GPL.
Final note
One of the most interesting things I've learned from this project, and mentioned earlier, is just how well Android seems to work as a desktop OS. While there have apparently been some attempts to port it to x86, this is perhaps one of the first devices that is desktop-workable and which runs it natively. And one of the things I find that's nice about it is that ironically, because all the apps are designed for small screens, when they are run on a very big screen (and this monitor is not "very big" even by today's monitor standards, being a used and earlier LCD type), they are extremely easy on the eyes and have minimal UI clutter when compared to a typical desktop app on most Linux WMs and on MS Windows.
If you want to know more about the details, or anything else, feel free to ask any questions you might have!
UPDATE:
I believe I may have found an easier way to dual-boot Linux with Android, and that consists of configuring a custom ROM that will put both kernels, and GRUB, on the board's eMMC, while the rootfs for both OSes is placed on the hard disk. Will be seeing how it works.
UPDATE:
I have almost completed the custom ROM! I have now both Android and at least the base system for Ubuntu 20.04 (Kernel 5.10.66) bootable with Android now storing user data on the hard drive; though I'm still running into some hardware initialization issues in the latter that are keeping me from actually installing the desktop system. With regard to the Ubuntu system, there is some interesting issue in that for some reason the provided SDK kernel, which I had to rebuild, seems to build more Android-like because it wants to look in "/vendor" for some things related seemingly to the networking facilities, and it is possible this is preventing me from bringing up wifi, which I need in order to download the rest of the system.
But lots of progress overall - it seems that a full-fledged ARM desktop running simultaneously Android and Ubuntu is within reach to be wrung from this board!
Ignore my request for an update in another post. Seems you like you moving along. I don't need dual boot, just a working Android 12 with GPlay and Chrome. Did you get Chrome to work?
mebalzer said:
Ignore my request for an update in another post. Seems you like you moving along. I don't need dual boot, just a working Android 12 with GPlay and Chrome. Did you get Chrome to work?
Click to expand...
Click to collapse
Thanks. Yeah, I want to say that I have pretty successfully gotten Android 12 working on it for sure, but Ubuntu is proving much more difficult due to graphics support issues, and I'm not sure if it will be possible until RK3588 is supported in the mainline Linux kernel tree which is still something under development. And yes! I got Chrome to work Everything works, actually - it's great as an Android system, though obviously Android is kinda funny to use as a desktop OS. I am wondering if I can't get a "pseudo" Linux using something like Linux Deploy in lieu of running it natively, at least until the kernel development catches up with this new processor.
(FWIW, I'm posting this post from that machine while it is running A12. )
Good to see someone else is interested in it, though. What are you planning on using yours for?
Insofar as getting Android 12 to work w/GApps - it depends on if you want to do it purely on the eMMC or you want to also put user data on an attached hard drive like I did. In either case, the best option, I feel, is to create a custom ROM - I could provide custom ROMs for it for download, but don't know because of Google's licensing conditions around the GApps and have heard of people getting in trouble with Google for distributing custom ROMs for phones that have GApps in them. You basically need to unpack the stock Android image, unpack the "super.img", then load the apps from a package like NikGApps into the "product" partition (NOT "oem" - that was a big mistake), then repack everything and flash to the eMMC again. You will need the board SDK from Firefly for all this as it has the custom ROM-packing and flashing tools.
Alternatively, it is possible to manually install the NikGApps GApps using the Android console - as it's a fully unlocked system, obtaining root access is trivial: just put it into Developer mode and you will find the root access in the "Developer options..." menu under "System".
Shimmy99 said:
Insofar as getting Android 12 to work w/GApps - it depends on if you want to do it purely on the eMMC or you want to also put user data on an attached hard drive like I did. In either case, the best option, I feel, is to create a custom ROM - I could provide custom ROMs for it for download, but don't know because of Google's licensing conditions around the GApps and have heard of people getting in trouble with Google for distributing custom ROMs for phones that have GApps in them. You basically need to unpack the stock Android image, unpack the "super.img", then load the apps from a package like NikGApps into the "product" partition (NOT "oem" - that was a big mistake), then repack everything and flash to the eMMC again. You will need the board SDK from Firefly for all this as it has the custom ROM-packing and flashing tools.
Alternatively, it is possible to manually install the NikGApps GApps using the Android console - as it's a fully unlocked system, obtaining root access is trivial: just put it into Developer mode and you will find the root access in the "Developer options..." menu under "System".
Click to expand...
Click to collapse
Thanks I will keep this in mind. See my reply to you other reply on another post as well.
I would to run gplay as well please send me instruction the nikapps github doesnt say nothing

Categories

Resources