The official SDK of the Android 6.0 Marshmallow has been revealed. It seems OTA is going to be updated in earnest with the appearance of Nexus 5 at the event in late September. What sort of test will be done to fully changed Android 6.0 and what should we care about? Let us now hear the explanation of Chanseok Yang, the renowned Developer Advocator of Google Korea.
What shall we test for Android 6.0 Marshmallow?
It has been around a month since the official SDK of Android 6.0 Marshmallow version. Have you tested whether your apps are working fine in Android 6.0 Marshmallow version? In Android 6.0 Marshmallow, Various new features have been added for users to use the Android devices more conveniently and for developers to provide more advanced user experience.
Among newly added features, 'run-time permission model', 'DOZE mode', and 'app standby' can affect not only apps newly built for Android 6.0(23) but also the existing apps(~ 22). If you did not test your apps in Android 6.0 yet, how about testing the changes which can change the way your existing apps work first?
Runtime permission model
When installing app that is built to targetSDK 23(Android 6.0), the process of identifying and accepting from user's permission is deleted. When needed a permission while running an app, you need to request for permissions that you want just like below.
Also, apps that are already installed can be appointed permission or deleted by following 'setting > application > (select ooo app) > permission'. Especially this method does not matter whether the device is built targeted to Android 6.0 or not. The use can restrict permission of the app. Thus, if the user arbitrarily deletes permission given to the app, go ahead and test how the app is working.
(translator) Frequently Asked Questions
Q: My Apps was built with a version under Android 6.0(23). Does it mean that I can not get permissions needed when they are downloaded and installed?
A: No. Apps built with versions under 6.0 have the same procedure of acquiring permissions during download/installation. Also, when you try to remove the permission through 'app permission' menu in the settings tab, you will see the following pop-up and it will demonstrate about it to the users clearly.(Don't worry~)
The usage of the device's battery is important. Android 6.0 has incorporated a new Doze mode to save battery usage whilst the device is not being used. The device will enter the Doze mode under the following conditions:
- When device is not charging
- When the device screen is off
- When the device captures no movement for a period of time
When the device enters DOZE mode, in order to save battery, all apps except for some core apps are limited in the following functions.
- Network access is deactivated.
- Sleep mode removal lock is ignored
- Alarms set through AlarmManager class are deactivated
(But alarms set with setAlarmClock() method and setAndAllowWhileIdle() are exceptions.)
- WiFi scan cannot be performed.
- The works of SyncAdapter and JobScheduler are delayed.
When the device enters DOZE mode, the network access of your apps will also be limited, and tasks registered through AlarmManager might not work in scheduled time.
All developers should test if your apps operated as intended when the device is in DOZE mode and it gets out of DOZE mode. In particular, you need to be extra cautious with apps like 'alarm clock' app which should carry out important tasks while the device is in doze mode.
You can test Doze mode by applying newly added adb command.
- Change those command below in order to not charge the battery.
$ adb shell dumpsys battery unplug
- Turn off the device screen.
- Repeat those command code to make the device into idle status.
$ adb shell dumpsys deviceidle step
- If you turn on the screen or make a big motion, you will come out from Doze mode.
- You will return the device to original condition through command below.
$ adb shell dumpsys battery reset
- You can check the status of your device through command below.
$ adb shell dumpsys deviceidle
OpenSSL Removal. Use new IAP SDK!
For OneStore developers, the moving away of Android 6.0 from OpenSSL to the BoringSSL library (See the notice from Google + ) is a big problem of using our purchasing Lib (IAP). As OneStore IAP have been using the OpenSSL(linking against OpenSSL library inside Android platform such as libcrypto.so and libssl.so), OneStore IAP SDK will not work on new Android 6.0 devices.
So, to continue using the OneStore IAP, please you must update the latest version of OneStore IAP SDK and follow the steps below.
How to update new SDK in your app !
- Download the latest version of IAP SDK
- Remove existing so files(libcrypto.so and libssl.so) and replace jar file with new one.
- Declare the following dependency in your Androidmanifest.xml file:.
<!-- API level -->
<!-- runtime permission for OneStore -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
Note: You will not upload your app build with the previous version of IAP SDK from Oct 5.