23. April 2019

Android Studio Unresolved reference: activity_main – R.layout and R.id

You can easily run into mysterious errors with Android Studio. Here is one.

Suddenly all references related to R.layout or R.id stopped to work and build failed with a message like this:

Compilation error. See log for more details
Unresolved reference: activity_main
Unresolved reference: url_edittext
Unresolved reference: update_button

The code looked like this:

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

I tried clean, builds, rebuilds. Nothing helped. The problem was caused by simple import which accidentally occurred in Activity file:

import android.R

After removing this line the whole project was working again and even code hinting was correct.

15. April 2019

Android Emulator application crash: Chromium WebView package does not exist

Android application with WebView might crash with a strange error in Android Emulator:

E/WebViewFactory: Chromium WebView package does not exist
    android.webkit.WebViewFactory$MissingWebViewPackageException: Failed to load WebView provider: No WebView installed
        at android.webkit.WebViewFactory.getWebViewContextAndSetProvider(WebViewFactory.java:334)
        at android.webkit.WebViewFactory.getProviderClass(WebViewFactory.java:398)
        at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:211)
....

Check the definition of Virtual Device. It’s very likely that your device is using plain Android target which does not contain the WebView. You have to create Virtual Device which contains Google APIs.

Click Create Virtual Device. Select an image with “Google APIs“:

Now you can start the application in the newly created emulator with Google APIs.

The application should run without a problem.

20. February 2019

openSUSE firewall – YaST cannot continue the configuration

When you want to configure the firewall on openSUSE you can just type yast into the terminal.

Select Security and Users and from options select Firewall.

On fresh installation of openSUSE you might encounter following error:

Error
YaST cannot continue the configuration
without installing the required packages.

The fix is simple, just install yast2-firewall:

sudo zypper install yast2-firewall

Now you can start YaST and the firewall configuration will work.

23. December 2017

Courier: 556 Address unavailable

Courier Mail Server has many interesting features. One of the features is support for backscatter blacklist. It helps to protect the server from receiving emails which are not possible to deliver (e.g. in case of some problems with recipient’s account).

The common error message in that case is:

Courier: 556 Address unavailable

It’s not very straightforward how should an administrator resolve error 556. Even after fix of user’s account configuration, the message might appear and the Courier won’t accept an email even after restart. It could be even more confusing when Courier accepts email from some subnets, but it returns 556 Address unavailable on other subnets.

The resolution of the problem is simple: fix backscatter database.

Display list of addresses with on backscatter blacklist:

courier show all

Remove problematic address from the list:

courier clear user@domain

You can remove all addresses:

courier clear all

You can find more about backscatter blacklist in Courier’s documentation.

22. October 2017

SDL2_image for iOS with JPEG image format

Adding SDL2_image with JPEG support for iOS is a little bit different than for Android. In case of Android, it was necessary to add JPEG library in C and build it. iOS has JPEG dependency hidden in another library which is already compiled in frameworks.

If you just add SDL2_image to your project for iOS, you will very likely end up with following linker error:

"_kUTTypeJPEG", referenced from ...
Linker command failed with exit code 1

To resolve this issue, it is sufficient to add two dependencies into your project.

Go to Project and select Build Phases.

In the section Linking add library: ImageIO.framework

Then add the second dependency: MobileCoreServices.framework

Then Clean and Build the project.

These steps should resolve the linker issue, and JPEG should work.