• Breaking News

    Saturday, January 25, 2020

    Android Dev - App Feedback Thread - January 25, 2020

    Android Dev - App Feedback Thread - January 25, 2020


    App Feedback Thread - January 25, 2020

    Posted: 25 Jan 2020 04:28 AM PST

    This thread is for getting feedback on your own apps.

    Developers:

    • must provide feedback for others
    • must include Play Store, GitHub, or BitBucket link
    • must make top level comment
    • must make effort to respond to questions and feedback from commenters
    • may be open or closed source

    Commenters:

    • must give constructive feedback in replies to top level comments
    • must not include links to other apps

    To cut down on spam, accounts who are too young or do not have enough karma to post will be removed. Please make an effort to contribute to the community before asking for feedback.

    As always, the mod team is only a small group of people, and we rely on the readers to help us maintain this subreddit. Please report any rule breakers. Thank you.

    - Da Mods

    submitted by /u/AutoModerator
    [link] [comments]

    Insecure keystore implementations

    Posted: 25 Jan 2020 05:48 AM PST

    As part of my work I've discovered during past 2 years four different Android phones that have a critical vulnerability in their keystore implementations.

    Basically whenever such a device creates an RSA keypair, the key is always the same across ALL devices. All findings were reported to the device manufacturers, 2 of them patched the issue, 2 have not responded.

    How is this even possible? Shouldn't Google compatibility test suite cover this sort of thing? Quite easy to test, create two keypairs and make sure they're not the same. It's not like the phones are from unknown companies (Nokia for example, luckily they fixed quite rapidly).

    Not sure how to proceed with the 2 manufacturers who have not acted upon the issue.

    submitted by /u/loGii
    [link] [comments]

    On the Storage Apocalypse: Isolating existing apps from negative reviews from Android 10 users

    Posted: 24 Jan 2020 08:17 PM PST

    NOTE: jump to the "Splitting an app" section below to skip the discussion section

    EDIT: as pointed out in Tolriq's comment thread - https://www.reddit.com/r/androiddev/comments/etm048/_/ffhoicp - distributing the two APKs as Multiple APKs or if you are willing to use App Bundles, then as an App Bundle - these are also options available to you. However, with these you do not get an opportunity to phrase your Description differently to the two demographics - for example if you want to NOT publicize an old feature that you can no longer support with the new crippled storage options, then you wont be able to say that (unless you want to add if-then statements to your Description that will confuse earlier android version users as well).

     


    With the upcoming extinction of storage as we know it in Android 10, and with the alternatives being still not clearly defined:

    • Scoped Storage (using MediaStore)

    • Storage Access Framework (SAF) - which may require approval by Permissions Declaration Form in the future (see the first link in the References section at the bottom)

     

    Some developers may be unable to update their apps successfully to the new models - some may be short of time to update all their apps, and some apps' feature sets may not translate well to the new limitations (even using the MediaStore/SAF alternatives).

    Once Android 10 users encounter their app, it will lead to bad ratings, and support issues. And we are not aware if the storage changes for Android 10 are the final change - it could be reversed in the future if it turns out to be a disaster.

    In such a situation, some developers may want to isolate their previous apps from the headache that will accompany Android 10 (as users ask where their files went and cannot be found).

    Some apps which were designed from the ground up to have access to persistent storage access on local storage, may not be fully constrainable to the new model (where files saved are non-persistent or stored in some sandbox no longer visible to other apps).

    Knowing the limitations of Android 10, developers may want to not promise some features (that they used to promise for previous Android versions).

    All these changes militate for a split in how your apps are going to target users - if you want to save yourself from needless support distractions.

     

    The solutions are:

    • limit the apps to no longer be visible to Android 10 users

    • split those apps so the older version is not visible to Android 10 users, but newer versions (which you can appropriately set Description and capabilities to reflect the newer limited features)

     

    We did this with a hearing aid app we made some time ago which was using a new android audio engine with low latency. This audio engine was promised to be available for Oreo 8.0. However, on arrival even though their docs and support forum still said it worked great for Oreo 8.0, the reality was that it did not work for half the Oreo 8.0 devices out in the wild (Google engineers were focused primarily on testing on Pixel devices and didn't know their much publicized engine did not work on half the Android Oreo 8.0 devices out there).

    As a result the app we created was a disaster from day one, as all manner of devices were showing up as being unable to run the app.

    Some time later, and after prodding by developers, Google started acknowledging that the engine won't work for Oreo 8.0 after all (they took even longer to change their promotional material which continued to lure developers into using it for Oreo 8.0). In the end, the engine was stated to work on Oreo 8.1.

    Because our app was already out there, and suffering from hordes of 1-stars, we split the app - one targeting up to Oreo 8.0, and one (new app) targeting Oreo 8.1.

    This may not have been ideal, but it allowed all the 1-star reviews to go to the Oreo 8.0 and lower version, while at least the Oreo 8.1 version was saved from such criticism.

    The older app (which now became an Oreo 8.0 and lower app) was not visible to Oreo 8.1 users and above, and the new Oreo 8.1+ app was not visible to Oreo 8.0 and lower users. Thus we split the demographic - directing all the problematic Oreo 8.0 users to go to the old app (which the by now bad ratings) - while directing new Oreo 8.1+ users to the new app (which thus had a chance to get good ratings).

    For Storage we need to so something similar.

    We need your old app to be limited to below Android 10, so it is saved from the ire of Android 10 users. And if you want to have a version for Android 10 and above - that you do with a new app.

     

    Splitting an app

    Here are the API numbers for Pie and Android 10:

    https://developer.android.com/guide/topics/manifest/uses-sdk-element

    Android 10.0 - API 29

    Android Pie 9.0 - API 28

    OldApp's AndroidManifest.xml probably did not have a maxSdkVersion - because you were not previously limiting it's visibility to higher android versions (since Android previously used to assure that all old apps would run on newer Android versions - no more).

     

    OldApp's AndroidManifest.xml now should limit it's visibility up to below Android 10 - i.e. up to Android Pie 9.0 (API 28):

    Add:

    android:maxSdkVersion=28

    You can keep your old minSdkVersion etc. as before, since you are not limiting behavior for older versions of Android.

     

    Reference: As you can see the Android documentation is already obsolete - here Google argues how old versions of the app will always work on new Android versions. The old mantra - now discarded with these Storage changes in Android 10 - is no longer being honored by Google (but it's vestiges still remain in the docs, misguiding users):

    https://developer.android.com/guide/topics/manifest/uses-sdk-element

    By design, new versions of the platform are fully backward-compatible. Your application should work properly on new versions, provided it uses only standard APIs and follows development best practices.

     

    With the changes to maxSdkVersion above, Android 10 users will not see OldApp on Google Play Store.

    If you decide to create a new app - or even just use the same app (Google will not penalize you for Repetitive Content because these two apps will address separate demographics - each seeing only one version) - with this new app you now get the advantage that you can couch it's Description to the new Android 10 users, caution them about limitations to storage in the Description, and possibly in the app's help section or what's new section as well. And you get the ability to actually LIMIT or remove those features which you could not translate well over to the new Android 10 storage model (where files saved are saved instead to a sandbox and are not persistent in the old sense). Even if you use MediaStore or SAF, use of those may still limit some features from being translated well, and having a separate version of the app will allow you the freedom to tinker with the presentation of those features (independent from how your old app used to do it).

     

    NewApp's AndroidManifest.xml:

    You probably already had a minSdkVersion setting (probably was set to API 22 or some such) - well now you set it to Android 10 (API 29) - as this new app will target only Android 10 and above users:

    change:

    android:minSdkVersion=22 (or whatever you have)

    to:

    android:minSdkVersion=29

    You don't need to specify the maxSdkVersion for the NewApp because this will work for all versions Android 10 and above.

     


    References:

    submitted by /u/stereomatch
    [link] [comments]

    Completely custom animations using DiffUtil

    Posted: 25 Jan 2020 03:44 AM PST

    How long does the approval of an app lasts?

    Posted: 25 Jan 2020 04:21 AM PST

    Its been 20 hours now, would like to know whats the normal time for that. In german forums they say around 3-5 hours :/

    submitted by /u/StreamDev
    [link] [comments]

    What is the best AdMob alternative wrt $ income

    Posted: 25 Jan 2020 07:36 AM PST

    After being terminated by Google AdSense without been given a real reason, answering my requests for appeal, or any other human-like interaction, I am looking to find the best alternative to AdMob.

    I have earned around $500/month before and have replaced two apps with MoPub. However this only returns $30/month ( approx. 10% of AdSense ) making my side-hustle a hobby rather than a side-hustle.

    Which are proper alternatives ( which will not incite google to kick you off the Play Store ) to earn closer to the AdSense revenue ?

    submitted by /u/AstraNOS
    [link] [comments]

    Dalek: UI driven state machine that will exterminate your bugs

    Posted: 25 Jan 2020 07:08 AM PST

    State of Magisk: 2020 - topjohnwu

    Posted: 24 Jan 2020 06:34 PM PST

    Ad network for non Google Play app

    Posted: 25 Jan 2020 01:04 AM PST

    Hey, my App was removed from Google Play, does anyone know an Ad network for which it's not necessary to be published in Google Play?

    submitted by /u/SandorRado
    [link] [comments]

    What are the most common tests you write for android app?

    Posted: 25 Jan 2020 03:01 AM PST

    Benefits of Writing as a Software Engineer

    Posted: 24 Jan 2020 08:48 PM PST

    Any devs using Navigation Components? Good, Bad or Great?

    Posted: 25 Jan 2020 06:04 AM PST

    Navigation Component was released a while ago I guess. I heard about it when it came out and thought i will eventually learn about it but then forgot. Now I started learning iOS Programming and after seeing storyboard I remembered the Navigation Component. I know storyboard is a whole different thing but the idea is kinda the same to handle navigation right.

    So any one tired the navigation component in their daily Android Programming? Is it better at handling backstacks then doing navigation through code? I do navigation through code and handle the backstack but I really hate it.

    Love to hear your thoughts and start a discussion.

    submitted by /u/ahmermughal
    [link] [comments]

    Now in Android: January 23, 2020

    Posted: 24 Jan 2020 02:02 PM PST

    The Story of Our Big Android App Rewrite at Gojek

    Posted: 24 Jan 2020 08:47 AM PST

    How to mux/merge multiple mp4 files into one video file on Android

    Posted: 24 Jan 2020 11:38 PM PST

    When you use front facing and back facing cameras on Android, you have to make separate mp4 files each time you switch cameras while recording. I got that working just fine, but now I need to merge each video into one combined video and am having trouble finding resources on how to do that.

    Here's my SO post:https://stackoverflow.com/questions/59905980/merge-mux-multiple-mp4-video-files-on-android

    submitted by /u/shirefriendship
    [link] [comments]

    Kotlin 1.3.70 Early Access Preview - EAP

    Posted: 24 Jan 2020 06:25 PM PST

    Anyone here using a collapsing toolbar with an image that draws under the status bar?

    Posted: 25 Jan 2020 03:04 AM PST

    Does your status bar jump around like this?

    https://imgur.com/DMzi68O

    The frame where it happens:
    https://imgur.com/sSfYtW9

    Looks super ugly.

    It starts happening when I set fitsSystemWindows on the AppBarLayout. But without that attribute, the AppBarLayout doesn't draw under the status bar.

    submitted by /u/Fr4nkWh1te
    [link] [comments]

    What Android TV device does Google use when reviewing for Android TV?

    Posted: 25 Jan 2020 01:51 AM PST

    I'm trying to release our game for Android TV via Google Play Store, but as soon as we submit Google responds that the game crashes on start.

    The game does not crash in the Android TV emulator regardless of what Android TV OS I use, so I want to purchase a real device to test on.

    submitted by /u/Gloinart
    [link] [comments]

    IntelliJ IDEA 2020.1 EAP: Java 14, improvements for Git and UI, and much more

    Posted: 24 Jan 2020 10:30 AM PST

    Use cases to use a service properly?

    Posted: 24 Jan 2020 12:40 PM PST

    When would I use a service? As opposed to coroutines, rxjava, and/or workmanager?

    I know the importance of a foreground service, to keep your process alive, but what about a regular sercice? or intent service? It just feels like I can accomplish service work with coroutines or workmanager.

    submitted by /u/Beermecaptain21
    [link] [comments]

    facebook/hermes: Hermes is a small and lightweight JavaScript engine optimized for running React Native on Android.

    Posted: 24 Jan 2020 04:23 PM PST

    Can you give me examples of where Android 10's gesture exclusion zones are actually used? Even the Playstore and YouTube seem to be missing them in places where they should be

    Posted: 24 Jan 2020 06:01 PM PST

    SQLiteDatabase.query orderBy cluase: "SELECT": syntax error (code 1 SQLITE_ERROR):

    Posted: 24 Jan 2020 05:39 PM PST

    I found the below syntax for orderBy clause:

    String orderBy = "SELECT * FROM " + TABLE + " ORDER BY " + COL_NAME + ";";

    but it gives this error:

    E/SQLite Exception: near "SELECT": syntax error (code 1 SQLITE_ERROR): , while compiling: SELECT _id, name, organization, phone, address, email, web_ad, inf, birthday FROM contact ORDER BY SELECT * FROM contact ORDER BY name;

    what's the mistake I'm making?

    submitted by /u/fiveMop
    [link] [comments]

    No comments:

    Post a Comment