Apps Need Room To Breathe!

Share if the site was helpful

Apps Need Room To Breathe!

Android is a complex operating system.  There’s a lot more variable when developer for Android.  Things are unpredictable when it comes to knowing what phone your user will be on.  There’s literally no limit to how many different kinds of phones could be running Android on a given day.  If you don’t know what you’re doing this can be dangerous for your layouts.

How so?  Doesn’t everything work the same from phone to phone?  Well, no actually.  Things function very similarly, but different phones have different characteristics that can drastically change a user’s experience.  Take screen size for example.  You could design an app and have one user download it on a phone with a 4’’ screen and another on a 6’’ screen.  This may not sound like a huge difference (2 inches is rarely a big decider life), but when it comes to a screen size that’s literally 50% more screen space on one device than another!

How things can go very, very wrong:

If you don’t take different screen sizes into account, then users will most likely miss out on important info. When you’re first learning about how to develop Android apps you’ll most likely use LinearLayout a lot to organize your apps.  This layout takes one view (text, image, button, etc.) and then lines up the next one in a list side by side.  Or you can change it to go vertically.  Either way the end result is a neat row/column of views.  Here’s an image to help you visualize:

But what happens if when your developing you only test the layout on your phone (let’s assume its huge).  Things may look great to you, but when you publish the app and someone with a smaller phone uses it this is what they might see:

How we can prep for things to go very, very wrong:

Trust me as I made this mistake on the first app I ever published: It’s not a fun mistake to make.  Your app is a work of art.  It’s something that you created from nothing and want to show off to your friends, family, and the world.  So when you have someone download it and instantly their greeted with a funky looking layout…well it’s not the best feeling.  Luckily, we can learn from our mistakes and prep for them in the future!

There are situations where you want to use LinearLayout and there are situations where its best to avoid it.  Sometimes you may want to keep the row/column but add scrolling capability to it instead.  Android developers have experienced all these scenarios, and that’s why there’s more options than just LinearLayout.

Layouts like ConstraintLayout and RelativeLayout allow you to position views in relation to one another as well as to their parent.  So you could position pictures on your screen to “attach” to the right or left side, and make your layout look a lot more professional.  That’s of course just the tip of the iceberg though.  There are different screen densities to account for when choosing what images to use.  And you can also have portions of your screen appear/disappear by using fragments. Don’t worry we’ll have posts on both of these topics coming up soon!

If you’re interested in learning more about styling your apps for different screen sizes and how to make your layouts ready for professional use, checkout Phonlab’s Android App Developer course!

 

Google Pay: Caring Is Sharing

Share if the site was helpful

Google Pay: Sharing Is Caring

Earlier this year Android Pay and Google Wallet combined forces to create Google Pay, a one-step payment process for Android users.  The app has featured online payments with certain websites/apps by initially linking a credit card and then checking out in the future with one click. More technologically impressive it uses NFC (Near Field Communication) to allow users to hold up their phone at a cash register and buy things in person too.

Google Pay seeks to make users lives easier by removing the hassle of reaching into you wallet/entering checkout info every time you buy something.  Yet the adoption rate for it has been…sub-optimal.  So far we’ve seen about 6% of total smartphone users give Google Pay a try.  It’s a growing number, but it’s still not very big.  If it’s because Google Pay doesn’t do enough for users, then it may start growing faster.

So what’s new?

Today Google announced some new features for the app that make it more useful.  The biggest of these is that you can now use Google Pay to send money to friends.  With apps like Venmo, PayPal, and the CashApp this is nothing new, but it’s necessary for the Google Pay to become relevant as it’s one of the primary ways younger generations pay one another.

And if you haven’t used cash sharing apps like these before GET ONE.  They’re essentially the staples easy button for splitting bills at restaurants and paying back friends.   Google Pay has a challenge of gaining traction in this sector since there are already a few established apps and sharing apps are only as useful as their adoption rate.  But then again, it’s Google and they choose what apps comes preloaded on Android phones.  Chances are they’ll be alright.

But wait there’s more!

Another new upgrade for the app is that it will be supporting boarding passes and event tickets.  Companies like Southwest and Ticketmaster will be incorporated into the app to allow users to take one step closer to a one-stop shop.  These tickets will update with real time information if something like a flight delay takes place, and they’ll work alongside any loyalty cards you have.

The updated Google Pay app is rolling out today, but it will be a few weeks until it reaches everyone who uses it.  The long term goal is clearly for Google Pay to become your go to app for any circumstances. I’m certain we’ll see some more new features come up in the news soon, and I’m also sure you’ll be able to read about them here!

What are your thoughts on Google Pay’s changes?  Is it still lacking something essential for success?  Let us know in the comments below.

The Six Degrees Of Activity Lifecycles

Share if the site was helpful

The Six Degrees Of Activity Lifecycles

As an Android developer, one of the most fundamental concepts that you’ll learn about is Activities.  Activities are a Java class that focus on a single thing that users can do.  Many involve user interactions, and in most apps on your phone you can think of each page of the app as an activity.  Open Gmail and see your list of recent messages? Activity.  Click on one of those messages to open it in a new page?  Activity.

Activities are everywhere in Android development, yet many developers that are just starting out don’t fully understand how they function.  You might be able to get by without a full understanding, but this can be lethal to your app as it expands and becomes more complicated.  Lack of understanding opens up Pandora’s box for things to go wrong with memory leaks and debugging errors down the road.

Diving In:

So let’s take a blog post to discuss the Activity Lifecycle in a little detail.  We won’t get stuck in the weeds, but cover the basics enough that you understand what’s going on under the hood and can prep for smooth app development.

Just like humans have a lifecycle from birth to death, apps have a lifecycle they follow from when their first launched to when the user closes them.  There are six methods that can be called to change the state of an activity in Android:  onCreate(), onStart(), onResume(), onPause(), onStop(), and onDestroy().  At first glance these may seem similar if not identical to one another, but understanding the differences is key to a successful user experience.

onCreate():

This is the first of the 6 lifecycle methods called in an activity, and its invoked when (you guessed it) the activity is created.  In this method startup logic that should only happen once during an activity’s life takes place.  Examples of this might be to bind data to a list, or to instantiate class-scope variables.  The bottom line is that this is called once and only once.

onStart():  

Immediately after onCreate() comes onStart(). The start state of an activity occurs when it is made visible to the user.  This is where logic goes to prep the activity to enter the foreground and become interactive.  In other words the User Interface (UI) is taken care of here.

onResume():

Yes I know, it’s three different methods whose names make it sound like they all do the same thing.  Here’s the key difference with onResume() though.  onResume is called when an app has already been created and comes into (or back into) the foreground.  An activity is constantly interactive as long as it’s in the foreground for the user.

But what if your app includes a pop up message over the activity?  Well now that pop up has the foreground.  Your activity from before will enter the onPause() state (keep reading!) until that pop up goes away.  Once it does your app will resume, and thus the onResume() method will be called again.   For example, let’s say your playing a game and an alert interrupts it.  Obviously we don’t want the game to keep going when the user can’t see it, because that would be incredibly frustrating when the user returns and finds out they died while they were way.   So we call onPause() when an activity loses focus and certain resources need to either be cleared or put on hold.

onPause():

There’s really not too much more to this one other than what I said before.  It tags in and out with onResume() to create/delete resources when needed depending on if a user has focus.  It’s where the magic happens if you do things right, and where things go noticeably wrong if you don’t.

onStop():

When your activity is no longer visible, it has stopped.  This is different from onPause() in that your activity is entirely shrouded.  Instead of a pop-up that might cover half of the screen, a new activity may have taken place and covered your current one completely.  This is essentially where the app has can completely remove unused resources that the user won’t need when returning to the activity again.

onDestroy():

And finally comes our 6th method that wraps everything up.  This is called right before an Activity is destroyed, and as such you want nothing left hanging around.  If you forget to close up a loose end in onDestroy(), your app may begin to suffer from memory leaks and eventually bog things down.  Bottom line is that all resources should be released here if they weren’t in onStop().

These 6 methods essentially bounce the user between the two states of in the user’s foreground and in their background, but there are intricacies that go a lot deeper between them.  As such properly knowing when to implement each of them can be a life saver for your apps, and a huge time saver for you when you’re building things out and want to know what’s going wrong.

If you felt lost at all along the way of this blog, then you should check out Phonlab’s Android App Developer Course!  It’s a great way to go from writing your very first line of code up to publishing our own apps on the Play Store.

Samsung Is A Go For Android Go

Share if the site was helpful

Samsung Is A Go For Android Go

We’ve talked about Android Go a few times here before.  It’s Google’s movement to bring budget phones to the rest of the world by stripping down the software and limiting specs.  There’s been a bit of buzz around the movement recently, and earlier this week a leak has revealed some details about Samsung coming into play.

The Specs:

That’s right, Samsung may be getting into the budget phone game with a 5-inch display and Samsung’s mid-range Exynos 7570 SoC processor.  For reference this compares pretty similarly to Samsung’s Galaxy J3 in terms of size and capability (see the following image).  The phone will come with 1GB RAM and 16GB of storage as well, following the Android Go system of making things high quality but low memory.  And of course, as with other Android Go phones the operating system version will be Android 8.0 (Oreo).

The SamMobile sources behind this leak said that the new phone (model name SM-J260G) is currently being tested in dozens of markets around the world including the UK. And everything about this leak falls in line with earlier reports that Samsung is testing three new mid-range smartphones.  Not much has been revealed about these other than their model names (SM-J260F, SM-J260G, and SM-J260M) and that they will all most likely be part of the Android Go movement.  So it seems Samsung is ready to dive into Go headfirst.

Android Go’s Future:

Android Go was announced back at MWC in February this year, and since then we’ve seen multiple phones get in on the action.  The idea is to bring incredibly affordable phones to people that otherwise couldn’t afford smartphones, but still give them all the newest in terms of software.  The was this is possible is by limiting other specs on the phone and putting in less preloaded apps (not exactly a bad thing!). Android Go is just getting started, but it aims to provide phones for the next billion users around the world, and I’m excited to see where it’ll go from here.

What are your thoughts on the new Samsung phone that we may be seeing soon?  Let us know in the comments below!

Improved Security Or Less Freedom? APK Updates

Share if the site was helpful

Improved Security Or Less Freedom? APK Updates

Earlier this week a small change rolled out to the Google Play Store.  It’s one that you likely won’t even notice, but for those who have it’s tough to decide whether the shift is good or bad.  What change?  Just a small string of metadata for apps.

Google is adding a security string of metadata to all Android APKs (the file format android apps are stored in).  This string will come along with the usual app and be used to verify that apps are distributed through the Play Store or another approved channel.

But why?

The reasoning is (of course) for security purposes.  Users will be able to verify that the apps their downloading aren’t malicious apps seeking to wreak havoc on your system.  There are plenty of apps that have posed as secure looking every-day apps when in reality they were doing other things under the hood (such as mining bitcoin).  This new metadata will supposedly help catch apps like this and ensure that any apps users are downloading are coming from a safe place.

We’ve talked before about how android apps are pretty secure through their information silos.  Apps must use a content provider/resolver to access information from one another, and in order to get access to your serious information (contacts, messages, pictures) apps are required to request permissions that must be explicitly granted by the phone’s owner.  That being said it’s still not a good idea to go around downloading every app you can just for the heck of it.  Security should not encourage reckless behavior.

So what’s the issue?

So why the controversy?  If this new string of data will help keep our phones more secure why could people be opposed to it?  Well the new string is essentially DRM (Digital Rights Management).  As with media services, there’s potential for companies to abuse DRM to choose how and when you use their product.

Let’s say for example you download an app and like it how it is.  A new update comes out and you hear horrendous things about it like it makes an ad pop up every 5 seconds (a terrible marketing strategy).  Naturally you would try to hold off on updating to this new version as long as possible.  Well with DRM it might be difficult/impossible to tinker with the app to remove ads, and a developer could potentially force you to update to the new version by altering the metadata.  It’s a win for mobile app security, but it also invites misuse.

It’s not easy to say if this is a big deal or simply a step in the right direction for security, but it also hasn’t been in the limelight for long.  What are your thoughts on this change to coming apps?  Let us know in the comments below!

 

 

The Pixel 3 Leaks Just Keep Coming!

Share if the site was helpful

The Pixel 3 Leaks Just Keep Coming!

 

If you’re a phone junky then you’ve probably been following all the buzz surrounding the upcoming Pixel 3.  And if you haven’t been but are interested in catching up, then you’ve come to the right place.  Rumors and leaks galore have been floating around this week and late discussing what the Pixel 3 and Pixel 3 XL have in store for users.  Let’s discuss:

It’s Huge:

I’m not just talking about the hype.  The Pixel 3 and Pixel 3 XL are going to be larger than their predecessors (is anyone surprised?).  Measuring in at 5.3’’ and 6.2’’ respectively these phones will be giving the iPhone X a run for its money in terms of screen real estate.  And also much like the iPhone…yep you guess it, there’s a notch thrown into the mix.

Just like almost every other android phone since the iPhone X’s reveal the notch seems to be playing a big role in design practices.  A few images were images have been posted on the XDADeveloper’s forum showing a Pixel 3 rocking a notched display, dual front cameras, and a back that appears to be made of glass.

New features:

Why glass on the back?  Well this has led to speculation that wireless charging may be coming back into play.  This feature was discontinued a few years back in the Nexus series after Google’s acquisition of HTC.  The argument was…not the strongest.  Google argued that Nexus phones had too much z (thickness) with the wireless charging, and that USB Type-C charging was a much simpler solution.  Maybe more efficient, but its definitely not as cool!

Of course we have to take these leaks with a grain of salt.  The Pixel’s camera is a good demonstration of this.  There’s been a lot of back and forth about whether one or two cameras are in store for the new device.  Leaked images have confirmed both cases, so its hard to know what’s really true and what is just a wannabe, but a series of images leaked by 9to5Google show a single rear camera on a Pixel 3 prototype.  This leak matters as the phone was sporting a mystery Google logo, so it gains another ounce of credibility.

Whatever the case, Pixel’s are known for their phenomenal cameras, and when the Pixel 2 came out its camera blew us away.  Since then quite a few other phones have scored higher on DxOMark (a image quality rating site), but at the time the Pixel 2 was the leader.  So odds are the Pixel 3 is going to exceed expectations again and top the charts in this manner.

New Software:

The Pixel 3 is also expected to be the first official phone rocking Android P software.  So new features like RTT-Wi-Fi and auto-adjusting batteries will open new possibilities for both users and developers.  Android P is currently available for beta use if you’re interested in exploring it early, but if you’re planning on purchasing a Pixel 3, you’ll have it in your hands before you know it.  There’s no official release date set right now, but the popular opinion is this October.  So close and yet so far.

What are you hoping the Pixel 3 will have that other phones are lacking?  Do you think it will be a let down or a leader in the industry?  Let us know in the comments below!

Android One.  Two Different Strategies

Share if the site was helpful

Android One.  Two Different Strategies

Rumors have been spreading about the new Motorola One Power.  This week we got a glance at what’s coming to the market, and you may not be surprised to see that a notch is involved in the desgin.  A lot of Android phones this year have been mimicking the iPhone X’s newest feature, but there’s a lot more to the One Power than just how it looks.  It’s the head of a movement.

The One Power is sure to be a quality phone for its users.  At least a lot depends on it being that way since it will be the newest phone to carry on the Google One movement.  That movement began in 2014 as an attempt to capture the “next billion Android users” in developing countries.  It aimed to provide smartphones with current software at sub-100 dollar prices.

But How?

Typically this was possible by severly limiting specs like storage and RAM.  Users don’t have to spend much, but they can still experience all the cool new features versions like Android P have to offer.  Meanwhile Google gains a hold on smartphone marketspace that might otherwise not be filled due to price restrictions.  It’s a win win.  

At least that was the plan back then.  4 years later and the Android One movement didn’t take off exactly as the marketing team planned.  Sales faltered for the lower end phones due to their lack of being positively distinguished from their more expensive counterparts.  Appearing somewhat clunky, budget phones didn’t sell well, and there’s still a large population out there that is waiting to be capitalized on.  Android Go rose to take Android One’s place as the budget movement recently, and it looks like this new burst of marketing may have a better outlook.

Down But Not Out

That being said, Android One didn’t fade into oblivion, but instead decided to change its strategy.  It’s risen its price range to the $250-400 mark and in turn is producing sleeker more “high-end” looking phones that run on the newest softwares.  These phones are still more affordable than some, and this is thanks to the movement’s slogan “Everything you want.  Nothing you don’t.”  The phones don’t have a bunch of manufacturer customizations, but instead function similarly to Nexus and Pixel phones today.  They have Google’s apps built in, and run the latest Google software, but that’s just about it.  This is great if you’re not looking to spend a fortune and you also don’t feel the need for the extra add ons.

The One Power Up Close

The Motorola Power One will be prominently displaying a notch on its front along with a vertical dual carmera placement on its back.  Couple this with curved edges and a fingerprint sensor and we’re looking at a pretty stylish phone.  Whether you like the iPhone X or not, its undeniable that it’s style has set a trend that others a following.  How the software on the inside runs is a whole nother store though!

Do you have any thoughts on the new Motorola Power One?  Let us know in the comments below.

 

Making Material Design Work For You

Share if the site was helpful

Making Material Design Work For You

So you’ve built an app.  You’ve come up with a million dollar idea and you’re ready to build it and market it to the masses.  The concept is there and you know enough to develop it.  But does it look…good?

There’s a lot more to that one simple question than we initially see.  No matter what your app has to offer the world, people aren’t going to keep coming back to it unless it has a well designed interface.  This means that things should be both pleasing on the eyes and easy to use.  Users should find themselves knowing exactly where to look when they want something to happen.

So how can we design such an app?  There’s full courses for this one concept that you could enroll in, but here are some key highlights to making your app pop:

ConstraintLayout:

If you’ve taken intro to Android programming courses before then chances are you’ve done a little design with LinearLayout and RelativeLayout.  These are simple ViewGroups that you can use to organize the images and text on a user’s screen.  While these are useful at times, if used improperly they can start to bog down your app (learn why here!).

ConstraintLayout offers a more efficient way to group your apps exactly how you want them on your screen.  You can group your images in relation to one another on the screen or choose to position them a percentage away from your edges.  Really if you can think of a way you want to organize things, chances are there’s a way to do it with ConstraintLayout.  And without hurting your performance too!

Surfaces:

A simple way to think about the surfaces in your app is in terms of pieces of paper being stacked upon one another.  You can have views side by side or on top of one another, but however you organize things you want the user to know what’s important and what’s just extra.  Changing the elevation of your surfaces can bring what your want to the forefront and control where the user is looking.  It’s sneaky, but it makes a world of difference. 

By raising the elevation of a view a bit it begins to cast a shadow onto the views below it.  This way the end user gains a 3D perspective of what objects are closer to them and thus deserve attention.  Things like Floating Action Buttons (FABs) have this built into them already.  Use them wisely thought, as overcrowding your screen with elevated views can make it just look crowded and sloppy.

Custom fonts:

Style runs deep.  Deeper than just picking a font that you think looks neat.  Fonts with a very static and bold tone can give off the impression that your app is serious.  This can be great if you’re making something like a banking app that wants users to take it seriously and see it as secure.  But if you use one of those fonts with an art app it will be very unrelatable.  Likewise if you have a security based app that has fancy cursive writing users will naturally assume that the creators cares more about looks than performance and may lose faith in it.  Obviously I can’t pick for you, but I can tell you the decision matters!

Transitions With Motion:

As I said earlier your user should know what to do without even thinking about it.  This is where transitions and motion can come in handy.  Take for example a list of songs that a user can scroll through.  Well, if your user doesn’t know much about the app and their screen just so happens to load evenly (aka there are no songs cut off at the bottom), they might think they’re already looking at the whole list.  This would be tragic as they wouldn’t know to scroll down and might assume you just don’t have many songs available.

To fix this you could design your app so that when the list appears it slides in from the bottom of the screen.  This way the user sees it scroll a little upon launch, and their pattern recognizing brain will naturally assume it can keep scrolling.  It’s small, but given the right situation the impact can be huge.

What do you look for in an app when you download it?  Or more importantly what have apps lacked in that made you think twice about keeping them?  Let us know in the comments below!

Changing Your Software In A Flash

Share if the site was helpful

Changing Your Software In A Flash

Android P is the hot new software that just hit the market, and as such those ahead of the pack will be scrambling to get it on their phones.  This doesn’t mean that they have to go out and buy a phone with the newest software on it though.  By flashing your current phone you’re able to gain access to either the newest features on the market.  Or if you’re feeling nostalgic you can flash your phone to older versions as well.

The term “flashing” may be a new one to you, but if so don’t worry.  All it essentially means is that you’re loading a different version of software onto your operating system.  (Although you probably figured that out from the first paragraph).  So flashing forward can get you fancy new features, but why would you go backwards?  One reason might be to conserve battery power.  A newer version is bound to drain your battery faster, so the trade off may be worth it. 

WARNING:

Now here’s where I throw out the very important disclaimer.  Flashing your phone will erase all data from the device, and doing things wrong may brick your device. This means that if things are done incorrectly or get interrupted then you may render you phone unusable.  This is why its highly recommended to only flash a phone when its full charged.  If somehow the phone died mid process things could get tricky quickly.

That being said flashing can offer some really cool features, so if you’re careful and follow a guide to do it properly the results are worth it.  So how do you do it? There are a few things that you’ll need to make sure you have on your computer before starting the process, but overall the steps are simple.  In all flashing shouldn’t take you more than 30 minutes (and that’s moving slowly following a guide).  Google offers a step by step instructional guide on its docs page, but in order to follow this you’ll have to have the following tools:

-Android Debug Bride (ADB) and Fastboot

-A phone set to developer mode

-The correct image for the version you’re flashing to

Flashing can be a really cool experiment to undertake if you’ve never done it before and want to change how your phone works.  Just make sure you proceed with caution and charge your phone in advance.  If you really want to know more about it and get support on flashing/rooting your device Phonlab offers a course that covers just about every phone you can imagine!

Keeping Your Keys Safe

Share if the site was helpful

Keeping Your Keys Safe

At some point in your app development career, you’ll create an app that has secrets.  By this I mean there will be keys inside that you want to keep secure from prying eyes.  If someone else gets a hold of your private info, the results could be disastrous (or expensive).

Let’s say your app uses Amazon Web Services and your monthly bill runs about $350 a month. That’s fine because you’re making the money back through app usage.  That is, until a 3rd party gets a hold of your secret key and decides to use it for their own purposes.  Then when your next bill comes due you find that you’re being charged for $50,000.

Not an exaggeration.  This exact scenario actually happened.  So the lesson is painful but memorable: secrets should be kept secret!  Let’s use this blog to talk about a couple ways people tend to store their keys and what you should avoid.

Avoid pushing keys to github:

I’ll start with what may sound obvious.  That sight that you put all of your code onto so that people can publicly view it?  Yeah, don’t put your secret keys up there.  This sounds obvious, but recent studies have shown thousands upon thousands of keys are available on public git repositories.  It’s possible your using a free service and don’t care, but if you’re being charge even a dollar for the service you’re using, keep it close to your heart.

Storing keys as basic Strings:

DON’T DO THIS!  Storing a key as a simple string is just asking for trouble.  There a couple issues behind this, but first and foremost is that it’s incredibly easy to access.  If you read our primer on reverse engineering apps then you know that it’s possible for 3rd parties to decompile your app and look at its code in its (almost) original form.  Storing a key as a string means the hacker just has to glance over your code and look for something that looks like a key.  Then it’s theirs and they can do what they want until you change it. 

Defining keys in build.gradle:

This is better than storing your keys as Strings in any old file, but the end result is unfortunately similar.  A lot of people put their keys in build.gradle in such a way that it’s created in the BuildConfig file of your app.  The bright side is your gradle file isn’t decompiled along with the rest of your app, so secrets are safe in there.  The downside?  Well, that BuildConfig class they were just created in isn’t as secure.  Again, our Strings are exposed in a very simple to access way.

Securing keys with Android NDK:

Let me take a second here to say something important: There is no such thing as absolute security.  If you’re going to have a secret in your app, all you can truly do is make it incredibly difficult to find.  Take the proper precautions to keep things safe, and a hacker will have to decide if it’s worth the time/energy to get to whatever is hidden.

With that said, the Android NDK (Native Development Kit) can help us use C and C++ code with Android.  Why would we want to do this?  Well for starters NDK libraries can’t be decompiled, so the information inside is a lot harder to find.  There are ways to access this code all the same, but we won’t go into them here.  It’s not perfect, but this will throw quite a few entry level hackers off your tail.

Make your code complicated:

This one again goes to what I said earlier about complete security.  It won’t happen, but you can make a hacker’s life hell by making your keys as hard to read as possible.  Let’s take a very basic example:  If your key was 123456, instead of storing that, you could make it the sum of the strings “12”, “34”, and “56”.  How you can break this up depends on how creative you can get, but there really isn’t a limit.  It just means more work for you both upfront and down the road to ensure you understand everything your code is doing.

Keeping keys safe is crucial for a large apps success, so you need to take precautions to avoid disaster.  If you have any suggestions for great ways to hide Strings inside your app let us know in the comments below!