I did some research and i can't find a proper custom marketplace solution for Android, i would like to know if someone knows any, with the possibility of being hosted and maintained by us, and fully customizable.
I read about F-Droid but it doesn't seems to be very customizable, as far as i know.
Thank you all.
Well you have a few options. We built our own app store at the last contract I was in. From a file storage it was pretty straight forward. For Android we just supported unknown devices at first, but later switched to integrated MDM(Mobile Device Management) system. I can't remember exactly which one we landed on in the end.
However, for the iOS side we had to build SSL pointers that are nested in a manifest file that points to the IPA. For Android, we just had to sign and place the APK. For Web packages, we hosted an internal NPM server.
For the packages we used Apache Archiva, but that is not the same thing, so just tossing that out there if it matters at all to you.
Lastly, we built an Angular based web interface to handle Authentication and displaying of available apps/versions. Lastly we built an app to put on the app store that others would install that would keep up with our services to know what was installed, needed upgraded, or uninstalled.
However, this took a team of engineers over a year to get done.
So let's talk free options. Just google Android Market Place self hosted alternatives. Last year at the CES I met with Aptoid and they were deploying many self hosted, self managed options that would fit your need very nicely. I don't remember the exact pricing though.
So bottom line is, depends on how fancy you want to get and if you have time to build your own, or if you want to buy/subscribe to one out of the box.
Hope that helps.
Related
I am trying to understand at a little bit lower level how Android Instant Applications work, as well as analyse a bit the security aspect. I know you create an app, it has its modules and activities, and you need to specify an URL entry-point for each feature module. Now, I have my application, I have my link, I browse to it. Two questions here:
1) How does Android, my browser, DNS, whatever parses that link, know that it's not a normally browsable internet link, but that it's actually an instant app and and should open it like an instant app using the android framework, download base and feature modules, isntant-compilation, etc. ?
2) What does it actually do after it understands it's an instant app? What calls are made? WHERE exactly is the application contained? We start from the browser we use to search and find that link, after that? Is it contained in that browser's sandbox? Does it create a new container for that app? From a security perspective, this information would be quite important and interesting.
How can I gather more info about all this? Are there any tools that allow me to see into these load procedures? Any link to some extra documentation or knowledge of how this particular aspect of android works?
I suspect there won't be much public info because even though they were introduced in the end of 2016, Instant Apps is still a very new and explored feature, but that's exactly what I'm working on. If there is anything that can allow me to see what's going on, tools, debuggers, stuff I don't even know it exists, please let me know.
Isn't Branch really redundant, at least in Android? With questions like: Android - Is it possible to get install referrer programmatically
where we can do our own deep-linking, isn't Branch just another redundant tool now(at least in android)?
I can do all the things that Branch offers without integrating Branch at all.
Or am I missing something?
(Full disclosure: I did a Branch app integration last year and now work with the Branch team.)
This is a good question, and you're right: the deep linking landscape on Android has advanced quite significantly, especially with the introduction of App Links in Android M. As you mentioned, the Google Play Install Referrer (which Branch does also use) is available to anyone and passes a limited amount of data through the installation process. However it doesn't always get delivered reliably and isn't especially flexible. Many of Branch's partners had previously tried this approach and found it was too slow.
Branch does still offer a few benefits
Since there aren't really any deep linking 'standards' yet, Branch can still be a useful plug-and-play option for developers. Here are a few specific areas where Branch helps:
Edge cases
Given how many Android devices and OS versions are available, there are a ton of these. You’ll think everything is going great until you get that one user complaining that her links aren’t working on Facebook while running Android 4.4.4. Branch is currently tracking over 6000 of these situations (source), which can save you this nightmare and ensure that your links work everywhere.
Data flexibility
The Google Play Install Referrer lets you pass in a few strings via URL query parameters, but it isn't persistent storage and only works during the first install. Branch allows you to send almost anything you can think of (and also adds some useful analytics data), and it's available permanently with every link your users ever click.
Cross-platform
I know you asked specifically about Android, but if your app has an iOS version (or might launch one in future) then Branch makes it really easy to handle everything with a single system.
Value-added tools
Not deep link tech per se, but Branch can also let your users preview app content before installing, text themselves download links from their computer, and see detailed analytics for every piece of content inside the app, amongst others. Yes, of course those could all be developed in-house, but they're a big resource commitment.
I work at a large company that is looking at building apps for internal use only (iPhone/iPad). We are looking for a SIMPLE way of creating apps that essentially are just a web browser with a predefined URL and no address bar/tabs, etc. Essentially a very dumbed down browser with a custom logo. What is the easiest way to accomplish this?
We would obviously be distributing these oursevlves and they wouldn't be available in the App Store, so app guidelines aren't an issue. We are on Windows boxes and are Java/Web developers so we'd rather not get into too much C sharp if at all possible, fyi. Basically it'd be nice if the tool (if one exists), were to allow us to give it a URL, an icon image, and it builds the app from there.
And while we are starting out with Apple devices, we need to be cross platform compliant with whatever tools we use because I can imagine the day when they decide to buy Android or WindowsPhone devices later on.
MobiOne? PhoneGap? Appcelerator Titanium SDK? Can either of these do what we need? Something else?
A big 'No' for MobiOne. I bought it for 99 dollars. As they advertised, I was able to create a static app within hours. But that's pretty much what MobiOne can do. The moment you start using html, javascript or even audio, all sorts of problem seem to creep up. And there is no support in their forums either. My basic question about using the audio player remains unanswered for a month now.
Here is the worst part:
The tool has a poorly built emulator. Often times, my app worked fine in the emulator but failed to run when deployed to a real device. And at times, i have seen the vice versa too.
Since then, I switched over to PhoneGap(which is free). It took me 2 days to just set my environment right. But once I had the environment setup, it took only minutes to deploy my app in to a virtual device.
Looking at your requirement, I would say that your safe bet is PhoneGap.
I don't have a working knowledge in Titanium but I read in a lot of forums that it supports less platforms when compared to PhoneGap. Titanium seems to give a more native feel to the app but that also means you cannot port it to multiple platforms without changing the code.
Apple may reject your app if all it does is wrap a web site in a WebView. You need to have more functionality in your app than just loading a web page.
From the app review guidelines for iOS:
2.12 Apps that are not very useful, are simply web sites bundled as apps, or do not provide any lasting entertainment value may be rejected
You would need to add additional screens to the app like an about page and a contact us page in order for your app not to be rejected.
As you say you know JavaScript, look into appcelerator.com it allows you to build cross platform apps and only writing your code once.
I would re-evaluate your reason for wanting to create these projects as an app in the first place. What app functionality do you want that you don't have now with your web page? You didn't mention anything in your question that would indicate this needs to be an app.
On Apple devices, you could create an icon that points to a web site. You could define the pages in a way that hides the address bar. Lastly, the web pages could easily be cross-platform already.
Wrapping this into an app would just possibly complicate the process. You may need to deploy updated app code to the device, where a refresh in a browser works just as well.
I'm working on an android app which would connect to a web server which would power a social network and data store inside the app. Recently we decided that we would use a landing page and pre-order page to try and try and market our app before we launch.
Right now I'm working to create the landing page and I ran into a whole host of problems. Namely, that we would need a landing/pre-order page that would tie into the social network and would run off the same set of usernames/emails (we need to honor discounts/ deals). I've spent the whole day looking at our options and I came to the conclusion that
Static hosts (probably) wont work for what we are doing. We would need a cloud host
I only have previous experience in Windows Azure but the cost is prohibitive.
Any host that I choose would require a significant time investment.
So I'm at a complete loss. I took a look at Amazon EC2, Google App Engine, and a few other hosts like Heroku and Linode and realized I would have to spend at least a day or two working just on learning the workings of the services to effectively use them. So the tl;dr is: I need to pick and choose a single webhost to host a back end for an android app and my website. Which host should I pick?
EC2 may require more effort to maintain but you will be able to do what you want. It will basically give you bare bones Linux server where you can install anything you want and choose whatever implementation you need (Java, C++, Perl - name it.).
It cost some money but for the first year they give Micro instance for free. Which gives you room to grow.
I don't have much experience with Google App Engine, but as far as I understand, you will be more constrained to specific things that Google offers. It may not be a bad thing as it seems to be easier to maintain. But long term you will be locked in to it.
So weight carefully.
GAE has two big advantages for this case:
It's free: for the description of what you want, it does not seem that you'll be over the free quota, at leas at the beginning.
You can write it in java, which means reusing a lot of code in the final android app.
(Sorry for my english)
I'm new using Android (in fact, I'm just testing android) and I have a lot of questions...
Well, let me explain you the situation. In this moment, in my job, I am writing my code with C# and run it on Windows Mobile 6, the apps are used to make sales, send bills, reserves, etc. The devices (iPAQ 216) are given to the salesmen, and they must use the apps and update them via internet.
Each salesman have a unique client list, unique data and (in some cases) an unique set of apps, which means that I need to prepare a different package for each salesman. Using a Microsoft tool (cabwiz) I can prepare automaticaly a different package for each one of the 150 salesmen. They download their specific package using a tool wirtten by me, and install it and everyone is very happy (maybe)...
Is that possible in Android? How? and if it is not possible, do you know an idea how to accomplish somewhat like that...?
It's not going to be as easy as cabwiz, I can tell you that. But it would be possible, theoretically, to write a script that modifies/generates the unique portions of the source and then compiles a new copy for each user.
If the only difference between the apps is the data on them, then there is no need to generate a different package for each user: have the app download the data from your server and save it after the app is installed. You could also make some modules (I can only guess what kind of functionality you're talking about with regards to different apps per user) only accessible to particular users.
Yes, it's possible however:
You may want to look into writing in java rather than C# as that's more officially supported on android
There are some limitations of the android APIs, in particular there are basic behaviors of the device that can't be altered - without rooting there's no equivalent to the "hook" functionality of windows.
Make sure you get devices with the menu option to enable installation of applications from 'unknown sources'; otherwise deployment will be a lot more difficult. At that moment, this amounts to avoiding AT&T, as their devices presently confine you to the android market or physical connection to a machine running the developer tools as distribution channels. (As a work around you can upload your apps to the market and not publish them, though that won't fully keep them private unless you also include something to require authorization when they run. You could also install the minimal set of dev tools on the salesmens' laptops)
You will probably want to learn about the command-line application build tools and scripting in order to generate a custom apk for each salesman. Once the devices are set to allow unknown sources, you should be able to email the salesman the apk (or a link to it) as an attachment. You should also be able to make the custom apk refuse to run except on a device matching some fingerprint data you've previously collected. While you can develop for android under windows, you may want to look into switching to linux in order to make some of this scripting a little more natively elegant.