Related
Hi,
I have successfully set up FRG83 and Cyanogen repositories, I've compiled the whole ROM, and I've compiled specific apps (make Gallery3D, for example).
Now I'm trying to start working with Eclipse. I've installed it and imported Cyanogen repo into it as a project - worked fine. The problem is - what if I want to compile a single package from it, say, Calendar app only? What is the equivalent of "make Calendar" in Eclipse, and is there any?
Thanks.
Bump. I don't believe no developers pass around here..
Don't believe many people in here know as much as you... xD
I know you shouldn't post questions in the dev section, but it may be a better option?
Sent from my Nexus One using XDA App
Unfortunately there are still plenty of internal-only API calls in the AOSP system apps. This means that many of them will not compile using the SDK.
So the right way to work with them would be editing in Eclipse and building in command line, like I did. Oh well... Thanks
I didn't notice this when it happened, but it was pointed out in IRC (and not on the forums yet, I believe). The Android kernel and Ubuntu source code has been release in Motorola's usual site. I know some people have been waiting for tun.ko and cifs.ko - here's your chance. I might play around with a few modules myself, but I'm more excited about the Ubuntu source code release.
P.S. Oh, the people who were bellyaching and talking about how HTC was better than Motorola because HTC released kernel source code for some devices? Eat your heart out.
Credit to [http://forum.xda-developers.com/member.php?u=512640]jiggytom[/u] for pointing it out to me. This should have been in the original post.
awesome. thank you moto, finally opening some doors, even if it's just a little bit
it would be pretty sweet if they showed canadian customers some love and released source for the Bell Atrix as well :/
raybond25 said:
awesome. thank you moto, finally opening some doors, even if it's just a little bit
it would be pretty sweet if they showed canadian customers some love and released source for the Bell Atrix as well :/
Click to expand...
Click to collapse
I'm certain that for the source they released, it's identical for all released devices. The kernel version isn't going to be different, nor that for any of the webtop packages. Any differences lie elsewhere, and I don't expect Motorola to ever release that source code.
Sogarth said:
I'm certain that for the source they released, it's identical for all released devices. The kernel version isn't going to be different, nor that for any of the webtop packages. Any differences lie elsewhere, and I don't expect Motorola to ever release that source code.
Click to expand...
Click to collapse
good point. it's just annoying that the frameworks files aren't cross compatible - because almost any ROMs that will be released will rely on framework changes and landing AT&T edited frameworks on a Bell Atrix causes a soft-brick (i've tried, lol)
i guess we just need a canadian dev, or someone who's nice enough to effect some of the current AT&T framework changes that can be made to Bell frameworks.
I would if I knew how, and who knows, maybe i'll try and puzzle through it.
For what it's worth, I believe I pointed it out on irc.
Sent from my MB860 using XDA App
so what will this give us atrix users?
jiggytom said:
For what it's worth, I believe I pointed it out on irc.
Click to expand...
Click to collapse
To me, true. Not sure if anybody pointed it out to anybody before me (and they just decided not to tell anybody else). I was thinking about what to do about that, but credit where credit's due, right?
AHHHHH HEEELLSSS YEEAAHHH!!!!!! So what do we do now?
we just need the unlocked bootloader now!
Interesting, assuming the kernel compiles from the source, no extra proprietary files needed, I would be interested getting aufs.ko installed and working. My idea being that all the mods done here could be applied via the fs overlay and leave the stock system partition alone for updates. I know that init.d support is a bit of a hack via recovery.sh, no way to edit init.rc atm, so not sure if an overlay could be applied on the fly without issues while android is loading.
NFHimself said:
Interesting, assuming the kernel compiles from the source, no extra proprietary files needed, I would be interested getting aufs.ko installed and working. My idea being that all the mods done here could be applied via the fs overlay and leave the stock system partition alone for updates. I know that init.d support is a bit of a hack via recovery.sh, no way to edit init.rc atm, so not sure if an overlay could be applied on the fly without issues while android is loading.
Click to expand...
Click to collapse
There are entry points into init.rc, but I don't think you can replace it mid-flight. I'm using one of those entry points as it is.
You'd also hit the other problem I'm hitting, of trying to figure out what storage devices are available when. I'm not currently aware of any way to force the SD card to be loaded earlier, for example (even though I'd love that).
I'm sorry for my ignorance.
I am not a developer so I have a question, How will this be beneficial to the Atrix users?
Can this lead to an unlocked bootloader/custom roms?
What else can be gained from releasing the source code?
Thank you.
RacecarBMW said:
I'm sorry for my ignorance.
I am not a developer so I have a question, How will this be beneficial to the Atrix users?
Can this lead to an unlocked bootloader/custom roms?
What else can be gained from releasing the source code?
Thank you.
Click to expand...
Click to collapse
It will make it easier for tweaks and optimization to occur without access to the bootloader.
It could also mean that there is a possibility for custom Roms for the truly gifted Developers who can do it without modifying the Kernel. Has happened for the Milestone and is currently being undertaken for the Milestone 2 (Droid 2)
Obviously, I am going to be cleaning up some bugs with the CM7 build...
But, for those of you who might be inclined to develop a CM-based AOSP ROM, feel free to check out my github source to see what's involved:
https://github.com/Hashcode
Or you can:
repo init -u https://[email protected]/Hashcode/cm4D3.git
repo sync
To pull the entire set of android files that I use for compiling the current build.
Please note that the Board Config is currently setup to generate Safestrap .zip files.
Great job
Thank you for everything you have done for the droid 3!
Is there a kitchen for DROID 3 roms. Running windows 7
Sent from my DROID3 using xda premium
You need to be running Linux to do this hardcore kind of stuff.
Like Ubuntu I had it set up in VB and detain. Was just wondering if there was some thing for Motorola roms out there. I have had HTC phones this my first moto with android on it.
Sent from my DROID3 using xda premium
I'm starting to tinker with building (learning, actually) ROMs. I'm running Linux Mint Debian - has there been a kitchen built for D3?
Hashcode said:
repo init https://[email protected]/Hashcode/cm4D3.git
Click to expand...
Click to collapse
That should be
Code:
repo init -u git://github.com/Hashcode/cm4D3.git -b gingerbread
or whatever URL you want to use from the access URL box at https://github.com/Hashcode/cm4D3.
And of course "gingerbread" could be "ics" if your excitement about being on the bleeding edge overrides what should be a fairly sensible fear reaction to the term "bleeding edge".
@Hashcode: You don't use your own ALSA repos? (Comparing with my own generated manifest for your project...)
Also, are you planning on pulling newer Gingerbread manifest changes into your tree? I noticed CyanogenMod have gained a u8150 device tree, and I happen to have one of those, but your manifest doesn't list it...
Ooops. I have a u8510. >_< But the question stands...
TBBle said:
That should be
Code:
repo init -u git://github.com/Hashcode/cm4D3.git -b gingerbread
or whatever URL you want to use from the access URL box at https://github.com/Hashcode/cm4D3.
And of course "gingerbread" could be "ics" if your excitement about being on the bleeding edge overrides what should be a fairly sensible fear reaction to the term "bleeding edge".
@Hashcode: You don't use your own ALSA repos? (Comparing with my own generated manifest for your project...)
Also, are you planning on pulling newer Gingerbread manifest changes into your tree? I noticed CyanogenMod have gained a u8150 device tree, and I happen to have one of those, but your manifest doesn't list it...
Ooops. I have a u8510. >_< But the question stands...
Click to expand...
Click to collapse
Thank you for pointing out that my repo init line was wrong. I fixed it for those that were having issues.
Also, for those watching my manifest for ICS, I'm getting an error when syncing:
error: revision refs/heads/master in manifests not found
I'm trying to fix that. Correction: Fixed it and double-checked with a repo sync.
Some quick answers:
- I tried to customize the alsa source to fix some of the audio issues. But it ended up being a bit more complex than just changing ALSA. Motorola added a layer into the audio system for handling HDMI audio and in call audio volume.
When you build stock AOSP Gingerbread using the alsa drivers, the libaudio.so file ends up being all of the ALSA calls. If you examine the libaudio from the D3, you'll see that it is nothing of the sort. It's the customized mixer lib for RDS voice and HDMI audio. There's another lib from the phone: libaudio_ext.so which ends up being the alsa calls.
All of which made customizing just the alsa code risky at best as the further away from the version of alsa that was used on the phone, the less likely that the custom libaudio would work.
I probably still have the unfinished hardware_alsa git out on github, but it's not active in the current build.
- I can occasionally check for updates to the CM7 manifest and add them, or if you fork the manifest and add it in there that works as well.
Side Note: I may need to pick your brain on an EGL 0x0500 erorr I'm getting in the ICS code. I'm fairly certain it's an enum value that our version of the PowerVR drivers aren't set to handle, but I'd like to confirm that for my troubleshooting. And it seems that you might have some knowledge in that area
Where/how does someone begin working on building a ROM once they've downloaded these files? I'd rather dive into code and learn Android rather than using a menu driven wizard. Is there a tutorial somewhere? What tools are needed?
Sent from my DROID3 using XDA App
Phibernaut said:
Where/how does someone begin working on building a ROM once they've downloaded these files? I'd rather dive into code and learn Android rather than using a menu driven wizard. Is there a tutorial somewhere? What tools are needed?
Sent from my DROID3 using XDA App
Click to expand...
Click to collapse
This would be the starting point that you're looking for:
http://source.android.com/
Hashcode said:
Side Note: I may need to pick your brain on an EGL 0x0500 erorr I'm getting in the ICS code. I'm fairly certain it's an enum value that our version of the PowerVR drivers aren't set to handle, but I'd like to confirm that for my troubleshooting. And it seems that you might have some knowledge in that area
Click to expand...
Click to collapse
Some, but probably not enough. I'm happy to look, but I'm actually moving internationally tomorrow so I may not have 'net access for a week or so. >_< (That's why I've been trying so hard to get backup working. ^_^)
Once I'm settled in I will probably use fdisk to repartition my device or have a poke at hacking sd-ext support into safestrap, so I can start playing with custom ROMs.
Did you see my safestrap-ME863 nandroid patch in the Safestrap thread, BTW? It's got a couple of TODOs, but seems safe and roughly correct to me. http://forum.xda-developers.com/showpost.php?p=19683372&postcount=249
It could also form the basis for detecting when /preinstall can't be used as safe-system although I didn't look to see if there's already code to do that.
Does anyone know of a site where I can peek at reference code for random things (Apps, Kernal etc.)? It'll make it easier to understand how the code works. I haven't look at any code yet so I don't even know what language apps and the os are programmed in. (Java, C, C++, Ruby)
Sent from my D3-CM7-SS using xda premium
tenchi19134 said:
Does anyone know of a site where I can peek at reference code for random things (Apps, Kernal etc.)? It'll make it easier to understand how the code works. I haven't look at any code yet so I don't even know what language apps and the os are programmed in. (Java, C, C++, Ruby)
Click to expand...
Click to collapse
Just pull down the repo as Hashcode describes in this thread - you'll have all of the Android source. To the best of my knowledge, it comprises of mostly C, C++, and Java, but there is probably a smathering of some other things like ASM, perl, BASH, etc.
And to those who are asking if there is a kitchen, there is, it's called make
Hi,
This thread is to discuss building CM9 build from source for Atrix. In order to do that, you will need to overlay Atrix specific stuff over the vanilla CM9 code.
There are two overlays possible:
- The official Atrix-dev team repositories
- The official Photon-dev team Atrix repositories
There is more (visible) activity on the photon team than the Atrix team right now so personally I am using the Photon team's Atrix repositories. In order to use the Photon repo you might have to edit olympus-vendor-blobs.mk in vendor/motorola/olympus. It has a few sunfire dependencies that will need to be changed to olympus. I submitted a pull request to the photon dev team, so those changed might be merged in sometime soon
Attaching two scripts that you can use in android/system to overlay vanilla CM9 code for Atrix: one for the Atrix-dev-team overlay, and another for the Photon-dev-team. Both build cleanly without issues as of this time.
I built the kangs but havent tested yet. Will test when I get home and back up my CM7
I used the build instructions here and made minor changes: http://forum.xda-developers.com/showpost.php?p=21077425&postcount=1
t.s.eliot said:
Strike one on a CM9 attempt.
I didn't get the changes quite right in LockPatternKeyguardView.java.
"frameworks/base/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java:452: updateScreen(com.android.internal.policy.impl.LockPatternKeyguardView.Mode,boolean) in com.android.internal.policy.impl.LockPatternKeyguardView cannot be applied to (com.android.internal.policy.impl.LockPatternKeyguardView.Mode)
updateScreen(mMode);
^
frameworks/base/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java:1029: cannot find symbol
make: *** [out/target/common/obj/APPS/Settings_intermediates/classes-full-debug.jar] Error 41
make: *** Waiting for unfinished jobs....
symbol : variable mLockscreenDisableOnSecurity
location: class com.android.internal.policy.impl.LockPatternKeyguardView
if (mLockscreenDisableOnSecurity && isSecure() && (usingLockPattern || usingLockFinger) || (simState == IccCard.State.PIN_REQUIRED)) {
"
Click to expand...
Click to collapse
Copying over from the CM7 source build thread...
Fingerprint needs to be properly ported. Building on cm7 code just gives you a jumbled mess.
I know its a little more setup but you really need proper cm9 source to build correctly. You can overlay the fingerprint code in the device tree and still keep the latest cm9 sync.
Its actually pretty easy to set up.
Repo init cm9githubyatayata... -b ics
Repo sync -j1 (yes j1 cm9 github is taxed)
Pull the vendor and device
Edit cm vendor setup
Build
Sent from my MB855 using XDA App
acerbix said:
Copying over from the CM7 source build thread...
Click to expand...
Click to collapse
I got past that initial problem by just copying the entire source file rather than trying to do the edits.
Currently stuck applying the group of changes from the "packages/apps/Settings" tree. The "SecuritySettings.java" file seems to have a lot of additional stuff for the face unlock, so it is really hard to tell where the FP stuff goes.
No luck so far with the line by line changes. Next attempt will be to try just replacing the files.
CM9 will build with no issue without the FP unlock. Just need to add the "device/motorola/olympus" directory and the olympus proprietaries. The Atrix Dev Team keeps these on their github under the ICS branch.
---------- Post added at 07:28 AM ---------- Previous post was at 07:22 AM ----------
jokersax11 said:
Fingerprint needs to be properly ported. Building on cm7 code just gives you a jumbled mess.
I know its a little more setup but you really need proper cm9 source to build correctly. You can overlay the fingerprint code in the device tree and still keep the latest cm9 sync.
Its actually pretty easy to set up.
Repo init cm9githubyatayata... -b ics
Repo sync -j1 (yes j1 cm9 github is taxed)
Pull the vendor and device
Edit cm vendor setup
Build
Sent from my MB855 using XDA App
Click to expand...
Click to collapse
(I have to preface all of my comments with the observation that I really don't know what I"m doing.)
It seems like we have proper source for building the basic CM9 on the Atrix. There isn't a camera yet, but the Atrix Dev Team's ICS branch seems to have the right files for /device/vendor/motorola/olympus and vendor/motorola/olympus directories. Basic version builds with no issue.
Trying to merge the FP unlock code into the Atrix stuff seems much more challenging. I don't think that replacing the changed files will work, since the Security Settings seem to have some dramatic changes made for the Face Unlock.
(On a side note, two factor biometric authentication would be really cool if it ever gets working....)
When I say proper source I mean your source base. Overlaying ics vendor and device on gingerbread source is not going to make cm9, but cm7 breaks and partially checkouts a few ics branches. If you start with current up to date cm9 source from cyanogenmod then modify you have a better chance.
As far as porting fp use a diff viewer and a syntax highlighting editor. Ideally you should separate then fp class and point to it by adding to the include.
t.s.eliot said:
I got past that initial problem by just copying the entire source file rather than trying to do the edits.
Currently stuck applying the group of changes from the "packages/apps/Settings" tree. The "SecuritySettings.java" file seems to have a lot of additional stuff for the face unlock, so it is really hard to tell where the FP stuff goes.
No luck so far with the line by line changes. Next attempt will be to try just replacing the files.
CM9 will build with no issue without the FP unlock. Just need to add the "device/motorola/olympus" directory and the olympus proprietaries. The Atrix Dev Team keeps these on their github under the ICS branch.
---------- Post added at 07:28 AM ---------- Previous post was at 07:22 AM ----------
(I have to preface all of my comments with the observation that I really don't know what I"m doing.)
It seems like we have proper source for building the basic CM9 on the Atrix. There isn't a camera yet, but the Atrix Dev Team's ICS branch seems to have the right files for /device/vendor/motorola/olympus and vendor/motorola/olympus directories. Basic version builds with no issue.
Trying to merge the FP unlock code into the Atrix stuff seems much more challenging. I don't think that replacing the changed files will work, since the Security Settings seem to have some dramatic changes made for the Face Unlock.
(On a side note, two factor biometric authentication would be really cool if it ever gets working....)
Click to expand...
Click to collapse
Sent from my MB855 using XDA App
ive managed to get cm9 to build several times, even before we started on the cm7+fp, and the older builds worked well with a few of o2x libs (i can put a link with the ones i used as a flashable zip here), the only things not working were obviously camera, and hw acceleration (although maps, gallery and games/benches worked, but slower than on cm7), after that ive tried to build it again with cm9 + atrix dev team cm9/ics sources, which built nice, but on bootup i get a permanent com.android.phone stopped, so one would have to edit some (probably ril related) files or use the ones from photon cm9. As was said already, the cm7 fp code needs a rewrite for cm9, overlaying cm7 over cm9 will just break stuff. additionally there is updated cm9 code from atrix dev team but, since there are no useful proprietary binaries, there is no real need to update the sources
jokersax11 said:
Fingerprint needs to be properly ported. Building on cm7 code just gives you a jumbled mess.
I know its a little more setup but you really need proper cm9 source to build correctly. You can overlay the fingerprint code in the device tree and still keep the latest cm9 sync.
Its actually pretty easy to set up.
Repo init cm9githubyatayata... -b ics
Repo sync -j1 (yes j1 cm9 github is taxed)
Pull the vendor and device
Edit cm vendor setup
Build
Sent from my MB855 using XDA App
Click to expand...
Click to collapse
I'll start porting sometime later this evening after work.
crnkoj said:
ive managed to get cm9 to build several times, even before we started on the cm7+fp, and the older builds worked well with a few of o2x libs (i can put a link with the ones i used as a flashable zip here), the only things not working were obviously camera, and hw acceleration (although maps, gallery and games/benches worked, but slower than on cm7), after that ive tried to build it again with cm9 + atrix dev team cm9/ics sources, which built nice, but on bootup i get a permanent com.android.phone stopped, so one would have to edit some (probably ril related) files or use the ones from photon cm9. As was said already, the cm7 fp code needs a rewrite for cm9, overlaying cm7 over cm9 will just break stuff. additionally there is updated cm9 code from atrix dev team but, since there are no useful proprietary binaries, there is no real need to update the sources
Click to expand...
Click to collapse
Hope we dont need to rewrite the entire FP code - just port it/find the right hooks into app/settings and frameworks/base. Will look at CM9 code later this evening. Will be slow since this is my first time w CM9.
acerbix said:
Hope we dont need to rewrite the entire FP code - just port it/find the right hooks into app/settings and frameworks/base. Will look at CM9 code later this evening. Will be slow since this is my first time w CM9.
Click to expand...
Click to collapse
very nice,
one thing, it seems you know how to go around this stuff and i am very new to this..., so i was wondering if you would have some advice what to read/learn to be able to edit/fix this (c++/java programming?), as like this i cant or dont know how to do code tweaking, if i get a hang of it i would gladly work on it than.
second to that the good thing is fp is actually working in cm9 (the navigation), so the drivers for it work, we jsut in fact need to implement the app as we had to in the cm7 kangs now.
crnkoj said:
very nice,
one thing, it seems you know how to go around this stuff and i am very new to this..., so i was wondering if you would have some advice what to read/learn to be able to edit/fix this (c++/java programming?), as like this i cant or dont know how to do code tweaking, if i get a hang of it i would gladly work on it than.
second to that the good thing is fp is actually working in cm9 (the navigation), so the drivers for it work, we jsut in fact need to implement the app as we had to in the cm7 kangs now.
Click to expand...
Click to collapse
Sure - Sent you a PM on this.
t.s.eliot said:
I got past that initial problem by just copying the entire source file rather than trying to do the edits.
Currently stuck applying the group of changes from the "packages/apps/Settings" tree. The "SecuritySettings.java" file seems to have a lot of additional stuff for the face unlock, so it is really hard to tell where the FP stuff goes.
No luck so far with the line by line changes. Next attempt will be to try just replacing the files.
CM9 will build with no issue without the FP unlock. Just need to add the "device/motorola/olympus" directory and the olympus proprietaries. The Atrix Dev Team keeps these on their github under the ICS branch.
---------- Post added at 07:28 AM ---------- Previous post was at 07:22 AM ----------
(I have to preface all of my comments with the observation that I really don't know what I"m doing.)
It seems like we have proper source for building the basic CM9 on the Atrix. There isn't a camera yet, but the Atrix Dev Team's ICS branch seems to have the right files for /device/vendor/motorola/olympus and vendor/motorola/olympus directories. Basic version builds with no issue.
Trying to merge the FP unlock code into the Atrix stuff seems much more challenging. I don't think that replacing the changed files will work, since the Security Settings seem to have some dramatic changes made for the Face Unlock.
(On a side note, two factor biometric authentication would be really cool if it ever gets working....)
Click to expand...
Click to collapse
Where did you found FP sensor unlock code?
As far as i know, the finger print sensor unlock code is closed source!
(creating+managing fingers activities and the unlock screen activity!)
Sent from my MB860 using XDA App
Paschalis said:
Where did you found FP sensor unlock code?
As far as i know, the finger print sensor unlock code is closed source!
(creating+managing fingers activities and the unlock screen activity!)
Sent from my MB860 using XDA App
Click to expand...
Click to collapse
Checkout the Atrix-Dev-Team github. As far as I know t0dbld wrote all new code for it from the ground up. Which is why it has the added navigation features and multiple finger support.
Learning programming for hacking fun
crnkoj said:
very nice,
one thing, it seems you know how to go around this stuff and i am very new to this..., so i was wondering if you would have some advice what to read/learn to be able to edit/fix this (c++/java programming?), as like this i cant or dont know how to do code tweaking, if i get a hang of it i would gladly work on it than.
second to that the good thing is fp is actually working in cm9 (the navigation), so the drivers for it work, we jsut in fact need to implement the app as we had to in the cm7 kangs now.
Click to expand...
Click to collapse
Well - there were several other PM'd requests for this info - so I thought I'd post the info here.
Disclaimer: I am not a comp-sci grad, just a geek If you have easier ways to learn C or Java please post here.
I am guessing you already know your way around linux, shell prompt/scripting etc. Next thing to learn would be C. I'd say C is easier to learn than C++ since there is a lot less to it (no classes and OO) and most of the native code is in C. If you know C, learning C++ or java is no problem
I learnt both C and java while I was hacking - that gave me the incentive to learn I tried reading books and found them to be either very boring (lots of unnecessary stuff) or confusing.
The books that I used most was K&R C - http://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628 - Supposed to be a beginner's book but can be confusing. I mostly used it as a reference once I learnt C.
This book helped a lot as well: http://www.amazon.com/Data-Structures-Using-Aaron-Tenenbaum/dp/0131997467
The way I learnt C was mostly by asking around, trial and error
An online tutorial: http://crasseux.com/books/ctutorial/
And also: http://www.cprogramming.com/
I never did really learn Java - I hack around, mostly get things wrong, and sometimes get things right
A good Java tutorial - http://docs.oracle.com/javase/tutorial/
My advice, for what its worth - learn C first. That gives you a strong basis for learning other languages. I haven't really spent much time learning Java or C# but have written working programs/tools in both languages
Finally - Google is your friend when you are stuck - which you will be
Best of luck - I will be happy to help as you learn.
Paschalis said:
Where did you found FP sensor unlock code?
As far as i know, the finger print sensor unlock code is closed source!
(creating+managing fingers activities and the unlock screen activity!)
Sent from my MB860 using XDA App
Click to expand...
Click to collapse
The Atrix-Dev team did the work - you can use their weekly build or if you want to build your own, Read this post, and this thread:
http://forum.xda-developers.com/showpost.php?p=21436681&postcount=59
Sorry to say - both kangs failed when loaded on my atrix - they boot up fine, but com.android.phone crashes. must be something to do with the RIL. Will resync /rebuild/retry and see if I have better luck this time
acerbix said:
Sorry to say - both kangs failed when loaded on my atrix - they boot up fine, but com.android.phone crashes. must be something to do with the RIL. Will resync /rebuild/retry and see if I have better luck this time
Click to expand...
Click to collapse
That wont help. It's like this since a week or so. It seems the cm team has updated something that messes with film and is not compatible with the atrix dev team sources anymore. I did a logcat of it but didn't get far.
acerbix said:
The Atrix-Dev team did the work - you can use their weekly build or if you want to build your own, Read this post, and this thread:
http://forum.xda-developers.com/showpost.php?p=21436681&postcount=59
Click to expand...
Click to collapse
I compiled also CM7.1, with ALL fingerprint branches 1-2 weeks ago..
I used fp branches of atrix-dev-team: settings app, and framework base, and all their work in the top of pure CM7.1 source code, but the build result didnt include a fingerprint unlocker..
I will try acerbix's framework base to see..
Btw acerbix, what are the differences of your framework base, and framework base of the atrix-dev-team fingerprint branch?
Paschalis said:
I compiled also CM7.1, with ALL fingerprint branches 1-2 weeks ago..
I used fp branches of atrix-dev-team: settings app, and framework base, and all their work in the top of pure CM7.1 source code, but the build result didnt include a fingerprint unlocker..
I will try acerbix's framework base to see..
Btw acerbix, what are the differences of your framework base, and framework base of the atrix-dev-team fingerprint branch?
Click to expand...
Click to collapse
The Atrix-Dev-Teams's frameworks/base had deprecated files that haven't been updated since December. We found that some of the non-atrix related upstream code from CM had changed, so this was causing issues with FP unlocker. Instead of using the FP branch files, we ended up manually merging or copying the updated Atrix-Dev-Team stuff on top of the vanilla CM7.2 source for frameworks/base. The atrix related stuff is exactly the same, it's just the underyling CM7 code that is different from what is on the dev team's github. Checkout the CM7 build thread for more details and workarounds.
ghost_og said:
The Atrix-Dev-Teams's frameworks/base had deprecated files that haven't been updated since December. We found that some of the non-atrix related upstream code from CM had changed, so this was causing issues with FP unlocker. Instead of using the FP branch files, we ended up manually merging or copying the updated Atrix-Dev-Team stuff on top of the vanilla CM7.2 source for frameworks/base. The atrix related stuff is exactly the same, it's just the underyling CM7 code that is different from what is on the dev team's github. Checkout the CM7 build thread for more details and workarounds.
Click to expand...
Click to collapse
Ghost_og is correct. We built this on CM7.2 codebase by maually merging the Atrix-dev team's changes to the CM7.2 files. Without the merge, CM7.2 the Atrix-dev-team overlays will not compile.
Paschalis said:
I compiled also CM7.1, with ALL fingerprint branches 1-2 weeks ago..
I used fp branches of atrix-dev-team: settings app, and framework base, and all their work in the top of pure CM7.1 source code, but the build result didnt include a fingerprint unlocker..
I will try acerbix's framework base to see..
Btw acerbix, what are the differences of your framework base, and framework base of the atrix-dev-team fingerprint branch?
Click to expand...
Click to collapse
If you want to compile 7.1, you dont need my framework/base. Use it only if you are pulling CM7.2 code and overlaying Atrix-dev changes on it.
I have decided to rework the thread to ovoid any confusion as the intent of posting this thread was to ask questions about compiling custom Roms from AOSP source that someone like myself who gained their development experience on other devices that building from pure AOSP code was not an option and are not as familiar working with AOSP. In the past my own experience comes from using and modifying for example the Cyanogenmod source so after attempting to now base my Rom on AOSP this time around with Lollipop have run into a few unfamiliar differences. As each question or topic is addressed I will update the Op. The hope is not only will I find solutions or answers to my own questions but that others in the same position will also be able to find use of the discussions posted in this thread.
Compiling the AOSP source into a format that can be safely flashed using a custom recovery. This was a 3 part question the first was just simply how to compile AOSP in a format other then .img files that can be flashed using a custom recovery without the need of flashing through fastboot or needing to use the adb sideload option.
1, Compiling AOSP into the for of an update.zip.
This was answered in short by know.patience by suggesting to use the “make otapackage” command in place of "make" to start the build. Was also made aware that a few modifications would need to be made to avoid producing an update package that does not use the new block format but instead the old style zips we are most used to seeing.
2, Now can create an update.zip using the “make otapackage” command ran into an issue that by flashing the update.zip produced would in the process replace the custom recovery used to flash with the Nexus Stock recovery. This was answered by Lethargy who suggested and provided a Link for the following commit.
For getting rid of the AOSP recovery:
https://github.com/Lethargy/android_build/commit/48521e167c642db76c9d4f52b1c63f9abc7f707f
https://github.com/Lethargy/android_build/commit/1d9224bd45ef2b4f5601a157de2bfe3bb1c95558
3, Now can create an update.zip using the “make otapackage” and after applying the above commit are now able to flash the update.zip without replacing the recovery Lethargy also provided links for the following commits.
To get rid of the block-based zip format:
https://github.com/Lethargy/android_build/commit/4d458300d935a3a9d893a590286cb578dcf54db2
You'll also want to make sure you have this commit so it doesn't flash awfully slow in recovery (8~ minutes, but only around 1-2 minutes with this commit):
https://github.com/Lethargy/android_system_extras/commit/52f8d5fc3edfacd112827d0a41516c1dc5f4a468
This one isn't required but you may as well:
https://github.com/Lethargy/android_build/commit/242be9ae4f05e3cb1d39d635cac7147ff904700c
Compiling using the AOSP Master branch vs release branches. In following the directions provided on the Google development site are given the command for downloading the source code using the Master branch. Using the Master branch as apposed to a release branch such as android-5.0.2_r1 or lower have found that the source compiles just fine but have run into one issue and just a general question that a little explanation would be helpful for general understanding of the AOSP Master branch.
The issue is that after flashing a Rom compiled using the Master branch everything in the Rom works as expected other than the radio. I have so far using the same exact vendor blobs as compiling a release branch have not had a signal and baseband version is listed under about phone as unknown.
The general question is that the android version listed compiling a Rom using the Master branch is version 5.0.50.50.50.50. In general I have yet to understand what this version number represents and very little to no information available via the Google Box.
Between the both I now wounder if the Master branch is intended for actual use or if so what changes are required so the baseband version is recognized and radio / Ril will work?
Quick Answer:
Google first commits new code into master and then is later tagged with an update for realease so in generall many things can be broken and the master branch is and not intended to be stable so if building from master expect that things will be broke or buggy.
Compiling Rom and Kernel together. For those of us again used to compiling using say the CM code are now used to compiling the Kernel along with the rest of the code. I know it is easy to just compile the Kernel and include in the device tree but for those of us who would still like the Kernel compiles with the rest of the code there is no information available on the Google Developers site for doing so and there seems to be a few differences as have tried just using the lines used in the CM Hammerhead device repository. I have come across these commits from Cl3Kener that should help. Hate posting other developers code but is on Github so is there for the public at large. So far have only tested as is so will update if finding not all changes are necessary or can be modified.
Inline Kernel Building
https://github.com/OptiPop/device_lge_hammerhead/commit/7de8fd95b6df16cb6311161d5048874d69cf1cb1
https://github.com/OptiPop/device_lge_hammerhead/commit/87768896f4eb8fcd989ce3b8492ca65305513851
https://github.com/OptiPop/device_lge_hammerhead/commit/5460eb3aa76ea5d813f64a3b3bab6ace1be6de68
Adding Pre-Built APK's
Seems Sprint users need a few apk's for updating prl and what not that are included into the Stock release but are not part of the AOSP code. For some reason through vendor or even device have tried adding these apk's into the build. First try I created a sprint vendor section and received a few errors untill learning would need to add sprint into a vendor white list found in build. Will post link to file later. After found the extra "Services.jar" I found in the stock image not found in the aosp compiled Rom did copy into the build but the apk's had not. Looking in the other vendor blobs noticed lge adds "qcrilmsgtunnel.apk" so followed the example and even tried just adding the other spk's into lge expanding the list used for adding in "qcrilmsgtunnel.apk" but still no luck. Also have tried adding through the device files for Hammerhead just to get them into the Rom for testing and still no luck. If this was CM or any other Rom not using pure aosp this would have been a 5 minut project so need to do some aditional homework.
Again think this thread could be a good resource for developers who are new to building their Roms around AOSP so wanted to include everything I run into during the process of moving away from using a heavily modified CM based code as the base of my Rom to using AOSP in its place so developers who are or in the same process or for those in the future can use as a resource to quickly adjusting. I have been building CM based Roms like Starship for years and after hours of working on other aspects to suddenly be stumped by these small differences between platforms can be very frustrating.
to the OP:
answer to your first question comes in two parts.
a) use 'make -j# otapackage' will generate a zip that is flashable in custom recovery.
b) if you plan on adding other files after the zip is made, you will need this info here:
https://github.com/android/platform_build/commit/26e6619c37e294fe2ee63aaa759e0ac861775ce8
There are some modifications needed to generate the OG zip files instead of the new "block" format.
Google hasn't released the 5.0.1 image for the N5 but that doesn't mean you can't build it and install it yourself. I'm running it and it seems okay to me so far although I'm hardly an expert.
simms22 said:
op.. this section is only for developers, to get work done. if you have questions, they belong in the q&a section. you arent new, you should know this. again, this section is only for developers, mot for the normal xda folk to post questions. you have a q&a section just for asking questions. please, ask a mod to move your thread there.
Click to expand...
Click to collapse
I am building a customized AOSP Rom I am interested in sharing so was looking for help or direction in creating an update zip that can be flashed in a custom recovery like TWRP. I am not used to compiling AOSP and with the help of know.patience in the first reply am now able to compile an update.zip I can flash in TWRP but in doing so it also replaces TWRP with the Stock recovery. I have still been using the .img files to flash personally but am still trying to figure out how to solve the recovery replacement issue. I still have other features I am adding and testing before I would like to post my work but before I get to that point I still need to figure out my recovery replacement issue. Maybe using the words personal use may have been confusing but at the moment until ready I have only been using my work personally but would like to at some point post and share. I also have work that is not AOSP based I am sharing in the Android Development section but I have been building CM and other source based Roms and sharing for years. This is the first device I have been able to build AOSP and still have a few things to figure out before sharing any of my AOSP based work. I am otherwise not sure why you think these are questions for general Q&A.
I started this thread in Android Development as there was only about 4 posts in this section and I see many AOSP based Roms in Android Development who's developers obviously know the answers to my questions so tried to get away posting there in hope one of these developers could help or like in the first response point me in the direction of a commit before the thread was moved by a mod into this section. Do you think someone in the general Q&A section is better equipped to help answer questions about compiling an AOSP based Rom in the form of an update.zip that can be flashed in TWRP without also replacing TWRP with the Stock recovery?? Would also be nice knowing what changes in the code need to be made in compiling an old style update.zip that does not use the new block format. This would be a bonus but overall not %100 needed as instead of moving files around after the code has been compiled have added init.d support and first have all the files I want moved into a staging directory and then form an init,d bash script to move the files during first boot and remove those that are not needed like this example I used in my CM based version of the Rom I am trying to update for AOSP for 5.0.
https://github.com/Starship-Android/android_device_starship-common/blob/cm-11.0/app-update
https://github.com/Starship-Android/android_device_starship-common/blob/cm-11.0/cleanup
I must seriously be underestimating the knowledge and in general the types of questions being asked and answered in the general Q&A section.
Honestly if not for the amount of times thanked I would think this comment was not so much about helping or community but more about someone trying to puff themselves up by trying to appear important by making decisions about what questions are worthy of being asked but judging by the number of times they have been helpful I am thinking its either a case of not reading or understanding the question being asked or my own inability to express my questions in the proper manor. Either way its definitely not about taking up resources in a section with less than 10 total posts. The frustrating part as a community as I like to believe we are all in is that why I worked on other parts in updating my Rom had expected that at least more than one developer out of all the AOSP based Roms posted in the development section would have helped me with this one part. Its not like I am asking how to be a developer just a resource to help with two simple things I am sure I could have figured out and will most likely still figure out without any help. Overall my thoughts behind posting this question was that why I am working to figure out something a bit more time consuming at least more than one person would be helpful enough to copy and past a commit.
XDA is weird in that with other devices all the developers would join a team and start a shared group of repository’s for one another to use in trying to make the best possible experience and options for everyone. For example in the op I posted an example of hours of work I did showing what libraries are needed by one another just so others could use it also in trying to port as much as possible for in that case the Galaxy Mini. Then with other devices like seems to be the case with the N5 its all about competition and what I am starting to call the smartest person in the room syndrome. Its just a shame there are only 5 maybe 6 threads posted in this section and I think that says allot about the community in general. So many good things could come about if we just tried to be helpful and pull as much knowledge together as we could. Anyhow think its time for ending this rant.
chairshot215 said:
compiling an AOSP based Rom in the form of an update.zip that can be flashed in TWRP without also replacing TWRP with the Stock recovery?? Would also be nice knowing what changes in the code need to be made in compiling an old style update.zip that does not use the new block format.
Click to expand...
Click to collapse
To get rid of the block-based zip format: https://github.com/Lethargy/android_build/commit/4d458300d935a3a9d893a590286cb578dcf54db2
You'll also want to make sure you have this commit so it doesn't flash awfully slow in recovery (8~ minutes, but only around 1-2 minutes with this commit): https://github.com/Lethargy/android_system_extras/commit/52f8d5fc3edfacd112827d0a41516c1dc5f4a468
This one isn't required but you may as well: https://github.com/Lethargy/android_build/commit/242be9ae4f05e3cb1d39d635cac7147ff904700c
For getting rid of the AOSP recovery: https://github.com/Lethargy/android_build/commit/48521e167c642db76c9d4f52b1c63f9abc7f707f then https://github.com/Lethargy/android_build/commit/1d9224bd45ef2b4f5601a157de2bfe3bb1c95558
Lethargy said:
To get rid of the block-based zip format: https://github.com/Lethargy/android_build/commit/4d458300d935a3a9d893a590286cb578dcf54db2
You'll also want to make sure you have this commit so it doesn't flash awfully slow in recovery (8~ minutes, but only around 1-2 minutes with this commit): https://github.com/Lethargy/android_system_extras/commit/52f8d5fc3edfacd112827d0a41516c1dc5f4a468
This one isn't required but you may as well: https://github.com/Lethargy/android_build/commit/242be9ae4f05e3cb1d39d635cac7147ff904700c
For getting rid of the AOSP recovery: https://github.com/Lethargy/android_build/commit/48521e167c642db76c9d4f52b1c63f9abc7f707f then https://github.com/Lethargy/android_build/commit/1d9224bd45ef2b4f5601a157de2bfe3bb1c95558
Click to expand...
Click to collapse
Thank you this is well beyond what I was looking for and don’t worry I make it a point not to send out PM's with questions that can be helpful for others as well. Otherwise would have blown up the AOSP Rom posters in development but thanks for the information.
chairshot215 said:
.. and don’t worry I make it a point not to send out PM's with questions that can be helpful for others as well..
Click to expand...
Click to collapse
If you mean "I'll probably ignore you if you try asking for support over PM.", that's part of my forum signature.
If you need anything else feel free to @mention me in a thread, though.
I reworked the Op to avoid confusion as Mods have been moving the thread around into different sections. I personalty believe these questions are more geared towered development than general Q&A but at least at the moment I appear to be wrong about that. Never know though as in the past one day one of the mods may decide to move the thread back into its intended location but until then I guess these topics will be of better use to general users than developers.
chairshot215 said:
I reworked the Op to avoid confusion as Mods have been moving the thread around into different sections. I personalty believe these questions are more geared towered development than general Q&A but at least at the moment I appear to be wrong about that. Never know though as in the past one day one of the mods may decide to move the thread back into its intended location but until then I guess these topics will be of better use to general users than developers.
Click to expand...
Click to collapse
You should include the other commit (https://github.com/Lethargy/android_build/commit/1d9224bd45ef2b4f5601a157de2bfe3bb1c95558) which fixes building since the first one results in "IndentationError: unexpected indent".
Lethargy said:
You should include the other commit (https://github.com/Lethargy/android_build/commit/1d9224bd45ef2b4f5601a157de2bfe3bb1c95558) which fixes building since the first one results in "IndentationError: unexpected indent".
Click to expand...
Click to collapse
Thanks for the heads up, when testing these I also cherry picked a few other things that looked related. Have to double check but may have forked the repository’s from you so would receive credit if anyone decided to look over my repository’s. Well overall my personal Github has been pretty bare as in the past most work was done on more obscure Virgin Mobile devices with only a few developers so we would pretty much create an organization for all the developers to use.
https://github.com/MTDEV-CM7
https://github.com/MTDEV-CM10
https://github.com/vmobi-triumph
https://github.com/MTDEV-KERNEL
https://github.com/MTDEV-MIUIv4
https://github.com/MTCM9
https://github.com/MTCM10
https://github.com/HTCCM9
https://github.com/HTCCM10
https://github.com/HTCStarShip
https://github.com/HTCUbuntu
https://github.com/vmobi-shooter
https://github.com/vmobi-gogh
These days have been keeping everything under Starship-Android.
https://github.com/Starship-Android
Have 2 other members listed who I had worked with in the past but has otherwise been a solo organization with one of the other members who decided on going with the Moto X and Verizon over the N5 and showed little interest in his 2012 version of the N7 as it was intended for being a Nexus only device line up and the second being my Kernel Guru from a few devices back who mainly joined to help me out with a few things but ultimately what I am getting around to is this is the first time working %100 solo. Have to say without having anyone to bounce off ideas and share findings with things definitely move much slower and take a bit of getting used to. Is also the reason for starting threads like this. Most of this stuff looking in the developer section appeared to be pretty common knowledge but having never worked from pure AOSP before was slowing down other development for about a week just to figure out what seemed like half the community had already known and with what probably took at the most 5 or 10 minutes of copying and pasting commits probably saved me a weekend of sifting through github and testing. I hope by creating a thread like this will be able to do the same for others.
Hi guys,
Anyone manage to fix RIL problems with master branch?
I also build AOSP roms so for sure i will hangout here
Sent from my AOSP on HammerHead using XDA Free mobile app
malcho said:
Hi guys,
Anyone manage to fix RIL problems with master branch?
I also build AOSP roms so for sure i will hangout here
Sent from my AOSP on HammerHead using XDA Free mobile app
Click to expand...
Click to collapse
Never tried.
ODEXED
i am successfully build cm12 with fully odexed. now i like to odex some prebuilt apk also but LOCAL_DEX_PREOPT=true not odexing prebuilt apk. can somebody help me? already DEX_PREOPT=true working fine.
soorajj said:
i am successfully build cm12 with fully odexed. now i like to odex some prebuilt apk also but LOCAL_DEX_PREOPT=true not odexing prebuilt apk. can somebody help me? already DEX_PREOPT=true working fine.
Click to expand...
Click to collapse
Why do you need to odex a prebuilt apk?
Not sure if what you want is even possible.
But if odexing your prebuilt apk is necessary then why not odex it then include the .odex with the prebuilt?
Lethargy said:
Why do you need to odex a prebuilt apk?
Not sure if what you want is even possible.
But if odexing your prebuilt apk is necessary then why not odex it then include the .odex with the prebuilt?
Click to expand...
Click to collapse
suppose i want to odex gapps. how to?
malcho said:
Hi guys,
Anyone manage to fix RIL problems with master branch?
I also build AOSP roms so for sure i will hangout here
Sent from my AOSP on HammerHead using XDA Free mobile app
Click to expand...
Click to collapse
Nothing so far, I downloaded the master and 5.0.2_r1 branches and have loaded both in meld for looking over differences but have not yet identified from the dif between the 2 branches that is responsible for ril working in release branch but not master. Still have allot to look over though still. Still have not found a decent explanation of the master branch to know if its recommended to build from but still just for Knowledge sake am interested in knowing. At first thought maybe apn's but not so sure with baseband also listed as unknown from my Master branch builds.
chairshot215 said:
Nothing so far, I downloaded the master and 5.0.2_r1 branches and have loaded both in meld for looking over differences but have not yet identified from the dif between the 2 branches that is responsible for ril working in release branch but not master. Still have allot to look over though still. Still have not found a decent explanation of the master branch to know if its recommended to build from but still just for Knowledge sake am interested in knowing. At first thought maybe apn's but not so sure with baseband also listed as unknown from my Master branch builds.
Click to expand...
Click to collapse
As far as i know all the patches goes to master branch then from this branch ,if they are ok,is distributed to lower branches.I also didn't find info why is named as 5.0.50.50.I will try to investigate this ril problem
malcho said:
As far as i know all the patches goes to master branch then from this branch ,if they are ok,is distributed to lower branches.I also didn't find info why is named as 5.0.50.50.I will try to investigate this ril problem
Click to expand...
Click to collapse
Thanks will definitely update the Op with any findings. Was very surprised to find the thread again as it has now been moved 4 times by 4 different Mods, some bounce it to general Q&A and then is bounced back here by another. I understand its not comprised of the most advanced development topics but with that said is still way more advanced than the topics being discussed by general users over in the general Q&A section. I had just thought it would be a nice one stop place for learning the basics of AOSP development. With the constant moving and scolding messages being received one would think the threads very existence is up there with crossing the streams and threatens the existence of Android development.
@chairshot215 Thank you for starting this thread. Thank you @Lethargy for all of your insight. I like to do my own perosnal builds every once in a while for my nexus devices. What I have observed over the years is that the Master Branch will sometimes have funky version numbers like you have described. One thing to consider is what @malcho mentioned. If all commits indeed go there first before the respective branches(although this may not entirely be the case), then it is likely that some things may be broken in the master branch from time to time, hence the ril problem. I think with the galaxy nexus I ended up running into issues from time to time with the master branch, and from there learned to build for specific branches/tags. For instance, there are times when items within a specific branch will be ahead of master in some areas and behind it in others, as in this link to platform_build for lollipop release https://github.com/android/platform_build/tree/lollipop-release. So with that, it is probably in our best interests to just use specific branches.
Milly7 said:
@chairshot215 Thank you for starting this thread. Thank you @Lethargy for all of your insight. I like to do my own perosnal builds every once in a while for my nexus devices. What I have observed over the years is that the Master Branch will sometimes have funky version numbers like you have described. One thing to consider is what @malcho mentioned. If all commits indeed go there first before the respective branches(although this may not entirely be the case), then it is likely that some things may be broken in the master branch from time to time, hence the ril problem. I think with the galaxy nexus I ended up running into issues from time to time with the master branch, and from there learned to build for specific branches/tags. For instance, there are times when items within a specific branch will be ahead of master in some areas and behind it in others, as in this link to platform_build for lollipop release https://github.com/android/platform_build/tree/lollipop-release. So with that, it is probably in our best interests to just use specific branches.
Click to expand...
Click to collapse
Thanks for the response and have definitely learned its better building from branches with a release tag. Still very curious why and how the branches are structured so thanks for the explanations.
Way totally off topic for the thread but landed a brand new SSD and decided to install everything fresh. After everything was set back up and wanted to start building I ran my usual,
-j'grep 'processor' /proc/cpuinfo | wc -l'
a very old habit before fully understanding what number to use after -j so used grep to figure it out based on Googles recommendation. The command did not work so removed the grep and just made it -j4 but also with 0 success. At first just figued I missed somthing setting everything back up and "make" is just not working but wrong again as running "make" command without -j of any number works just fine.
Also tried this with CM12 as I am doing 2 versions of my Starship Rom. One from AOSP and one using CM. Figured AOSP would be special for Nexus users why also having a version for CM I can make most changes by adding a Starship Device Tree could easily port the Rom to any device running CM supported or not.
https://github.com/Starship-Android/android_device_starship-common/tree/cm-12.0
Also found why compiling CM that -j also results in an error
Invalid lunch combo: cm_hammerhead--j4
No such item in brunch menu. Try 'breakfast'
So far have not found anything using the Google Box so figured may as well ask. If have not figured out by now I have no shame in asking questions. Oddly enough that is for things that are probably relatively simple. Took a better part of a week figuring out how to start CM using the Now Launcher and setting up init.d bash scripts for moving around and replacing libs after learning the Gapps package includes libs that will not work so the solution needed to be that the CM Gapps package libs needed to be replaced with either stock or libs pulled after installing the Now Launcher from the Play Store after flashing Gapps and the Rom staring. Also then what if user updates and wipes the system partition after the new and updated llibs have been moved into place. Anyhow point of story is things like this I will just figure out without bothering anyone but for the cant believe I need to stop what I am working on to figure out something most likely very simple and can be answered with very little time spent I have no shame in just asking. Not that someone else’s time is less important but like I have mentioned before is frustrating just after spending hours or days figuring out something asked in dozens of threads is just frustrating getting caught up or loosing momentum and thought processes over something so simple there are little resources available. Also I assume most devs have the same experience when you have an idea or thought behind resolving an issue that once you stop and change direction it just sometimes never comes back and that short time you had I guess can be called an epiphany is gone once going back. Otherwise thats how I justify asking dumb ars questions.