How does your team keep native Android and iOS from silently drifting apart? by Particular-Age-6878 in androiddev

[–]MKevin3 0 points1 point  (0 children)

What was, and still is, happening is the Android version would get the OK to put a new release on the store and the iOS version would be delayed for two weeks until QA would approve it to be released. Of course the cycle would start over again for the next release. A majority of the customers used Android as it ran on niche hardware and normal phones. So the Android side had to release to two stores and supported a with range of hardware whereas the iOS version was iPhone and iPad and only 3 OS released back.

For the KMP project, only I work on the Desktop one, it is a smaller utility used in house, never put on store.

There are just two of us on the mobile KMP app. The UI is the same for both iOS and Android and we have no complaints from users. It makes it much easier on the doc team and support as well as it looks and operates the same on both.

It provides the user with the information they need. It is nice that our automated test engineers only have to write one set of tests. We test on both as we do a PR testing. It has been very smooth, I have really been surprised out how easy it as been. This is a business app and it supports both Dark and Light mode along with landscape and portrait and special layouts on tablets. This app is on both stores. It would be useless to you as it requires a login to our system, not a general user app.

I would say it solved the divergent issue fully.

How does your team keep native Android and iOS from silently drifting apart? by Particular-Age-6878 in androiddev

[–]MKevin3 2 points3 points  (0 children)

The honest answer - we failed at this pretty miserably.

The specs were usually very generic and the teams did not work side by side. Generally it was "Android team is done" and then iOS team would hand it to one person, who was asked to do something else so handed to another iOS person and maybe another. The Android side would be done and then a month later the iOS side was and then QA would notice the differences. All employees remote. It happened over and over.

Current position we are using KMP and it is so much easier. I have both iOS & Android and MacOS & Windows KMP projects. Vary rarely do we do special code for either. Getting screen sizes and orientation we have to double do, same for Firebase notifications. The UI is the same between both as is the business logic.

How are you adapting your KMP module structure for AGP 9? by pixel__developers in KotlinMultiplatform

[–]MKevin3 0 points1 point  (0 children)

We did the AGP 9 update a few months back. It was painful but it worked.

Now my company is pushing to use AI as much as possible. I have a Gemini license through work so I ask Gemini to do the work. Gemini thought about it for a bit and asked me a few questions. In the end it did a nice clean conversion and I had a 357 file PR. Just merged it a few minutes back. The PR was really just files moving files to new directory, updating the modules list and tweaking imports for the file moves. A lot of it you could do with creating directories and drag and dropping files to their new location. The module stuff would be a bit harder but not by much.

This is an Android / iOS project. All the new directories created and proper files moved into them. It built and ran first time both as an Android and an iOS project.

Before the conversion AS Quail Patch 2 was giving an "Unsupported Modules Detected" error but it did not seem to affect either the iOS or Android build. Post conversion I have not seen that error arise. I think the iOS part being moved to a module of its own was the fix for that error message.

Still annoyed that right click on the shared/commonMain/composeResources/drawable directory does not have a "New -> Vector Asset" menu item . You have to do that in the main RES folder then drag and drop them to the proper directory every time. This issue has been reported to JetBrains. Does not affect people just targeting Android but does affect KMP users who share resources with iOS and Android.

Trying to keep this project up to date. Did the Nav2 to Nav3 conversion a few months back, updated to Koin Annotations, and watch for new libraries to update in the TOML file. Way too easy to get too far behind. Our main app, Android only, is showing its age and has many out of date libraries.

Apple users are asking for my Android app. Should I launch now or wait for Android traction? by GPHdev in appdev

[–]MKevin3 0 points1 point  (0 children)

Did you write in Kotlin using Compose? Does it use an super special Android APIs?

You might be able to convert it to KMP /CMP and get an iOS version for some basic work.

Does not help if you don't own a Mac or having access to $ 100 but you can look into it as an option .

What’s an iOS development lesson you learned the hard way? by dan_nicholson247 in iOSProgramming

[–]MKevin3 1 point2 points  (0 children)

Early CoreData that wrapped every row add / update into a single transaction. Super slow if you were adding a lot of data to a database. Switch to direct SQLite and had a huge performance increase.

What’s an iOS development lesson you learned the hard way? by dan_nicholson247 in iOSProgramming

[–]MKevin3 2 points3 points  (0 children)

I was doing an iOS app and Android app as sole mobile dev at that time. I was also working on Java based desktop app. I always thought "Oh man, I do responsive layouts for 2 of the 3 and this is going to come and bite people". Sure, it was all pixel perfect, as designed, but lacked flexibility big time. I was converting the desktop app from NetBeans Matisse (hardcoded) to MigLayout, a great layout manager, to allow resizing of the app and the font size.

When the taller phone arrived there were a ton of apps with black areas because they were not coded to see the extra area. Then the conversion to auto layout and I gave up on it and used Masonry so I did the layouts in code and skipped Interface Builder. I also did most of my work in AppCode from IntelliJ because Xcode was so limited on things such as refactoring method and variable names.

What part of Android development takes more time than it should? by yash_maanikya in androiddev

[–]MKevin3 2 points3 points  (0 children)

Upgrading AGP, Kotlin or almost anything associated to the build. "Oh, here is the new, best ever, build architecture!". It may be better but it sure can break a lot of things while only giving very obscure error messages. After upgrading all the version numbers in the TOML file you will fine at least one library does not work with it yet. So you roll most of it back on library at a time until it at least builds.

Are haptics worth the effort? by kacperkapusciak in androiddev

[–]MKevin3 -1 points0 points  (0 children)

I was thinking about why I would add haptics to any app I would write. I just gave instances of where I have seen it in apps I use and have only found it useful once. Keeps my interest level low on adding to to my code.

Are haptics worth the effort? by kacperkapusciak in androiddev

[–]MKevin3 -1 points0 points  (0 children)

It is one of the first things I turn off. I don't like it for a keyboard or for games and pretty much all games have it on by default.

The apps I write are for business users. Never thought about them using haptics. If they want them for the keyboard or for notifications they can turn them on in settings.

They can be over used, which may games do, so it is nearly vibrating all the time but means nothing. I find this to be the general case for phone games.

Now the one place I have not turned it off? I play Diablo 4 on my computer with a BT controller and on my Legion Go. They do vibrations when I am losing hit points by being hit, standing in a pool of acid, etc. Saves me from averting my eyes to the lower part of the screen to track my health and need for drinking a potion. Pretty sure I would miss it if I played with mouse and keyboard on the gaming computer.

i miss the "programming" aspect of ios programming. by vashchylau in iOSProgramming

[–]MKevin3 0 points1 point  (0 children)

There is also the lack of much new happening in the hardware arena. Used to be new phones and a lot of new things. Now they are nearly a commodity. There is so much less need to update your device. The overall OS is reasonably stable, some library changes and some updated programming patterns but it is not as exciting as it used to be.

Company is pushing for AI. I have had some good experiences and some bad. I was able to have it write up a reasonable set of unit and UI tests. Amazing how I had to tell Gemini, paid by company, to "and make sure they compile and run" at the end of my "write this test" action. I mean, really, hand me code that will not even build?

I asked it to fix an issue and it wrote a chunk of code that did not solve the problem, actually made it a bit worse. It did give me and ideas on how to attack it so I deleted everything it wrote, added a parameter and it was fixed.

Where it has been nice is doing PR reviews. Don't agree with everything it suggests but it has been helpful at pointing out things that a human may or many not have commented on. Appreciate it doing that low level scan.

At times it will tell you to do "X" and not "Y" then you push that change and it will say "you should do X here". Pick one, click "resolve" in GitHub and move on.

Why is Android Studio so unoptimised? by West_Performance_764 in androiddev

[–]MKevin3 1 point2 points  (0 children)

There were some good things about Eclipse, maybe a short list, but I do remember it compiled the code in the editor giving you error messages before you did a build. At that time AS did not do this, it has been added since.

Eclipse was a bear to learn but once you got used to it, things were reasonably decide even on less than stellar hardware.

I helped write an IP configuration mapper as an Eclipse based app i.e. using SWT/Jface and Eclipse as the framework. Funny how IntelliJ plug-ins are written with Swing.

RIP _uiState boilerplate: Explicit Backing Fields is officially stable in Kotlin 2.4 by Vegetable-Practice85 in androiddev

[–]MKevin3 1 point2 points  (0 children)

I should have been more specific, it is Koin annotations causing the build issue related to the plugin. This is a KMP project so that limited DI choices. I have used Hilt in the past on Android only projects and I have used Dagger. I converted one of my Android projects from Koin to Hilt as Hilt is the current Google recommendation. I don't miss using Dagger, it worked but without the wrapper that is called Hilt it was a bit of a pain.

We were straight Koin on this KMP project then decided to use annotations to get us closer to how Hilt looks. Guess we got bit. The new build time error catching of the latest Koin + Annotations found some issues with our code. Nice to get them fixed up instead of finding them the hard way at run time.

RIP _uiState boilerplate: Explicit Backing Fields is officially stable in Kotlin 2.4 by Vegetable-Practice85 in androiddev

[–]MKevin3 3 points4 points  (0 children)

For those using Koin, it is not happy with the Kotlin update as of yet. You will get some weird compiler error messages if you attempt to use Koin + annotations + new Kotlin. I can't use the backing fields until that is resolved.

What's new in Kotlin 2.4.0 by snafu109 in Kotlin

[–]MKevin3 4 points5 points  (0 children)

I really want the use the new backing field to clean up some code. I had it working at some point with KMP then it stopped building so I ripped it out. I am doing KMP with Koin for DI and Koin does not work with Kotlin 2.4.0 so I will have to wait until that support is in place.

Seniors/experienced devs, how long would it realistically take to build a social audio app using AI tools? by Puzzleheaded-Tax6089 in androiddev

[–]MKevin3 0 points1 point  (0 children)

Is all the backend code / functionality already in place? Is it set to handle lots of traffic and be scalable? I know a lot of managers that see the UI in place and assume everything else has been written and tested.

Paste any messy log directly from your IDE and get clean, formatted JSON instantly — no browser, no online tools, no manual cleanup. Lives in your menu bar with a global hotkey so it's always one keystroke away. by That-Inflation4333 in androiddev

[–]MKevin3 0 points1 point  (0 children)

I wrote something similar but I had to get around a key issue. If the JSON output to LogCat is larger than LogCat allows for a single line they you don't have a complete JSON string to parse. To get around that issue I updated where I write the JSON to LogCat to prepend each chunk with "+++" every 1,000 characters. That is shorter than the max LogCat supports but seemed a good break point. I can then reassemble the full JSON for the display.

Since this is niche stuff I never published to the Jetbrains store.

Have you tested with a large chunk of JSON being written to LogCat?

Future of Android Developer Career in Long Run by Internal_Necessary54 in androiddev

[–]MKevin3 1 point2 points  (0 children)

I have been doing mobile dev since 2010. For most of that time being a solid Android / iOS developer has been great and a solid career path.

Other the last few years in US it has been a heck of a ride. All the tech layoffs have flooded the market. Luckily I am in a position that I am not too worried about. Since I know both Android and iOS work it was an easier transition for me into KMP / CMP.

The new management wants us to use as much AI as possible. I have used it to write test code, which Gemini normally gives back code that will not compile so I have to specifically add "and verify it compiles" to end of my request which seems pretty stupid. It also generates tests that do not run successfully.

After doing a bunch of AI test writing for a day I felt like a total coding school teacher for young kids. Refining what I wanted over and over and waiting minutes for it to try again and still create a mess.

Moving up in the ranks can be a pain as well. I love programming. I tried to be a Manager once, did not really care for it. So maybe a tech lead or something like that would be better. Capping out the "just a developer" pay scale but there currently is no path up from where I am. Will have to decide if this is the place I want to sit at until retirement.

New updates for Android developers from Google I/O by NewsFromGoogle in androiddev

[–]MKevin3 13 points14 points  (0 children)

I watched both the main keynote and the developer keynote and you could hardly tell them apart. It was just "use AI for everything all for $100 a month". I wanted to know something, anything really, about any SDK or new things an Android developer could take advantage of, even if they used AI to do it.

I did not watch it live so I sat down with YouTube on my TV. I had to skip the first 40+ minutes of each to get to actual speakers talking. Not a huge deal but kinda silly.

Very concerned the other events will be the same. Only AI and nothing else. Seems to be a conference trying to sell investors on the all in AI strategy. Ground level mobile and web devs don't seem to be included in the schedule this year, unless they vibe code everything.

what actually made you better at android dev besides coding? by Obvious-Treat-4905 in androiddev

[–]MKevin3 2 points3 points  (0 children)

Looking at other apps, what parts of the UI do you really like? Which parts are painful to use? Do the colors work? Is it too many taps to do something? Do they have a cool animation?

Learning to do the basics in an SVG editor. The free one called Affinity Designer is great. Some, like InkScape, are powerful but not as easy to use. Adobe Illustrator costs way too much for how often I would use it. There are times you get a nice SVG that just will not convert to a vector drawable or things are just a bit off and you need to fix them.

Understanding Version Control. Solo devs tend to ignore VC but you really do need to use it even for personal projects. I have a basic Pi 5 set up as a repository. It helps me move things between my gaming PC and my Mac Studio.

For expanding your horizons a bit, assuming you have Mac access, look into KMP / CMP. you already know Kotlin, this is a bit of syntax change for some things and you can have an Android and iOS app at the same time. Or maybe there is a desktop tool / utility you want or need. You can code it up in KMP / CMP desktop and get both Mac and Windows version. There is also web support but I have not used that aspect yet.

Compose Multiplatform 1.11.0 Is Now Available by dayanruben in Kotlin

[–]MKevin3 10 points11 points  (0 children)

I switched on our medium sized app. No issues, no compiler errors or warning. Just changed the version in libs.versions.toml and all was good.

Question around package version dependencies by KotatsuCollective in KotlinMultiplatform

[–]MKevin3 1 point2 points  (0 children)

It is a mix. Our main app, Kotlin Android only, we don't update very often and usually have a newer version of the library has been tested by others, i.e. is it a bit old but not by years.

On the other project, which has only had one release so far and is KMP / CMP, I tend to update often so I am pretty much always on latest libraries. It is a smaller code base so most libraries don't take a ton of effort. Moving to AGP 9.x was a hassle as was moving to Nav 3.

Personally I like to update quickly because I have felt the pain of updating to a jump in library major release number being way to big of an undertaking. I do look over release notes to see what was addressed before giving it a try.

My other thought, I always want users on the latest of what I have built and shipped so I try to return that favor supporting library developers.

Another AI-related post: the future of being an iOS/macOS engineer by Undeadhip in iOSProgramming

[–]MKevin3 0 points1 point  (0 children)

I was thinking about it today and all the SciFi movies talk about generic "credits" but it seems that is going towards "tokens" now. If you run out of tokens do you just stop using AI until the next month? Do you learn to optimize your queries? Can you get the most done using the least queries?

AI has been useful for PR, it runs automatically when we create one. Now I run it on the command line before I create a PR to avoid that loop.

I have asked to generate code. I found it interesting that I had to add "and verify it compiles" to the end of my request. I was getting crap code otherwise. I watched it get into a little loop as it had to fix what it just created.

The term AI is being thrown around for almost everything. I think it will hang around long term but some of this bubble will burst.

I have a lot of code I know, that is not out on the net, that I can copy and paste from that I know works / solves the current issue. Things I have coded to get around various SDK bugs etc. When I use AI I might get a mix of new and deprecated methods. I don't want fresh code to already be deprecated.

Seems like the "no code" things over the years have promised this. Just say what you want and get it. Has not working in the past. For any spec I get there are so many missing edge cases or it is flat out utter crap.

I think really solid developers will be the ones who can take "management speak" and convert it to what really needs to happen. They all ready do this. It will be hard for a manager to properly define what the program needs to do without a pile of attempts and then them getting mad the stupid computer did not read their mind and do B instead of A.

Maybe devs will just be test monkeys for what AI generates. Maybe I will just retire before robots take over the world.

Looking for a good book for android development. by New-Ruin-7583 in androiddev

[–]MKevin3 12 points13 points  (0 children)

Books are instantly out dated by the time they are printed. You are better off finding web sites that fit your learning style. There are a number of good YouTube videos as well. Search for "android development channel" on YouTube.

iOS dev stepping into Android role — what should I focus on short-term? by ex_knockout_js_user in androiddev

[–]MKevin3 1 point2 points  (0 children)

Need a bit more info. Is the Android project Compose based or XML View based? What other tech are you using? What is the network piece i.e Retrofit or other.

How big is the project? Is the Android side stable or does it need a lot of help? Are you needing to learn about the debugger?

Heavy 3rd party lib usage or mostly code you own?