Greasemonkey is Here - G1 Android Development

Re: OilCan
I have recently stumbled across Oilcan, the greasemonkey style browser for android http://www.jsharkey.org/blog/. I've tried it and the default stuff is all very impressive, and to be honest i wanna use it. But its not fully finished, and the Dev has just been employed by google and seems to have abadoned the project. The browser is basic, it appears to be based on an old version of the google browser.
Whats the future of this application? since it was a proof of concept. The only futures i can see are;
he continues development by himself - unlikely
he adds this functionailty nativily to the google browser - unlikely as he's very smart and likely to be on other more interesting projects
The community take up the slack (thats us) use he's code and create a super brower - what i'd quite like to happen. the source is available, and it appears to be quite simple. I think that if it was to be patched into the jf1.41 multitouch brower it would be a killer application.
http://code.google.com/p/android-cookbook/source/browse/#svn/trunk/OilCan?state=closed
Whatcha all think?
DarkFlare

anyone considering this? these are pretty cool features.

well personally im studying the oilcan code, mostly for the user scripts aspect and it seems fairly easy to implement, and so im hacking away the other features to begin with as i dont see much of a use for filling in forms using my android contacts or scanning barcodes and getting there values. So basically im removing the intent code.
My plan is to edit the main browser to add in the userscript functionailty, but im new to the android platform so it could take a while. I can program in java though which gives me a good head start.
Anyone else interested in helping out?

I just found a site where someone is developing user scripts for the Android browser.
At the moment its only a proof of concept but after watching the video is coming along very nicely
http://oilcan.jsharkey.org/
Hopefully it wont be too long before we can get our hands on it

You alreday can get your hands on it.
http://www.jsharkey.org/blog/2008/12/15/oilcan-greasemonkey-on-steroids-for-android/
APK: http://www.jsharkey.org/downloads/OilCan-100.apk

They got some cool scripts on their website that I would like to use but do they work with the g1? It says some will but the top says scripts for firefox. Also... how would we apply the scripts on the g1? Does the app look for them on the sd or what?
EDIT: Nevermind it says you can load them from the sd or browse to them yourself

i guess i should change it from "coming" to "here"
thanks mannyb

Custom Scripts
EDIT: He figured it out between page refreshs

He released this like a month ago before he went to work for google. It was a nice proof of concept but he was done working on it and was asking for someone to take it over.

atrackdog reported to me that someone has OilCan 2.0
I have not found a dload link yet...

It would be nice if someone picked up where he left off, because OilCan 1.0 is buggy as hell. I'd like to see it built into Steel.

Related

Cyanogen shut down by Google

I cant believe this. Cyanogen just twittered this:
Sorry everyone, CyanogenMod in it's current state is done. I am violating Google's license by redistributing their applications.
More at: http://twitter.com/cyanogen
(Mods I know it should belong in General but the developer thread should know about it then the other ones. Forgive me)
You are taking it all wrong. He hasn't been shut down, wont be shut down, etc. Read the original statement. As long as you any apps that arent part of the source code repository you are not violating anything as far as google is concerned.
With a high-quality open platform in hand, we then returned to our goal of making our services available on users' phones. That's why we developed Android apps for many of our services like YouTube, Gmail, Google Voice, and so on. These apps are Google's way of benefiting from Android in the same way that any other developer can, but the apps are not part of the Android platform itself. We make some of these apps available to users of any Android-powered device via Android Market, and others are pre-installed on some phones through business deals. Either way, these apps aren't open source, and that's why they aren't included in the Android source code repository. Unauthorized distribution of this software harms us just like it would any other business, even if it's done with the best of intentions.
I hope that clears up some of the confusion around Google's apps for Android. We always love seeing novel uses of Android, including custom Android builds from developers who see a need. I look forward to seeing what comes next!
So lets please stop being chicken little and get on with the dev work. Not including certain apps is not going to make or break any rom as each user should be able to find the apps on their own.
The sky is not falling although my home did get flooded in atlanta last week.
Johnny Blaze said:
You are taking it all wrong. He hasn't been shut down, wont be shut down, etc. Read the original statement. As long as you any apps that arent part of the source code repository you are not violating anything as far as google is concerned.
With a high-quality open platform in hand, we then returned to our goal of making our services available on users' phones. That's why we developed Android apps for many of our services like YouTube, Gmail, Google Voice, and so on. These apps are Google's way of benefiting from Android in the same way that any other developer can, but the apps are not part of the Android platform itself. We make some of these apps available to users of any Android-powered device via Android Market, and others are pre-installed on some phones through business deals. Either way, these apps aren't open source, and that's why they aren't included in the Android source code repository. Unauthorized distribution of this software harms us just like it would any other business, even if it's done with the best of intentions.
I hope that clears up some of the confusion around Google's apps for Android. We always love seeing novel uses of Android, including custom Android builds from developers who see a need. I look forward to seeing what comes next!
So lets please stop being chicken little and get on with the dev work. Not including certain apps is not going to make or break any rom as each user should be able to find the apps on their own.
The sky is not falling although my home did get flooded in atlanta last week.
Click to expand...
Click to collapse
You are aware of that the phone relies on ALOT on framework and other files. Have you tried to delete any of the Google Apps? The phone doesnt work without them. Also, open source replacements arent going to be pulled out of the air magically. Its going to take ALOT of work.
Are you sad all your stuff was ruined?
Johnny Blaze said:
You are taking it all wrong. He hasn't been shut down, wont be shut down, etc. Read the original statement. As long as you any apps that arent part of the source code repository you are not violating anything as far as google is concerned.
With a high-quality open platform in hand, we then returned to our goal of making our services available on users' phones. That's why we developed Android apps for many of our services like YouTube, Gmail, Google Voice, and so on. These apps are Google's way of benefiting from Android in the same way that any other developer can, but the apps are not part of the Android platform itself. We make some of these apps available to users of any Android-powered device via Android Market, and others are pre-installed on some phones through business deals. Either way, these apps aren't open source, and that's why they aren't included in the Android source code repository. Unauthorized distribution of this software harms us just like it would any other business, even if it's done with the best of intentions.
I hope that clears up some of the confusion around Google's apps for Android. We always love seeing novel uses of Android, including custom Android builds from developers who see a need. I look forward to seeing what comes next!
So lets please stop being chicken little and get on with the dev work. Not including certain apps is not going to make or break any rom as each user should be able to find the apps on their own.
The sky is not falling although my home did get flooded in atlanta last week.
Click to expand...
Click to collapse
sure its not truly legal but i think its the way they have gone about it- and in the spirit of open source i fail to see how it affects them.....i thought their business plan was based on more people using the net, more people using their apps, and more people using google to search..... so surely he is creating more business for them?.....
I don't like where this is heading......
jealous
if i was google id be going mad too, seeing the new youtube and market on phones and its not supposed to be out yet.
maybe they will offer him a job
John Player said:
if i was google id be going mad too, seeing the new youtube and market on phones and its not supposed to be out yet.
maybe they will offer him a job
Click to expand...
Click to collapse
I totally agree and I think those apps were the straw that broke the camels back...
Its all crap no one not even google can stop someone developing a rom with copyrighted
material on the internet.there are many ways to cover this up without being traced
Anyway what's stopping a simple script downloading google apps onto the device on boot? Nothing as android as source is open
spyz88 said:
You are aware of that the phone relies on ALOT on framework and other files. Have you tried to delete any of the Google Apps? The phone doesnt work without them. Also, open source replacements arent going to be pulled out of the air magically. Its going to take ALOT of work.
Are you sad all your stuff was ruined?
Click to expand...
Click to collapse
The frameworks, etc and files needed to run the os are part of what you can get from the repository. I set up my mac to cook my own roms so I do know whats there and what isnt.
I bootcamped back into vista, loaded adb explorer and removed market, gmail, youtube, and maps. My phone does work without them. If you need gmail then yes there would be an issue but only reason i have gmail is that it was required for me to get my G1 when it came out. Try it for yourself. You will be a lot less functional but your phone will still work.
Besides Google is kinda in a shaky spot. Win mo although not great is established along with RIM os, and Iphone so Android is still in the growing stage and to attract the business users it has to have no hiccups or possible easy exploits so I do believe they will do a lot of barking but very little bite. Probably if Cyanogen wouldnt have made it on engadget, yahoo, msn probably wouldve been left alone.
There are still better things to do with the os. The real dev work is what cyanogen and others do with the kernel, memory management, etc not the apps included with the rom.
PROJECT:OpenAndroid
http://forum.xda-developers.com/showthread.php?t=564263 We are attempting to as a community replace all of google's parts with opensourced programs developed and written ourselves. If you have any thoughts or suggestions please let us know.
The issue is that right now if you want to create a useful ROM you need to include the Market app at a minimum.
Sure Gmail is easy enough to replace, and Maps can be downloaded from the Market. But wait, you can't download it from the Market because you don't have a Market app.
So until there is an open source way to access the Market the ROM development community for Android pretty much hosed.
Hopefully this is not heading to where I think it is heading to... Or I might just jump on the next iPhone and say bye bye to Google.
Actually just a though. Just make a way to for the end user to back the google apps and then after a flash to reload them back on after install. That is not violating their stoopid terms then lol. And then for any updates just providing where you can get the updated stuff directly from google. Like where to get market 1.6 and so forth just right from google. Again no violating anything google. Defiantly a sad day for android. Since they don't let tethering , more then 3 home, not having file system access (like win mo), and no ads (adfree) lol, and many of the other great things with out root. If Google sees this thru I am going to go back to Apple iPhone and to hell with Android. Google will loose alot of users out of this I think.
Just write apps to tie you in with Hotmail / contacts / calendaring / outlook and leave GMail totally out of it.... Google will change their tune about the usage of 'their' apps. Because really they get the most from it by keeping you tied in to their online services.
Wow! I dont even know what to think. It must be a cold day in hell. I really hope that Cyanogen and the devs here @xda can come up with a way around this. And to think that Cyanogen was making some serious headway with the development of his Roms, website, and YouTube channel. I am more or less in shock right now. I have all the faith in the world that you guys will come through this still developing the best the Android community has to offer. Just be patient...
And seriously?...you would switch to Iphone? Who the #UCK wants one of those pieces of $H1T.
NOT ME!!
I highly doubt google would actually follow through and take legal action on something like this. It would be a bad business move all around. I would expect the C&D are more about pleasing manufactures and carriers more then google being worried about their own code, in which case who can blame them as they are at a point where they desperately need to attract these companies in order to ensure the future of android.
Just received a pretty interesting article via Twitter.
http://bit.ly/2NjYST
Not my article, and not necessarily my opinion, but it's a good read.
Arrgghh..google..
Bubye google apps..lets just forget them!
Modified android is much important then google apps itself!!
Google, you are very ridicoulous!! You make your app avaliable free for other system, but for your own system? Even now you make gmail support exchange..
I think i hate google as much as i hate apple..lol..
spyz88 said:
You are aware of that the phone relies on ALOT on framework and other files. Have you tried to delete any of the Google Apps? The phone doesnt work without them. Also, open source replacements arent going to be pulled out of the air magically. Its going to take ALOT of work.
Are you sad all your stuff was ruined?
Click to expand...
Click to collapse
I beg to differ. The phone works without the google apps. I know. Thats what I had when I first got my HTC Magic 32A. For some reason, HTC did not include ANY of Google's stuff in it.
So, no market, no gmail, no maps, no youtube. It was boring as hell. but i still can do pretty much all i needed to do on it (emails, txt and calls).
Just had to imap/pop3 sync gmail using the HTC email client. One thing I hated was the fact that I need to rely on SlideME for my apps. SlideMe(at the time) had very limited apps.
So is including the market breaking the rules, if it is can someone setup a webpage alternative to download apps then just not include google stuff. Open street maps has better maps anyway so i use rmaps, google mail well plenty of email clients about. If we wait i am syre there will be alternative apps for the other google stuff.
Or, oh, I dunno, how about adding a default bookmark android-leak or something and let users download pirated apps? "To bypass the Google Market"? LOL... Basically Google wants us to know that including their apps for free (as in Cyanogen roms) is just like pirating apps, so we are the bad guys already anyway.
I really hope Google will not follow up with the C&D and further spread fear all around.
We are all Google's pawns by using Google apps, let them see our email, see our location, store our search preferences etc to "return better result for your searches" or really, target marketing. When we stop using Google apps (, and move our business to, gasp, Hotmail), they will like it better?
RotoRooted said:
And seriously?...you would switch to Iphone? Who the #UCK wants one of those pieces of $H1T.
NOT ME!!
Click to expand...
Click to collapse
Just saying I'm not happy with the news and I'm going to vote with my money when the next device comes along. I thought Google was the "good guy", but now I think Apple and Google both seem like they think they are the gods of the world anyway.

Miren Browser SECURITY concern

Hi!
I got myself in a real predicament here. I just love this Miren browser (v1.2) from the market. It's actually so unbelievably good, I feel as though I need to make the following request to the community before A LOT of others and myself are totally hooked to it.
So here's the problem, Miren is relatively unknown and from China. Now let's be clear here: I don't have anything against china but I think this does merit that someone takes this thing apart and take a good look at it before we all start punching in our passwords by the thousands. I have fruitlessly spent hours searching online for any info on this browsers integrity. As I unfortunately don't know myself how to e.g. wireshark the phone and check for security flaws, I had hoped some smart linux person here is willing to invest some time and check it out. Thank you
thats a valid concern, the only way to be really sure is
1) find an open source browser and build it yourself
2) go through the code looking for back-doors/root kits/triggers/trojan/keylogger etc
Some choices:
-Firefox mobile
-Default android browser
-Chrome (coming soon I hope)
I see your concern but where do you stop?
What about those "free" apps people mindlessly install? Some have been proven to send data behind the scenes with "rights" loopholes.
Plus, I see you say its "not that its from China..." but... you do seem to have a concern that it's from "China", why not pick on Dolphin Browser?
Good point mentioned by everyone.
Once you have doubt then just stop using it.
You can try Xscope 6 version. It's fast...
Actually there are so many apps that leaking your information regardless if the apps are from China or not. I think all the users should pay attention on the security issues when using smart phone with easy internet access.

Time for a New Non-Profit Browser Project

Mozilla has lost its way. Technically it's not even a non-profit any longer, and it no longer behaves like it. Capriciousness and indifference to developer concerns is rampant.
For me, the change in the nature of the file browser is the straw which broke the camel's back. The file name now spills uncontrollably over the page, disfiguring any layout which surrounds it. Just as it does in Google's browser.
The direction Google is forcing the web into is contrary to the original vision of it as designed by Tim Berners-Lee. In response to user ire, the Mozilla team again and again blames Google, alleging that Google's design is "ultracompetitive" and that they "have to catch up" to them. Yet if you read their blogs they make no secret that the new standards and design choices are being made in collaboration with Google (HTML 5 is apparently the brainchild of a pair hailing from Google and Mozilla, respectively... or at least that's what they want you to think).
For me, the burden that the file browser now imposes is something that's just not practical from an implementation standpoint. With this change, web browser form design no longer even competitive to XWindow. The whole thing seems like it was dreamed up by one of the jerks on a reality talent contest... and a takeover by one of those very jerks seems to be the most probable cause of this particular miscarriage of philosophy, just as happened at Microsoft with XBox One last month. But I'm not about to clamor for a figurehead's head: just as at MS, something is rotten at Mozilla. We need a new seed to sprout that can take us into the future. A seed that will respect the intelligence of the people who have to now placed their faith in Mozilla, only to be told by the organization they exalted that they aren't as smart as it. This new organization, if it is not to suffer the same fate which hangs over Mozilla, will do right what Mozilla heedlessly does wrong, including:
respect for user freedom and competence.
avoids placing undue burdens on the designer
avoids obfusticating its code with impenetrable, bug-ridden COMs.
is open source.
In short, it'll be friendly and it'll actually listen to people who aren't ready to fork over their whole lives to an endless reinvention of the wheel like we are seeing at Mozilla.
Free browsers are nice and all, but they just aren't working out. We're getting what we deserve for letting Google take everything over and letting Mozilla get by without relying exclusively on user donations. The result is a corrupted organization and now, a faulty product. I'm prepared to pay a little for a good browser that respects common sense design practicalities. What about the rest of you, will you sacrifice the price of a couple large pizzas for a decent web browser minus the drama?
I've done my bit to try to change Mozilla's downward trajectory. I went on their forums and their chats and told them, this stuff doesn't work. They're making things hard. Their response was that they didn't really give two cents for the opinion of anyone who wasn't down in the trenches with them writing code in their incredibly complicated wrapper context. Like you, I've got other priorities. There are people out there with more experience and, quite frankly, better math skill that can do this job and get a lot more out of it. I want to give them the chance to do just that. Tired of the betrayals, just want to download my browser updates and be done with it... is that too much to ask? I don't think it is, and I hope you don't, either.
I've never tried to write code for a browser before, never even researched it. I'd be happy to help, but I'd like to see a mock GUI first to see how clean of a browser you're shooting for. Mock one up?
t3hcurs3 said:
I've never tried to write code for a browser before, never even researched it. I'd be happy to help, but I'd like to see a mock GUI first to see how clean of a browser you're shooting for. Mock one up?
Click to expand...
Click to collapse
Actually I was looking around and it seems like there is this browser called NetSurf which may be doing everything right. There's no build for Windows or for mobile, which is an issue, but its libraries are in C which offers little room for obfustication a la C++. Should be portable to Java... I think if there was a windows build this browser could take off.
Although I don't really need Windows anymore. I'd just as well settle for a mobile version. There's also Amaya, but it has a reputation for poor ease of use and excessive minimalism. And there's Dillo which is stuck in a timewarp.
There is a question of where they're getting their funding from. However, they seem to be far enough along that if they did start to pull crap it would be easy enough to fork, and really I don't think the web needs much more technology beyond what it already has at this point. I need more information though. What do you think?
Sewrizer said:
This is the best advice I can give as a humble user, and the point stated above makes me believe that this is how things should be created from the beginning. A new browser has the advantage of being based on the present ideas, and since the devs have nothing to lose they can introduce off the wall features, original ideas which others didn't dare to add for fear of losing users.
Click to expand...
Click to collapse
Yeah I agree with this. I asked Moz's JS engine people why they didn't program Firefox to use webworker technology to manage events, so as not to tie up the browser when waiting for file access, and they said it "wasn't in the spec" and "wasn't a priority". And when I requested that they program the canvas API to access multiple cores, they told me to take it up with W3C. Thinking like is not gonna move anybody forward.
I have no issues with Firefox's UI... it's its API which kills me.
EDIT: OK Netsurf is definitely not ready for prime time, but it certainly has potential. I think if it were combined with Mozilla's SpiderMonkey it would be able to handle Javascript alright... I don't really care it's slower than Chrome from the outset... could always be improved. Really dynamic recompilation is the state of the art. I like that it's written in C, and uses GTK and SDL. Gonna look into this...
Here's some evidence of how bad Mozilla has become.
Nevermind... due to new poster restrictions I can't post my links.

Cydia Substrate — Native (or Java) Runtime Code Modification

Cydia Substrate is a code modification platform. It can modify the code of any major process, whether that code is written in Java or C/C++. It has been designed to support an ecosystem where many developers are interested in hooking the same processes. It is designed to be powerful and efficient.
== How do I get Substrate? ==
You can either download it from the Play Store or directly from its website.
== How do I develop for Substrate? ==
You download its SDK using the Android SDK manager or from its website. There is extensive documentation on the website.
== What is Substrate's website? ==
http://www.cydiasubstrate.com/
== How is this different from Xposed? ==
Many compare it with Xposed, but Xposed only supports a single use case: hooking Java functions inside of app_process. Substrate can hook native code, such as is required to modify the way styles are loaded inside of the Android asset manager. There are many other differences, however, as Substrate's API is based on five years of experience managing a community of runtime code modification for iOS. I normally avoid doing direct comparisons, but after attending Big Android BBQ and presenting on Substrate, I have been encouraged to make the differences and advantages of Substrate's approach more explicit here on XDA.
Xposed requires an inverted form of logic based on "before" or "after" hooks while Substrate lets the developer use more straightforward "replace and call previous" implementations. This also enables more complex interactions with the previous implementation that have been shown to be valuable among the thousands of developers using Substrate on other platforms. Xposed attempts to offer something similar with "replace" hooks, but those do not provide access to the previous implementation, and while Xposed provides a way to call the "original" implementation, that skips any other hooks that might be stacked.
Xposed requires the developer to find a safe moment to interact with the class being hooked. To make this possible, there are numerous lifecycle events such as "VM loaded", "package loaded", and "command line application started". However, this does not solve the problem that touching classes can change the order in which they statically initialize. This also means that it will not be possible to provide declarative syntax wrappers (such as Logos, which developers use on iOS) on top of Xposed, as this context will have to be made implicit in imperative logic. Substrate solves this class initialization problem by allowing developers to hook the classloader itself, getting a callback when a class is "linked" so that the developer can find a class loaded in any classloader (even as a plugin to an application an hour after that application starts, where the code is downloaded as a .dex from the Internet).
Xposed has a method hook implementation that makes it lose track of which method was hooked, requiring it to do a lookup every time such a method is called. This implementation is currently linear in the number of hooks, making it slow down the more hooks you install. Worse, there is a high constant multiplier on this algorithm, as the comparison between entries is very expensive (and was made more expensive when recently fixing a longstanding bug caused by this lookup being slightly incorrect). Substrate, in comparison, uses runtime code generation to avoid the need to every look anything up at runtime: you can use Substrate to hook small functions in tight loops without experiencing the same kind of performance issues you would see with Xposed.
Substrate is also designed with a different user focus: while it currently has a setup interface, it would prefer to not have any UI at all (and this will be strived for in subsequent versions, assuming anyone cares to use it). Upgrades to Substrate can be automatically installed by the Play Store and do not require the user to interact with Substrate for the changes to "stick". Substrate itself is distributed via Play. Rather than confine these kinds of modifications to advanced users who use forums such as XDA, the idea is that everyone should have access to using this kind of technology. If you have a ROM or another store in which you'd like to see Substrate distributed, I would be more than happy to talk to you about this to make that happen, and these installations will be fully supported.
For some more information on the differences between Xposed and Substrate (or if you are wondering why you should bother paying any attention to things that I say, as maybe you don't remember me from my earlier Android projects), I encourage you to read the comments I left a couple posts down from here on this thread that describe the history of Substrate, how I fit into the Android ecosystem, and more about how Substrate differs from Xposed. I will also likely be posting the talk I gave at Big Android BBQ (with either notes to go along with each slide or in the form of a video I will record re-giving the talk and advancing the slides), which might make some of these things more clear.
Current Changelog
[this is the changelog from Play, which has been compressed slightly. I will bring the more full changelog back, as I have it saved somewhere, and put it here or link it here]
v0.9.4011:
* fix decoder bug inside ARM emulator
* support Genymotion Intel emulator
* add symbol names for Moto X
v0.9.4010: critical Android 4.3 fix, avoid old Superuser bug
^^ must install before Android 4.3 OTA!
v0.9.4009: work around Xposed bug, 4.2 fix, better errors
v0.9.4008: HTC linker path patch, limit symbol exports
v0.9.4007: RAZR i 4.1.2, detect HTC override, avoid ps
v0.9.4005: incompatibility detector, avoid mount/ln/mkdir
v0.9.4004: Holo, Script Failure, detect physical /vendor
Comments from Developer
So, yeah: I'm the developer of Cydia Substrate, the framework everyone uses on iOS to do runtime code modification. Back in 2011, I gave a talk at Android Open along with a demo of Substrate running on Android 3.0. However, after some in-depth discussions with people there who were interested, I realized that what I had at the time "wasn't sufficient": it was just the core of an implementation, not an end-to-end offering. By the time it had everything I felt it needed to launch--including a comprehensive website filled with documentation, a configuration application to install with it, fully tested support for both ARM and x86, a forward-compatible pure Java API vetted by a bunch of the top people in the iOS modding community (as I feel like breaking APIs after launch is one of the more evil things a framework can do), and an extension that would make sense to end users that they could try (so that trade press wouldn't be horribly confused, as I knew they would report on the release)--it was already 2013.
http://www.youtube.com/watch?v=tA9cnemnQ0A <- Android Open 2011 keynote teaser
As many people then know, I released it in June. A lot of people have tried it (165k installs just from Play, and another 20k downloads of the APK off the site), and many of those people even like it enough to keep it installed and leave positive reviews, despite there being almost nothing available to use with it except WinterBoard (which I really only did as a demonstration). However, I also get comments from people who seem to believe I'm some kind of "interloper" in the world of Android. Additionally, there are the people who leave reviews saying stuff like "this is stupid, we already have Xposed" (sometimes then explicitly adding in the "go home to iOS" kind of spiel). The #1 complaint, however, is "nothing I can do with it", because developers never seem to talk about it or use it much, and the people installing it are all end users. Clearly this isn't the kind of reaction that I thought would happen, especially after having discussed Substrate at length with pulser_g2 before launch (who said that the community here tends to be very good about judging things on their usefulness and technical merits as opposed to having emotional attachments).
http://www.cydiasubstrate.com/ <- Cydia Substrate
Given this, and after an encouraging back/forth I had with some people on reddit's Android subreddit a few days ago in some threads about the analysis I did of that recent Android iMessage client (people who didn't know much about the ways in which Substrate is very different than Xposed in capability and focus), I figured I'd finally make a post on XDA. I kind of had been waiting to make this post as well, honestly (as again: I like things to be more perfect before I release them than maybe people are used to around here ;P), but it seems like I'm now waiting for something that is itself causing the delay (I had really expected to do this in July, before the whole thing got more actively depressing). This is clearly that post ;P. I've responded to a bunch of other threads here talking about Substrate (and the many other Android projects I've released) in the past, but this is the first time I've actually started a thread.
(In specific, Substrate currently doesn't support some Samsung devices due to a change they make to the linker paths, and I wanted to have 100% device coverage before making the inaugural XDA post. However, I'm finding it very demotivating to spend the time to think through all the options I've been considering for workarounds given the overall lackluster reaction to my work, so I'm not even making fast progress anymore: I tend to work on the things that people react positively to, and while I got a lot of positive reactions on the balance from users, I got much less than I expected from developers given how many people use Substrate on iOS and how powerful the framework is. I think, from some conversations I've had, this is largely due to confusion over how Substrate on Android relates to Xposed, which many people seem to think of as the "home-town competitor" "that does the same thing". I thereby figure that I may as well attempt to directly address that core motivation problem, to see if I should even bother continuing spending time helping out in this community, hence this ludicrously long and highly personal post about what is essentially a technical framework ;P.)
[Readers who find the next section boring should skip below to "=== Substrate ===".]
I imagine I (sadly) thereby need to start by defending my history in the Android community, as many people seem to not be aware of much of it; it actually goes back very far, as I had promised the overall mobile community that if Android were ever rooted, I'd immediately start looking at it in earnest (before there was a device, I had already been messing around with the emulator, but the device concepts Google had at the time were more like slightly souped-up feature phones, not competitors to something like an iPhone). So, in 2008, when that first "root console attached to keyboard" mistake was found on the G1 that let you get a root telnetd running by just typing it into any search field, I dropped everything and drove two hours to Los Angeles to pick up a G1 (they were not selling them in Santa Barbara yet, due to T-Mobile not really having a presence here at the time). As promised, I immediately set to work attempting to help out.
As I ran a number of mailing lists already for iOS, I set one up for Android called g1-hackers, which attracted a good number of people, and even a few Google employees who worked on bionic and the kernel. On this list is where the G1's bootloader was first dumped: if you've ever heard the stories about Eddie Dost figuring out how to do it, this is that. In fact, it was from my G1, with a kernel I compiled (following Eddie's direction: I did not know much about flash drivers), that that first Android NAND was obtained (as Eddie had already updated his device and thereby didn't actually have root). Here is a link to the mailing list thread, directly to the post where we finally succeeded and I provided the kernel image I used so that others could perform the same dump on their own devices.
http://www.telesphoreo.org/pipermail/g1-hackers/2008-December/000096.html <- [g1-hackers] G1 boot code
Around that same time, I was also contributing to AOSP, providing a bunch of patches to things like mount and init, as I wanted to be able to get Android devices to a state where they could run something much closer to Debian than Android (I had my eyes set on kind of a hybrid). In the process of doing this, I wrote a guide that for a couple years subsequent were the canonical instructions for getting a bootstrapped build of Debian installed as a chroot under Android. At the time the patch turnaround on AOSP was sometimes over half a year (and almost never shorter than a couple months), which made contributing to the project sufficiently painful that I eventually stopped. If you search through Android's codebase, though, you still find some of my work.
http://www.saurik.com/id/10 <- Debian & Android Together on G1
At the time, I honestly do not remember XDA having yet become "the place" where people spent much time talking about Android: instead, a lot of conversation happened on IRC (which is where the iOS community had already been, and where it remains). There was a channel that I was a part of which included a bunch of people whose names would hopefully be familiar to people around here, including JesusFreke (and, much later, Cyanogen). I got to see the birth of a lot of great websites and tools (such as JesusFreke's smali/baksmali) while participating on that channel. Apparently, I was talking about "Substrate for Dalvik" on that channel in November of 2008 (which is also when I first joined XDA): that's how long I've been staring at this ;P.
During the next couple years, I ended up developing and maintaining a website called Cyrket, which had the mission to allow developers and users to search the contents of the Android Market using their desktop web browser. It also solved a few key problems that developers had with comments, in that you could only see comments for apps your device had access to that were then written in your language. Developers without devices, or with devices that could not see their product (which often included those that paid extra for the ADP1, which could not see copy-protected apps) could not see comments at all. Cyrket presented all of the comments for your application in all regions in all languages (and even used Google Translate to translate them all into your own language).
The way Cyrket had worked is that I scraped the contents of the Market using the same protocol Google's client used, indexed it (supporting find-as-you-type search), and exported it all to the site (well, originally, it was actually just a live client, but then it got really popular ;P). It got me into some mild trouble occasionally with the Android Market team, but overall no one seemed to mind it that much. Cyrket was actually the primary site people used for this purpose for a long time, and I even got the impression that people at Google were begrudgingly using it as it was more convenient than the alternatives. There were a few times where it had to be taken offline (due to changes and rate limits from Google), one time for months, but I'd usually figure out some new way to get it running. Honestly, though: I was really glad when Google finally launched a website for the Market and I was able to stop working on Cyrket ;P (and also glad that Google added most of Cyrket's features for developers to their publishing console, features that Apple actually still doesn't have AFAIK).
http://www.androidtapp.com/cyrket-android-market-browser-back-from-awol/ <- Cyrket Android Market Browser Back from AWOL!
Since those times, I mostly felt the need to get Substrate "awesome" (which started to really come together during 2011, after Cyrket was no longer needed), and so didn't do many larger projects on Android until recently. That said, I have been involved in things related to exploits and security. One of the higher impact things that I did was to release mempodroid, an implementation of the mempodipper exploit described by Jason A. Donenfeld for Linux 2.6.39+, which became the primary method to root devices running Android versions 4.0.0 through 4.0.2. Much more recently, users have been using Impactor, my implementation of the various "Master Key" exploits (based both on bugs described by Jeff Forristal as well as techniques I pioneered against a random AOSP bug).
https://github.com/saurik/mempodroid <- mempodroid README
http://www.saurik.com/id/17 <- Exploit (& Fix) Android "Master Key"
Given all of this, I hope people can get a feeling for just how strange and depressing it feels to me when people seem to suddenly believe I'm some kind of foreign invader . (FWIW, I also feel rather awkward having to describe all of this in this fashion, but frankly I'm at a point where I'm realizing that if I don't explain it in this much detail myself, no one else will. While I'm certain I'll get some people responding really negatively with comments like "he's such a blowhard, going on and on about silly little things he did", so far when I've given similar spiels to people in person at conferences, they often go "oh wow, I remember that tool/happening, but didn't remember that that was also you", and so figure that this might go a long way to fixing this weird problem: I'm not just "that iOS jailbreak guy".)
=== Substrate ===
Alright, now with that aside: in time for Google I/O (which was arguably bad timing, as I was then immediately unavailable for days ;P), I finally released Substrate. Substrate (in my clearly biased opinion ;P) is actually really cool: as far as I know, it is currently the only tool available for Android that allows developers to easily modify native code without patching/replacing. I know, for example, that people often ask how to modify features like the holo themes that are implemented in C, and the answer is Substrate: if you can find the code (which is often exposed via a symbol as there are tons of C++ symbols available on most Android builds) you can use Substrate to hook it at runtime in a way that avoids having to patch the files on disk, allows developers to deploy their changes across multiple ROMs, and supports the idea that users should be in charge of the specific features that they have on their devices (as opposed to ROM distributions).
As another concrete example that maybe makes this more obvious: sometimes you download a program from the Play Store (which, incidentally, I have a very hard time not constantly still calling the Android Market ;P) that is pretty much just a massive JNI binary--maybe an OpenGL game or a media player of some sort--that refuses to run on a device that has been rooted. A really common way that developers implement such checks is to do things like verify the existence of files on disk. The simple/common checks are very easy to detect and defeat using Substrate as you can hook the native "open" call from the C standard library, check if the filename is something like /system/xbin/su, and return "nope, not there".
http://www.cydiasubstrate.com/api/c/MSHookFunction/ <- MSHookFunction()
Substrate lets you do this kind of hooking in any system daemon (not just those spawed via app_process). Yes: if there's a program running in the background of your phone, some native service written by the OEM that manufactured the device, you can use Substrate to modify it. A lot of very interesting extensions on iOS involve these kinds of hack; for an extreme example, the software unlocks that we used to have for earlier iPhones involved modifying CommCenter, a native program that initializes the radio hardware: by hooking some of the code in that daemon, it was possible to, at just the right moment, inject a different command sequence over the serial connection to the baseband, exploiting it for the unlock.
http://www.cydiasubstrate.com/inject/android/ <- Android Native Injection
Of course, Substrate also supports hooking Java code (yes, a little like Xposed, which at some level uses the same underlying trick I walked people through in my talk at Android Open 2011). Somehow, though, a lot of developers don't seem to catch all that other stuff that Substrate lets you do, and get hung up on this one part that Xposed also manages, leading to all those aforementioned irritating comments about how "there's no point to Substrate because we already have Xposed": Xposed can't do most of the things Substrate can do (and the developer has even told me that he actively tries to avoid Substrate-like techniques as they are "pretty complicated", so it isn't even moving in that direction). FWIW, on iOS it took a lot of time for Substrate to get these features (it did not have them in 2008 when I first released it): they aren't trivial ;P.
http://www.cydiasubstrate.com/api/java/MS.hookMethod/ <- MS.hookMethod()
Even within the restricted context of modifications to Java, however, I think Substrate has a lot to offer. Again: I actively refused to release Substrate until I felt I had truly nailed a few things, including in particular the Java API (at Android Open 2011, I only supported JNI, which developers there told me would not lead to traction). I was a major proponent of aspect-oriented programming when I was younger, I got into byte-code engineering in college, and I co-published a paper on a Java code modification framework called jMonitor in 2004: this is something I've been thinking about for a long time, and I think the approach I take has some merit in and of itself. I know a lot more can be done (I feel it would be really interesting to have AspectJ-style pointcuts, for example, or the kind of bytecode-level instruction matching that I implemented as part of jMonitor <- features not described in the paper, I think ;P), but I felt a good first step was be to directly leverage the iOS community's six years of experience.
http://www.cydiasubstrate.com/id/6dfa187d-6e04-4f97-b63a-ae75b5338e01/ <- jMonitor [RV '04]
To this end, Substrate provides an API for Java that is very analogous to the API that it provides for modifying C/C++ and Objective-C. The focus is on "I know about some code and I want to modify it", allowing you to not have to think much about the timing or execution details of the program that may be loading that code (so you never have to think about "packages" or "processes" or "applications": you just concentrate on "classes", and thereby don't need a million "helper APIs" to handle each narrow timing case). To enable this, I use the aforementioned ability of Substrate to modify native code to hack features into the VM itself, giving me the ability to instrument events like "a class has been loaded". If you want to hook a method of a class from Apache Commons, and you want to hook that class no matter whether it was loaded as part of an application or dynamically as part of a classloader for a plugin downloaded by an application, this is trivial to express with Substrate. AFAIK, that use case isn't even describable using Xposed.
http://www.cydiasubstrate.com/api/java/MS.hookClassLoad/ <- MS.hookClassLoad()
This kind of VM-level modification and runtime code generation support (that is heavily flexed on iOS Substrate, and thereby has had years of in-the-field testing; so far Android has exposed just one bug in its ARM reassembler after release, and that was only in the qemu emulator for some reason) also means that Substrate's implementation of hooks is highly efficient: to compare again to Xposed, every time a method that has been hooked is called via Xposed, there is a linear-time search through a linked list doing a rather heavyweight comparison to determine which method it was after the fact; with Substrate, every call is direct, there are no lookups, and there are no comparisons, so you can hook an arbitrary number of methods with no slow down, so even very small methods that are called very often can be hooked without issue.
Additionally, with Substrate I wanted to address a specific pain point that many people would bring up when I'd give talks: "how is this secure, and how do I control what apps can use these features". This became even more important, as I wanted Substrate extensions on Android to be easily deployable via conventional means, such as the Play Store (yes: Cydia Substrate itself is in the Play Store, as I believe it is important for these kinds of features to not just be in the hands of developers on forums, but to be used by end users everywhere). To this end, I integrate into the Android security model, providing a special permission that applications must have to install a Substrate extension. This helps enable the idea that Substrate mostly "gets out of the way", becoming more of a technical detail behind your extension rather than something users will need to interact with constantly to activate or update your product.
I also wanted to provide at least something that would help solve the "reflection hell" that developers seem to always find themselves in while attempting to do runtime code modification in Java (even back on desktop Java using AspectJ). I thereby provide the means to "bless" a class loader, allowing it to access private fields and classes without the overhead of reflection: the access checks, for just that one class loader, no longer apply. Substrate extensions are loaded into such a "blessed" classloader. (I do not, even though I could, ever just whack an access check VM-wide; Xposed does this, and I feel like it is going to have security implications on Java security contexts applied to class loaders for plugins.) In the case of WinterBoard, for example, I don't ever have to deal with invoking Methods or getting Fields: setAccessible is just a dim memory.
Being able to use this functionality, however, can be awkward, and in some cases is almost impossible: while testing this feature, I realized that developers would end up needing "public stubs" for all the classes they were working with, but the calling convention for a public method and a private one is different, so the calls fail at runtime. I thereby ship as part of the Substrate SDK (yes, there's an easily-updated SDK package that you can download using the Android SDK Manager ;P) an extension to javac itself (as you might imagine at this point, written using AspectJ) that turns off access control checks: you can thereby access private fields or call private methods with no extra work both during development and at runtime. This all works sufficiently well that I generally run all of ant under the modification, such that anything ant compiles becomes "blessed".
http://www.cydiasubstrate.com/id/c17c554f-b603-4e3b-8f99-ebb3528e3ef8/ <- Java Access Controls
(And yes: this is one of the things that caused Substrate to get delayed even longer than it already had been. There was also a rather serious delay caused by my attempts to really nail the boundary between "code that is shipped with Substrate" and "code that is shipped with the extension", something that burned me a lot throughout 2013 as it was the kind of problem that spending time actively thinking about didn't directly help, requiring an epiphany I had soon before Google I/O. Arguably had I been willing to ship without documentation at all, and had I generally cared less, I would probably have had everything out in very early 2012, but during January-May I started working on the initial draft of cydiasubstrate.com, as I had apparently incorrectly thought that such efforts would be critical to developer adoption.)
Again, I write this in the hope that it clears up misconceptions, either about myself or about Substrate. As far as I can tell, Substrate has a lot of very unique value propositions: things that currently are only made possible by Substrate; and, even within the restricted scope of hooking Java code inside of a service being managed by Zygote (the only area of overlap with Xposed), I think that it offers a bunch of advantages in security, performance, deployment, and ease of development that cannot be so casually dismissed with a flippant "we already have Xposed (go home)". A lot of these features (and I haven't even gone into all of them: I could write paragraphs about the advantages of how Substrate's API handles chained hooks, the ways I enable extensions that need to cross classloader boundaries, or the way Substrate makes it easy for end users to temporarily disable extensions without complex tooling) come from having spent over a decade now thinking about this problem and the last five years actively managing a developer ecosystem with tens of millions of users on iOS.
I am thereby happy to answer any questions about how to use Substrate, issues with Substrate on any device (I never blame the device: I might not have a fix immediately for a specific problem, but I always consider it Substrate's job to work around issues the device throws at it to get its functionality in place so the task will at least end up on my todo list), or even about me (as a lot of why I find writing this both so important and so painful are due to the occasional-yet-present more-personal attacks/misconceptions I often seem to receive about somehow being an "outsider"). (That said, please do have some patience: sometimes my ravenous need to do nearly 24/7 testing on a specific device has to give way so I can go to a conference I'm giving a talk at, or so I can focus on a different problem that might be more pressing or simply have a higher probability of near-term success: spending an infinite amount of time on one problem is unfair to all of the other problems that exist ;P.) [And, in fact, I have a meeting I have to be at tonight, but which hopefully won't take insanely long.]
Reserved Post
["reserved", as apparently you always should have at least one of these ;P]
Links to Extension Threads
[and finally, I can see ending up with a page that might link to other threads on XDA, although arguably I should put this on cydiasubstrate.com. right now, most projects that use Substrate are in Play. I am not certain if I'm now just misunderstanding how to use XDA, though: again, this is my first thread I've started myself]
Wow. The timing couldn't be any more perfect for you to post this.
I do not have an Android device yet and have been theorizing exactly how I could easily make modifications to applications.
Because I am just getting started in the Android development community, I don't have any biases towards one framework or the other.
Sooo.... this is on my watch list.
gugbot said:
Wow. The timing couldn't be any more perfect for you to post this.
Click to expand...
Click to collapse
The opinion of many (reasonable) people differ ;P.
gugbot said:
Sooo.... this is on my watch list.
Click to expand...
Click to collapse
Yay! If you have a moment, I'm curious: how/why did you find this thread? It seems like very few people actually go to this "Frameworks" sub-forum; there are almost no threads posted to it except the one about Xposed, which I'm presuming people must be finding by links from other places (whether random websites or other threads on XDA).
saurik said:
The opinion of many (reasonable) people differ ;P.
Yay! If you have a moment, I'm curious: how/why did you find this thread? It seems like very few people actually go to this "Frameworks" sub-forum; there are almost no threads posted to it except the one about Xposed, which I'm presuming people must be finding by links from other places (whether random websites or other threads on XDA).
Click to expand...
Click to collapse
I was browsing in development tools and was surprised to see that a Saurik posted about Cydia Substrate!
I was brought to this forum by one about theme development?... Maybe you should post this in a forum with more traffic. There seems to be an endless amount of categories for everything.
i have try your cydia substrate on cm10.1.3 stable..device samsung i9300..
install winterboard..apply icon pack but icon pack not applied..
then when want to open other apps the apps fc..except winterboard..
slipar said:
i have try your cydia substrate on cm10.1.3 stable..device samsung i9300..
install winterboard..apply icon pack but icon pack not applied..
then when want to open other apps the apps fc..except winterboard..
Click to expand...
Click to collapse
Yeah, as I mention in this thread WinterBoard was more of a demo that has been difficult to justify improvements to . This isn't an issue with Substrate, at least.
Would you mind sending me the crash report from the adb log? At least, would you mind telling me the name of the theme you applied? Also, thinking about it, CyanogenMod already has a theme engine... it never occurred to me how WinterBoard would interact with the existing theme engine in CyanogenMod (although I guess thinking even longer about it, I see no reason why it would fail horribly... it should just layer on top).
saurik said:
Yeah, as I mention in this thread WinterBoard was more of a demo that has been difficult to justify improvements to . This isn't an issue with Substrate, at least.
Would you mind sending me the crash report from the adb log? At least, would you mind telling me the name of the theme you applied? Also, thinking about it, CyanogenMod already has a theme engine... it never occurred to me how WinterBoard would interact with the existing theme engine in CyanogenMod (although I guess thinking even longer about it, I see no reason why it would fail horribly... it should just layer on top).
Click to expand...
Click to collapse
hope i send u the correct logcat..
im using ios7 concept theme..g play link here
slipar said:
hope i send u the correct logcat..
im using ios7 concept theme..g play link here
Click to expand...
Click to collapse
Thank you so much for the information. Here is a new version of WinterBoard that seems to work with this theme.
http://cache.saurik.com/apks/com.saurik.winterboard_0.9.3922.apk
thanx saurik..tested but this time winterboard just fc when try to change theme..
logcat attach..
slipar said:
thanx saurik..tested but this time winterboard just fc when try to change theme..
logcat attach..
Click to expand...
Click to collapse
I'm sorry about that issue... this is actually quite interesting to me as it might indicate that I need to do some more work on the blessed compiler as it relates to miranda methods. I had verified that the theme functioned, but had not gone back to attempt to re-verify the setup activity itself, which I guess hadn't been recompiled in a long time. I've added a temporary workaround to the issue while I investigate further. ("Humorously", if you have Xposed installed, I am pretty certain that the WinterBoard settings activity would have worked, as Xposed just destroys the access control checks for the entire VM.)
http://test.saurik.com/xda/com.saurik.winterboard_0.9.3922+1.gf733f01.apk
Hey there, I just happened upon this thread while deeply perusing the boards after just getting home from a 17hr drive and being unable to go to sleep yet. I am VERY interested in the substrates capabilities, it sounds like a very interesting concept. I am a new developer and am wanting to learn more and play more....I use xposed on my phone now and was considering starting to develop modules for it, buuuttt I think I just changed my mind I'm on an att sgs4 running a 4.3ge Rom. Going to install the substrate the night via Play Store and mess around with it starting tomorrow. Thanks for this
Sent from my GT-I9505G using Tapatalk
Sc4ryB3ar said:
I'm on an att sgs4 running a 4.3ge Rom. Going to install the substrate the night via Play Store and mess around with it starting tomorrow. Thanks for this
Click to expand...
Click to collapse
Yay! (Now, watch your GT-I9505G be one of those few Samsung devices Substrate detects as incompatible ;P. Samsung has so many model numbers that all map to the same high-level marketing names that it's difficult to keep track of what's what. If that happens, and you are interested in helping out, I can implement one of my alternative injectors quickly for you to work with.)
saurik said:
Yay! (Now, watch your GT-I9505G be one of those few Samsung devices Substrate detects as incompatible ;P. Samsung has so many model numbers that all map to the same high-level marketing names that it's difficult to keep track of what's what. If that happens, and you are interested in helping out, I can implement one of my alternative injectors quickly for you to work with.)
Click to expand...
Click to collapse
It installed just fine, quickly and with no apparent issues
winterboard, however rendered neither theme I chose correctly, wondering if its the themes though.... Didn't get a logcat and then I hosed my system last night messing around too much, so I started fresh and haven't gotten back to substrate and wb yet....I'll be back to it withing a couple of hours
Sent from my GT-I9505G using Tapatalk
substrate source code
Saurik,
I've been dabbling some with Cydia Substrate and it seems to offer a lot of unique possibilities for Android apps.
Do you have any plans to release the source code for this like you did on iOS? I'd be very curious to learn more about how it works. Also, is there a link to your talk from the Android Open conference?
Thanks,
Fred
(Ugh. I have no clue how people keep up with a forum, especially with the website as slow to load every page as it is ;P.)
fjones8856 said:
Do you have any plans to release the source code for this like you did on iOS? I'd be very curious to learn more about how it works.
Click to expand...
Click to collapse
I currently do have an intention to release the source code, but I'm not certain under what license (all of the licenses I normally use don't solve the specific issues related to Substrate). That said, no one seems to care much about Substrate on Android: on iOS people tend to (almost to a level of it being a problem) jump on new solutions to evaluate constantly, whereas on Android people seem to just snark "we already have X" even when there are compelling advantages to a replacement. Given this situation, I am highly unmotivated to spend the time to figure out the right solution, given that in a way Substrate is "my magnum opus": it is the culmination of the research and experience of so many years of my life, that passing up the ability to license it to the companies that sometimes talk to me about that (for either enterprise wrapping or security) to satisfy a group of people who are mostly asking for the source code specifically to replicate the technique *and then avoid using Substrate*, makes very little sense.
On the project side of it, Substrate on iOS only ever received a single code contribution from someone I wasn't already so close with that I was sharing code already. It isn't even the kind of project that one would expect getting many contributions: it is more of a backend technology, and the extent to which it has a GUI is actually a bug (I intend for it to be 100% seamless as part apps that use it: Substrate on iOS does not have a GUI and never will have a GUI, and that's how I think it really should work on Android as well, but of course right now I need the silly Install button). If anything, on iOS, we often end up with random companies that want to "own the scene", which ends up with them forking Substrate in ways that cause platform incompatibilities for other developers: Substrate on iOS has thereby actually been closed source now for almost two years, and it has actually improved the stability of the platform. I thereby am somewhat loath to "repeat the same mistakes from before" and end up with forks.
fjones8856 said:
Also, is there a link to your talk from the Android Open conference?
Click to expand...
Click to collapse
There was no recording of the actual talk, just of the keynote introduction that I already link to from my website. In the talk I walked people through a demonstration of using an early version of the JNI-level Substrate API, and showed how it worked (which was very simple at the time). In essence, I demonstrated, with my exact code on the projection, the technique that Xposed started using half a year later (which is just "oh, I'll change the contents of this Method object, as apparently the runtime doesn't care if the Method is allocated as part of a Class; if I do it right I can simulate registerNatives") and the most obvious way of implementing MSJavaHookClassLoad (which--for the really really low-level API I had at the time, on pre-4.0 VMs that didn't have complex JNI stacks--is clearly "MSHookFunction the class load and provide a callback"). Everything is going to be new for ART, though: the techniques are going to have to be much more sophisticated (which I'm excited by, as this is a game changer).
Pm sent
Sent from my GT-I9505G using Tapatalk

Would Unity be the best for myself? Or another route?

Hello,
I've been doing some research on the many, many different routes I can go with Android development, and I'm hoping someone might be able to help narrow down my choice. My experience is currently web related, PHP/HTML/CSS, with knowledge of intermediate Javascript, etc.
I'd like to create a very similar game to Football Manager, but less ambitious. For those that aren't aware, it's a simulation game where you're the manager of a soccer team.
My ambition is to keep it very simple, dumbed down. No need to watch the games, pretty much all text with simple graphics for some things.
My issue is, trying to find a place to start. There's literally a lot of different routes, and I'm overwhelmed. Do I use HTML5? Java? One of the programs like Unity, Construct? PhoneGap?
For my specific game, and idea, what would be your best suggestion on what to use?
Thanks in advance.
you can try CocoonJS. it's easy.
It's html5 fraemwork.
CocoonJS is a technology that helps HTML5 developers publish their web-based games and apps in the most important mobile and web stores with no code changes and with all the advantages of native development.
Using CocoonJS, a single code base is enough to publish a game or app natively on more than 10 stores. Best of all, with no installations thanks to our cloud-based platform.
HTML5 is finally ready for cross-platform app and game development!
Learn more: http://ludei.com
But now it's in open beta.
All free, but all Extension only for premium users.
Premium account granted for free, if you have nice idia/project.
The answer is "it depends"
A couple of questions...
1. Will it only be for Android? or are you also planning to push it to iPhone?
2. Will the interface be more like a app (eg. gmail, calendar, utility apps) or more like a game (immersive, completely different interface) ?
3. Will there be a lot of interaction? or mainly consuming information?
pyko said:
The answer is "it depends"
A couple of questions...
1. Will it only be for Android? or are you also planning to push it to iPhone?
2. Will the interface be more like a app (eg. gmail, calendar, utility apps) or more like a game (immersive, completely different interface) ?
3. Will there be a lot of interaction? or mainly consuming information?
Click to expand...
Click to collapse
1. Android to start, possibility of iPhone in the future.
2. Straight forward, more like an app, nothing too pretty, more statistical.
3. Mainly consuming information, lots of behind the scenes work.
In that case, I would say go for a mobile friendly web-based app, as opposed to a native app. So this would mean HTML/CSS/JavaScript.
Reasons are:
You want to eventually be on both Android and iPhone. Since you're app is more "app like" if you go native, you'll essentially have to write 2 separate apps to have good user experience (Android and iPhone have vastly different experience guidelines). WIth a mobile-friendly website, you'll satisfy both with one code base
You've already got experience in HTML/CSS/Javascript - definitely a big win!
Since your app will mainly be information consumption, it sounds suitable for a website.
When done correctly, a mobile-friendly website can still be a great experience to use
A couple of things to be aware of...
Don't try and imitate the native UI on the mobile-friendly website. It is a website, not a native app! Users are fine if it doesn't behave like a native app (afterall, they would've just reached your site via the browser). In fact, if you make the website behave sorta like a native app, it might confuse users more. Best direction is to have a good, solid ,easy to use and understand UI. (Be wary of the Uncanny Valley)
Unlike laptops/desktops, mobiles generally are less powerful, so you'll need/want to optimise performance. Make sure the website runs fast & smoothly (ie. optimise resource downloading, minimise/optimise javascript animations etc). Be aware that most phones have a 'click delay' (to detect swipes/drags etc) so you'll want to use something like fastclick to eliminate this.
Remember that on a mobile device your user will be using their fingers (and not a mouse) to click/interact with your website. So make sure tap targets are nice and large.
Finally .... test on a real device! Chrome dev tools etc to simulate phone screens is great for dev, but actually using your website on a mobile will reveal many design decisions that might need to change.
This might sound like a lot to think about, but I think given what you've said about your idea, in the long run, it will be more time efficient. (there is probably a equally long list of things to think about when developing a native app!)
Good luck with your idea
pyko said:
In that case, I would say go for a mobile friendly web-based app, as opposed to a native app. So this would mean HTML/CSS/JavaScript.
Reasons are:
You want to eventually be on both Android and iPhone. Since you're app is more "app like" if you go native, you'll essentially have to write 2 separate apps to have good user experience (Android and iPhone have vastly different experience guidelines). WIth a mobile-friendly website, you'll satisfy both with one code base
You've already got experience in HTML/CSS/Javascript - definitely a big win!
Since your app will mainly be information consumption, it sounds suitable for a website.
When done correctly, a mobile-friendly website can still be a great experience to use
A couple of things to be aware of...
Don't try and imitate the native UI on the mobile-friendly website. It is a website, not a native app! Users are fine if it doesn't behave like a native app (afterall, they would've just reached your site via the browser). In fact, if you make the website behave sorta like a native app, it might confuse users more. Best direction is to have a good, solid ,easy to use and understand UI. (Be wary of the Uncanny Valley)
Unlike laptops/desktops, mobiles generally are less powerful, so you'll need/want to optimise performance. Make sure the website runs fast & smoothly (ie. optimise resource downloading, minimise/optimise javascript animations etc). Be aware that most phones have a 'click delay' (to detect swipes/drags etc) so you'll want to use something like fastclick to eliminate this.
Remember that on a mobile device your user will be using their fingers (and not a mouse) to click/interact with your website. So make sure tap targets are nice and large.
Finally .... test on a real device! Chrome dev tools etc to simulate phone screens is great for dev, but actually using your website on a mobile will reveal many design decisions that might need to change.
This might sound like a lot to think about, but I think given what you've said about your idea, in the long run, it will be more time efficient. (there is probably a equally long list of things to think about when developing a native app!)
Good luck with your idea
Click to expand...
Click to collapse
Thank you very much for your help, I appreciate all the information. One last question on my end.
I'm assuming the development tools would be the same as a usual website (ie. In my case, Dreamweaver?). If you're familiar with Game Dev Tycoon, would a layout /similar style of interaction game b, e capable using only Dreamweaver, or is something else needed?
No worries, more than happy to help
I would actually suggest not using Dreamweaver as for the mobile website, you'll really want to be as lean and minimal as possible. From what I recall, Dreamweaver can add quite a bit of 'cruft' to your code.
I would suggest a standard text editor (recommend: http://www.sublimetext.com/) as that would allow you to have complete control over your code, what you include/exclude, what goes where etc. The mobile site will require that extra attention as you really want to make sure it runs smoothly on the mobile.
In terms of quick dev iteration (making sure the site looks correct) you can use the chrome developer tools (https://developers.google.com/chrome-developer-tools/) which allows you to fake the user agent/screen size etc on your browser. Though nothing beats occasional testing on a real device - just to make sure you're on the right track.
Had a look at Game Dev Tycoon and I would say for something as involved as that (lots of interaction, animations etc) it's better to go down the native route.
pyko said:
No worries, more than happy to help
I would actually suggest not using Dreamweaver as for the mobile website, you'll really want to be as lean and minimal as possible. From what I recall, Dreamweaver can add quite a bit of 'cruft' to your code.
I would suggest a standard text editor (recommend: http://www.sublimetext.com/) as that would allow you to have complete control over your code, what you include/exclude, what goes where etc. The mobile site will require that extra attention as you really want to make sure it runs smoothly on the mobile.
In terms of quick dev iteration (making sure the site looks correct) you can use the chrome developer tools (https://developers.google.com/chrome-developer-tools/) which allows you to fake the user agent/screen size etc on your browser. Though nothing beats occasional testing on a real device - just to make sure you're on the right track.
Had a look at Game Dev Tycoon and I would say for something as involved as that (lots of interaction, animations etc) it's better to go down the native route.
Click to expand...
Click to collapse
Thank you again. I appreciate all your help.

Categories

Resources