Giter Site home page Giter Site logo

jaredrummler / androiddevicenames Goto Github PK

View Code? Open in Web Editor NEW
1.4K 58.0 184.0 20.14 MB

A small Android library to get the market name of an Android device.

License: Apache License 2.0

Java 79.63% Kotlin 20.37%
android-device device-detection android android-library

androiddevicenames's Introduction

Android Device Names

Maven Central License API Twitter Follow

A small Android library to get the market name of an Android device.

On many popular devices the market name of the device is not available. For example, on the Samsung Galaxy S7 the value of Build.MODEL could be "SAMSUNG-SM-G930A", "SM-G930F", "SM-G930K", "SM-G930L", etc.

This small library gets the market (consumer friendly) name of a device.

Usage

Setup the library

DeviceName.init(this);

Get the name of the current device:

String deviceName = DeviceName.getDeviceName();

The above code will get the correct device name for the top 600 Android devices. If the device is unrecognized, then Build.MODEL is returned. This can be executed from the UI thread.

Get the name of a device using the device's codename:

// Returns "Moto X Style"
DeviceName.getDeviceName("clark", "Unknown device");

Get information about the device:

DeviceName.with(context).request(new DeviceName.Callback() {

  @Override public void onFinished(DeviceName.DeviceInfo info, Exception error) {
    String manufacturer = info.manufacturer;  // "Samsung"
    String name = info.marketName;            // "Galaxy S8+"
    String model = info.model;                // "SM-G955W"
    String codename = info.codename;          // "dream2qltecan"
    String deviceName = info.getName();       // "Galaxy S8+"
    // FYI: We are on the UI thread.
  }
});

The above code queries a database included in the library based on Google's maintained list . This supports over 27,000 devices.

Download

Download the latest AAR or grab via Gradle:

implementation('com.jaredrummler:android-device-names:2.1.1') 

License

Copyright (C) 2015 Jared Rummler

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

androiddevicenames's People

Contributors

jaredrummler avatar jaredsburrows avatar rocboronat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

androiddevicenames's Issues

Official TechSpecs API

Hi guys,,

If you're looking for an API to get the official specs and features of any smartphone in the world, checkout TechSpecs API. It provides the easiest way to get the details of any device like Model Name, CPU, Camera, Battery etc.

No value for manufacturer

Hi,
we upgraded to 2.0.0. Following exception is thrown:

org.json.JSONException: No value for manufacturer
     at org.json.JSONObject.get(JSONObject.java:399)
     at org.json.JSONObject.getString(JSONObject.java:560)
     at com.jaredrummler.android.device.DeviceName$DeviceInfo.<init>(DeviceName.java:374)
     at com.jaredrummler.android.device.DeviceName$DeviceInfo.<init>(DeviceName.java:347)
     at com.jaredrummler.android.device.DeviceName.getDeviceInfo(DeviceName.java:186)
     at com.jaredrummler.android.device.DeviceName.getDeviceName(DeviceName.java:138)

Missing device info triggers exception

While testing with an emulator, it was trying to resolve "generic_x86_arm" and could not get JSON data from the server.

getDeviceInfo

       String url = String.format(DEVICE_JSON_URL, codename.toLowerCase(Locale.ENGLISH));
       String jsonString = downloadJson(url);
       JSONArray jsonArray = new JSONArray(jsonString);

If downloadJson fails and returns an empty string, it will fail on JSONArray.

org.json.JSONException: End of input at character 0

Not a huge deal since it is caught but it looks bad to see in the debugger.

How can we manually update the Database

How can we manually update the Database, android-devices.db & android-devices.zip files. I want to exclude the devices lower than android 6.0. So i can decrease the library size.

Wrong name for Huawei Mate 20 X

Hi,
for my Huawei Mate 20 X model EVR-AL00 getDeviceName return HUAWEI Mate 20 X (5G) which is wrong.
I made code inspection with following results:

  • in database is correct name, checked by SQLLite DB browser:
  • HUAWEI Mate 20 X (5G) HWEVR EVR-AN00
    HUAWEI Mate 20 X (5G) HWEVR EVR-N29
    Huawei Mate 20 X HWEVR EVR-L29
    Huawei Mate 20 X HWEVR EVR-TL00
    Huawei Mate 20 X (5G) HWEVR EVR-N29
    Huwei Mate 20 X HWEVR EVR-AL00

  • there is also mistake "Huwei" should be "Huawei"
  • in source code DeviceDatabase.java is in line 60-62:
  • if (codename != null && model != null) { selection = COLUMN_CODENAME + " LIKE ? OR " + COLUMN_MODEL + " LIKE ?"; selectionArgs = new String[] { codename, model };
  • that "OR" in condition and next moveToFirst in line 77:
  • if (cursor.moveToFirst()) { name = cursor.getString(cursor.getColumnIndexOrThrow(COLUMN_NAME)); }
  • caused that first row is returned, which is HUAWEI Mate 20 X (5G) HWEVR EVR-AN00 which is different from EVR-AL00

Probably would be better first try select from database with "AND" operator and when nothing is returned, then try with OR operator.

Suggested change:

  • DeviceDatabase.java:
  • line 95 public DeviceInfo queryToDevice(@Nullable String codename, @Nullable String model, boolean exactly) {
  • line 102-103 if (!TextUtils.isEmpty(codename) && !TextUtils.isEmpty(model)) { if (exactly) { selection = COLUMN_CODENAME + " LIKE ? AND " + COLUMN_MODEL + " LIKE ?"; } else { selection = COLUMN_CODENAME + " LIKE ? OR " + COLUMN_MODEL + " LIKE ?"; }
  • DeviceName.java:
  • line 195: DeviceInfo info = database.queryToDevice(codename, model, true); if (info == null) { info = database.queryToDevice(codename, model, false); }

Alexander

Copyright missing

I want to use the library but I just can't find the copyright intestation as specified by the Apache license.

Please update your copyright signature

Add option to opt-out of web request

Some apps might not be comfortable sending a web request (especially using HttpUrlConnection) with device name for every user (minus the 600 most popular phones). There are security and performance reasons to want to turn this off.

HelpAction Raising Exceptions With Intents

Hello, first I would like to say this is a great library! Nice work

I have been trying to use HelpAction to open an email (similar to how the FeedbackAction works) and pre-populate the subject and some parts of the message body. Here is my attempt:

https://github.com/Patchett/CryptoBuddy/blob/598ac293440501bb160e027087390f153a633dfa/app/src/main/java/com/cryptobuddy/ryanbridges/cryptobuddy/AboutTheDevActivity.java#L48

The problem is, whenever I tap the HelpAction button in the app I am getting an exception. Any idea what I am doing wrong here? Below is the exception trace.

03-24 17:29:08.866 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy D/Instrumentation: checkStartActivityResult() : Intent { act=android.intent.action.SEND flg=0x1 clip={null T:
                                                                                          
                                                                                          
                                                                                          
                                                                                          
                                                                                          
                                                                                          ------------------------------
                                                                                          App Version: 5.3 (5)
                                                                                          Device Market Name: Galaxy S8+
                                                                                          Model: SM-G955U
                                                                                          Manufacturer: samsung} (has extras) }
03-24 17:29:08.874 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SEND flg=0x1 clip={null T:
03-24 17:29:08.874 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy I/chatty: uid=10326(u0_a326) com.cryptobuddy.ryanbridges.cryptobuddy identical 3 lines
03-24 17:29:08.874 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err: ------------------------------
03-24 17:29:08.874 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err: App Version: 5.3 (5)
03-24 17:29:08.874 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err: Device Market Name: Galaxy S8+
03-24 17:29:08.874 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err: Model: SM-G955U
03-24 17:29:08.874 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err: Manufacturer: samsung} (has extras) }
03-24 17:29:08.875 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err:     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1968)
03-24 17:29:08.875 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err:     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1622)
03-24 17:29:08.875 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err:     at android.app.Activity.startActivityForResult(Activity.java:4564)
03-24 17:29:08.875 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err:     at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54)
03-24 17:29:08.875 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err:     at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:68)
03-24 17:29:08.875 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err:     at android.app.Activity.startActivityForResult(Activity.java:4522)
03-24 17:29:08.875 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err:     at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:751)
03-24 17:29:08.875 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err:     at android.app.Activity.startActivity(Activity.java:4883)
03-24 17:29:08.875 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err:     at android.app.Activity.startActivity(Activity.java:4851)
03-24 17:29:08.875 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err:     at com.vansuita.materialabout.util.IntentUtil.open(IntentUtil.java:53)
03-24 17:29:08.875 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err:     at com.vansuita.materialabout.util.IntentUtil$1.onClick(IntentUtil.java:46)
03-24 17:29:08.875 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err:     at android.view.View.performClick(View.java:6891)
03-24 17:29:08.875 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err:     at android.view.View$PerformClick.run(View.java:26083)
03-24 17:29:08.875 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err:     at android.os.Handler.handleCallback(Handler.java:789)
03-24 17:29:08.875 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:98)
03-24 17:29:08.875 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err:     at android.os.Looper.loop(Looper.java:164)
03-24 17:29:08.875 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6938)
03-24 17:29:08.876 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
03-24 17:29:08.876 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err:     at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
03-24 17:29:08.876 18717-18717/com.cryptobuddy.ryanbridges.cryptobuddy W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

Missing data in `/json/codenames/*.json` due to case sensitivity

As an example:

/json/devices.json file has below definitions:

{
  "manufacturer": "Kobo",
  "market_name": "Kobo Arc",
  "codename": "zeus",
  "model": "Arc"
},
{
  "manufacturer": "Sony Ericsson",
  "market_name": "Xperia Play",
  "codename": "Zeus",
  "model": "Zeus"
},

Note the different cases of "zeus" and "Zeus".

Then in /json/codenames/Zeus.json file, there is below content:

[
  {
    "manufacturer": "Kobo",
    "market_name": "Kobo Arc",
    "codename": "zeus",
    "model": "Arc"
  }
]

This happens for all the similar situations; such as "vision", "swift", "SCH-i509", "Pegasus",.. etc

Codename conflict issue

I have a Nexus 5X, but DeviceName.getDeviceName() returns "Shark 1S". It looks like both phones use the codename "bullhead", so I'm guessing the problem is related to that.

Update Database

Any way you could put out a new version with an updated list of device names in your database?

thank you!

ERROR: (1) no such table: devices

fyi

2023-04-01 02:49:26.461 10515-10782 System.err              com.fujitsu.smartair.agent              W  android.database.sqlite.SQLiteException: no such table: devices (code 1): , while compiling: SELECT name, codename, model FROM devices WHERE codename LIKE ? OR model LIKE ?
2023-04-01 02:49:26.461 10515-10782 System.err              com.fujitsu.smartair.agent              W  	at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
2023-04-01 02:49:26.461 10515-10782 System.err              com.fujitsu.smartair.agent              W  	at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:896)
2023-04-01 02:49:26.461 10515-10782 System.err              com.fujitsu.smartair.agent              W  	at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:507)
2023-04-01 02:49:26.461 10515-10782 System.err              com.fujitsu.smartair.agent              W  	at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
2023-04-01 02:49:26.461 10515-10782 System.err              com.fujitsu.smartair.agent              W  	at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
2023-04-01 02:49:26.461 10515-10782 System.err              com.fujitsu.smartair.agent              W  	at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
2023-04-01 02:49:26.461 10515-10782 System.err              com.fujitsu.smartair.agent              W  	at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
2023-04-01 02:49:26.462 10515-10782 System.err              com.fujitsu.smartair.agent              W  	at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1346)
2023-04-01 02:49:26.462 10515-10782 System.err              com.fujitsu.smartair.agent              W  	at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1193)
2023-04-01 02:49:26.462 10515-10782 System.err              com.fujitsu.smartair.agent              W  	at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1064)
2023-04-01 02:49:26.462 10515-10782 System.err              com.fujitsu.smartair.agent              W  	at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1232)
2023-04-01 02:49:26.462 10515-10782 System.err              com.fujitsu.smartair.agent              W  	at com.jaredrummler.android.device.DeviceDatabase.queryToDevice(DeviceDatabase.java:116)
2023-04-01 02:49:26.462 10515-10782 System.err              com.fujitsu.smartair.agent              W  	at com.jaredrummler.android.device.DeviceName.getDeviceInfo(DeviceName.java:193)
2023-04-01 02:49:26.462 10515-10782 System.err              com.fujitsu.smartair.agent              W  	at com.jaredrummler.android.device.DeviceName$Request$GetDeviceRunnable.run(DeviceName.java:314)
2023-04-01 02:49:26.462 10515-10782 System.err              com.fujitsu.smartair.agent              W  	at java.lang.Thread.run(Thread.java:818)

Note 20 Ultra

My device is a Note 20 Ultra. But it shows as c2s.

image

Is there a fix for this.?

Version 2.1.0 Task :app:checkLicenses FAILED

Hello,

We use https://github.com/cookpad/license-tools-plugin

With 2.0.0 everything worked well, but when I update to 2.1.0 and I update the licenses.yml accordingly, I get this error:

Task :app:checkLicenses FAILED
Licenses not matched with pom.xml in dependencies:

  • artifact: com.jaredrummler:android-device-names:+
    license: Apache License

This is what gets added to licenses.yml, but then ends up throwing an error:

I think there's a problem in Maven Central's license declaration for 2.1.0.

Update DB

Can anyone update DB? Because there are many new devices which are not recognized...

Small issue but critical to make select query

@jaredrummler There is issue on condition.

    else if (TextUtils.isEmpty(model)) {
      selection = COLUMN_MODEL + " LIKE ?";
      selectionArgs = new String[] { model };
    }

I think the condition will be edited like below

    else if (!TextUtils.isEmpty(model)) {
      selection = COLUMN_MODEL + " LIKE ?";
      selectionArgs = new String[] { model };
    }

I found this when I tried to fetch data with Build.MODEL first.

Note 3 Missing

Hi device name for Samsung Note 3 is missing (Note 3 Model number is "SM-N900", Codename is "ha3g")

if (codename != null && codename.equals("ha3g") || model.equals("SM-N900")
|| model.equals("SM-N9005")
|| model.equals("SM-N9002")
|| model.equals("SM-N9005T")
|| model.equals("SM-N9005P")
|| model.equals("SM-N9005A")
|| model.equals("SM-N9007")
|| model.equals("SM-N900W8")
|| model.equals("SM-N9000Q")
|| model.equals("SM-N9000")
|| model.equals("SM-N900X")
|| model.equals("SM-N9000Q_MEA")
|| model.equals("SM-N900W8_LA")
|| model.equals("SM-N900_MEA")
|| model.equals("SM-N900_SEA")
|| model.equals("SM-N900_SWA")
|| model.contains("SM-N9008V")
|| model.contains("SM-N900K")
|| model.contains("SM-N900L")
|| model.contains("SM-N900S")) {
return "Galaxy Note 3";
}

Got device models from: https://forum.xda-developers.com/showthread.php?t=2471434

Return wrong MODEL

My Android device is Samsung Galaxy J7 with MODEL = SM-J710FN. Its default device name is Galaxy J7 (2016). However, DeviceName.getDeviceName() API returns SM-J710F. Thanks!

A 2.2.0 release about now would be most useful

Hi - I am on a project at the moment that involves detecting a device - the Samsung Galaxy Tab A7 (SM-T500). I notice this device is in Google's list of supported devices, and also in the SQLite database that you currently have in your codebase, but is NOT in the codebase that is in the 2.1.0 release of the library.

Are you in a position to release a 2.2.0 version of the library that includes your current SQLite database?

Thanks.

Exception thrown for missing manufacturer when retrieving getDeviceName()

Hello,
I am using the library to retrieve the device market name, which works, but i always see this exception below for the missing manufacturer?

org.json.JSONException: No value for manufacturer
at org.json.JSONObject.get(JSONObject.java:389)
at org.json.JSONObject.getString(JSONObject.java:550)
at com.jaredrummler.android.device.DeviceName$DeviceInfo.(DeviceName.java:374)
at com.jaredrummler.android.device.DeviceName$DeviceInfo.(DeviceName.java:347)
at com.jaredrummler.android.device.DeviceName.getDeviceInfo(DeviceName.java:186)
at com.jaredrummler.android.device.DeviceName.getDeviceName(DeviceName.java:138)
at com.jaredrummler.android.device.DeviceName.getDeviceName(DeviceName.java:111)
at com.atos.ucc.g3pten.core.services.G3PTenService.setDeviceInformation(G3PTenService.kt:307)
at com.atos.ucc.g3pten.core.services.G3PTenService.setup(G3PTenService.kt:143)
at com.atos.ucc.g3pten.core.services.G3PTenService.onCreate(G3PTenService.kt:100)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:3522)
at android.app.ActivityThread.-wrap6(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1740)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6688)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)

It is a very simple code:

I have initialized the lib:
DeviceName.init(this)

Then call:

    private fun setupDeviceInformation() {
        try {
            g3ptDeviceModelInformation =
                "${Build.MODEL} (${Build.MANUFACTURER}) (${DeviceName.getDeviceName()})"
            G3PTenLog.d(TAG, "[SVC] DeviceName: $g3ptDeviceModelInformation")
        } catch (e: Exception) {
            G3PTenLog.e(TAG, "[SVC] Error retrieving device name: $e")
            e.printStackTrace()
        }
    }

Trouble fetching device market names

I'm having trouble fetching some market names of the phones where the model is returned
When I view the raw JSON it shows that the market_name exists but in code it comes off same as the model.

{
"manufacturer": "Xiaomi",
"market_name": "HM Note 2",
"codename": "hermes",
"model": "Redmi Note 2"
}

eg

DeviceName.with(this).request { info, error ->
            val manufacturer = info.manufacturer 
            val name = info.marketName
            val model = info.model
            val codename = info.codename
            val deviceName = info.name

Here, the name returns Redmi Note 2 (should return HM Note 2) and model also returns Redmi Note 2

Caused by: groovy.lang.MissingPropertyException: Cannot get property 'ossrhUsername' on extra properties extension as it does not exist

FAILURE: Build failed with an exception.

  • Where:
    Script '/Users/natsiasrafi/Downloads/AndroidDeviceNames-master/scripts/publish-root.gradle' line: 11

  • What went wrong:
    A problem occurred evaluating script.

Cannot get property 'ossrhUsername' on extra properties extension as it does not exist

  • Try:

Run with --info or --debug option to get more log output.
Run with --scan to get full insights.

  • Exception is:
    org.gradle.api.GradleScriptException: A problem occurred evaluating script.
    at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:93)
    at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.lambda$apply$0(DefaultScriptPluginFactory.java:133)
    at org.gradle.configuration.DefaultScriptTarget.addConfiguration(DefaultScriptTarget.java:74)
    at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:136)
    at org.gradle.configuration.BuildOperationScriptPlugin$1.run(BuildOperationScriptPlugin.java:65)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
    at org.gradle.configuration.BuildOperationScriptPlugin.lambda$apply$0(BuildOperationScriptPlugin.java:62)
    at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.apply(DefaultUserCodeApplicationContext.java:44)
    at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperationScriptPlugin.java:62)
    at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.applyScript(DefaultObjectConfigurationAction.java:156)
    at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.access$000(DefaultObjectConfigurationAction.java:43)
    at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction$1.run(DefaultObjectConfigurationAction.java:76)
    at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.execute(DefaultObjectConfigurationAction.java:190)
    at org.gradle.api.internal.project.AbstractPluginAware.apply(AbstractPluginAware.java:49)
    at org.gradle.api.internal.project.ProjectScript.apply(ProjectScript.java:37)
    at org.gradle.api.Script$apply.callCurrent(Unknown Source)
    at build_75mydh35kinslkwazlhggn5xq.run(/Users/natsiasrafi/Downloads/AndroidDeviceNames-master/build.gradle:73)
    at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:91)
    at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.lambda$apply$0(DefaultScriptPluginFactory.java:133)
    at org.gradle.configuration.ProjectScriptTarget.addConfiguration(ProjectScriptTarget.java:79)
    at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:136)
    at org.gradle.configuration.BuildOperationScriptPlugin$1.run(BuildOperationScriptPlugin.java:65)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
    at org.gradle.configuration.BuildOperationScriptPlugin.lambda$apply$0(BuildOperationScriptPlugin.java:62)
    at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.apply(DefaultUserCodeApplicationContext.java:44)
    at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperationScriptPlugin.java:62)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$applyToMutableState$0(DefaultProjectStateRegistry.java:360)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.fromMutableState(DefaultProjectStateRegistry.java:378)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.applyToMutableState(DefaultProjectStateRegistry.java:359)
    at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:42)
    at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:26)
    at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:35)
    at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.lambda$run$0(LifecycleProjectEvaluator.java:109)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$applyToMutableState$0(DefaultProjectStateRegistry.java:360)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$withProjectLock$2(DefaultProjectStateRegistry.java:408)
    at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:270)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withProjectLock(DefaultProjectStateRegistry.java:408)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.fromMutableState(DefaultProjectStateRegistry.java:389)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.applyToMutableState(DefaultProjectStateRegistry.java:359)
    at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run(LifecycleProjectEvaluator.java:100)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:72)
    at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:760)
    at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:151)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.ensureConfigured(DefaultProjectStateRegistry.java:328)
    at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:33)
    at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:47)
    at org.gradle.configuration.DefaultProjectsPreparer.prepareProjects(DefaultProjectsPreparer.java:50)
    at org.gradle.configuration.BuildTreePreparingProjectsPreparer.prepareProjects(BuildTreePreparingProjectsPreparer.java:64)
    at org.gradle.configuration.BuildOperationFiringProjectsPreparer$ConfigureBuild.run(BuildOperationFiringProjectsPreparer.java:52)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
    at org.gradle.configuration.BuildOperationFiringProjectsPreparer.prepareProjects(BuildOperationFiringProjectsPreparer.java:40)
    at org.gradle.initialization.VintageBuildModelController.lambda$prepareProjects$3(VintageBuildModelController.java:89)
    at org.gradle.internal.model.StateTransitionController.lambda$doTransition$12(StateTransitionController.java:227)
    at org.gradle.internal.model.StateTransitionController.doTransition(StateTransitionController.java:238)
    at org.gradle.internal.model.StateTransitionController.doTransition(StateTransitionController.java:226)
    at org.gradle.internal.model.StateTransitionController.lambda$transitionIfNotPreviously$10(StateTransitionController.java:201)
    at org.gradle.internal.work.DefaultSynchronizer.withLock(DefaultSynchronizer.java:34)
    at org.gradle.internal.model.StateTransitionController.transitionIfNotPreviously(StateTransitionController.java:197)
    at org.gradle.initialization.VintageBuildModelController.prepareProjects(VintageBuildModelController.java:89)
    at org.gradle.initialization.VintageBuildModelController.getConfiguredModel(VintageBuildModelController.java:64)
    at org.gradle.internal.build.DefaultBuildLifecycleController.lambda$withProjectsConfigured$1(DefaultBuildLifecycleController.java:121)
    at org.gradle.internal.model.StateTransitionController.lambda$notInState$4(StateTransitionController.java:143)
    at org.gradle.internal.work.DefaultSynchronizer.withLock(DefaultSynchronizer.java:44)
    at org.gradle.internal.model.StateTransitionController.notInState(StateTransitionController.java:139)
    at org.gradle.internal.build.DefaultBuildLifecycleController.withProjectsConfigured(DefaultBuildLifecycleController.java:121)
    at org.gradle.internal.build.DefaultBuildToolingModelController.locateBuilderForTarget(DefaultBuildToolingModelController.java:57)
    at org.gradle.internal.buildtree.DefaultBuildTreeModelCreator$DefaultBuildTreeModelController.lambda$locateBuilderForTarget$0(DefaultBuildTreeModelCreator.java:73)
    at org.gradle.internal.build.DefaultBuildLifecycleController.withToolingModels(DefaultBuildLifecycleController.java:178)
    at org.gradle.internal.build.AbstractBuildState.withToolingModels(AbstractBuildState.java:111)
    at org.gradle.internal.buildtree.DefaultBuildTreeModelCreator$DefaultBuildTreeModelController.locateBuilderForTarget(DefaultBuildTreeModelCreator.java:73)
    at org.gradle.internal.buildtree.DefaultBuildTreeModelCreator$DefaultBuildTreeModelController.locateBuilderForDefaultTarget(DefaultBuildTreeModelCreator.java:68)
    at org.gradle.tooling.internal.provider.runner.DefaultBuildController.getTarget(DefaultBuildController.java:157)
    at org.gradle.tooling.internal.provider.runner.DefaultBuildController.getModel(DefaultBuildController.java:101)
    at org.gradle.tooling.internal.consumer.connection.InternalBuildActionAdapter$2.getModel(InternalBuildActionAdapter.java:76)
    at org.gradle.tooling.internal.consumer.connection.BuildControllerAdapter.getModel(BuildControllerAdapter.java:62)
    at org.gradle.tooling.internal.consumer.connection.AbstractBuildController.getModel(AbstractBuildController.java:44)
    at org.gradle.tooling.internal.consumer.connection.AbstractBuildController.getModel(AbstractBuildController.java:29)
    at org.jetbrains.plugins.gradle.model.ProjectImportAction.execute(ProjectImportAction.java:110)
    at org.jetbrains.plugins.gradle.model.ProjectImportAction.execute(ProjectImportAction.java:56)
    at org.gradle.tooling.internal.consumer.connection.InternalBuildActionAdapter.execute(InternalBuildActionAdapter.java:79)
    at org.gradle.tooling.internal.provider.runner.AbstractClientProvidedBuildActionRunner$ActionAdapter.runAction(AbstractClientProvidedBuildActionRunner.java:131)
    at org.gradle.tooling.internal.provider.runner.AbstractClientProvidedBuildActionRunner$ActionAdapter.beforeTasks(AbstractClientProvidedBuildActionRunner.java:99)
    at org.gradle.internal.buildtree.DefaultBuildTreeModelCreator.beforeTasks(DefaultBuildTreeModelCreator.java:52)
    at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$fromBuildModel$1(DefaultBuildTreeLifecycleController.java:75)
    at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$runBuild$4(DefaultBuildTreeLifecycleController.java:106)
    at org.gradle.internal.model.StateTransitionController.lambda$transition$6(StateTransitionController.java:166)
    at org.gradle.internal.model.StateTransitionController.doTransition(StateTransitionController.java:238)
    at org.gradle.internal.model.StateTransitionController.lambda$transition$7(StateTransitionController.java:166)
    at org.gradle.internal.work.DefaultSynchronizer.withLock(DefaultSynchronizer.java:44)
    at org.gradle.internal.model.StateTransitionController.transition(StateTransitionController.java:166)
    at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.runBuild(DefaultBuildTreeLifecycleController.java:103)
    at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.fromBuildModel(DefaultBuildTreeLifecycleController.java:74)
    at org.gradle.tooling.internal.provider.runner.AbstractClientProvidedBuildActionRunner.runClientAction(AbstractClientProvidedBuildActionRunner.java:43)
    at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner.run(ClientProvidedPhasedActionRunner.java:53)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.internal.buildtree.ProblemReportingBuildActionRunner.run(ProblemReportingBuildActionRunner.java:49)
    at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:69)
    at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:119)
    at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:41)
    at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.lambda$execute$0(RootBuildLifecycleBuildActionExecutor.java:40)
    at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:128)
    at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.execute(RootBuildLifecycleBuildActionExecutor.java:40)
    at org.gradle.internal.buildtree.DefaultBuildTreeContext.execute(DefaultBuildTreeContext.java:40)
    at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.lambda$execute$0(BuildTreeLifecycleBuildActionExecutor.java:65)
    at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:53)
    at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.execute(BuildTreeLifecycleBuildActionExecutor.java:65)
    at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:61)
    at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:57)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
    at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor.execute(RunAsBuildOperationBuildActionExecutor.java:57)
    at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.lambda$execute$0(RunAsWorkerThreadBuildActionExecutor.java:36)
    at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:270)
    at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:119)
    at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.execute(RunAsWorkerThreadBuildActionExecutor.java:36)
    at org.gradle.tooling.internal.provider.ContinuousBuildActionExecutor.execute(ContinuousBuildActionExecutor.java:103)
    at org.gradle.tooling.internal.provider.SubscribableBuildActionExecutor.execute(SubscribableBuildActionExecutor.java:64)
    at org.gradle.internal.session.DefaultBuildSessionContext.execute(DefaultBuildSessionContext.java:46)
    at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter$ActionImpl.apply(BuildSessionLifecycleBuildActionExecuter.java:100)
    at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter$ActionImpl.apply(BuildSessionLifecycleBuildActionExecuter.java:88)
    at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:69)
    at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:62)
    at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:41)
    at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:63)
    at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
    at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:58)
    at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:42)
    at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:47)
    at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:31)
    at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:65)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
    at org.gradle.util.internal.Swapper.swap(Swapper.java:38)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
    at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
    Caused by: groovy.lang.MissingPropertyException: Cannot get property 'ossrhUsername' on extra properties extension as it does not exist
    at org.gradle.internal.extensibility.DefaultExtraPropertiesExtension.getProperty(DefaultExtraPropertiesExtension.java:68)
    at publish_root_fogprtxulohe356rztqf2yms.run(/Users/natsiasrafi/Downloads/AndroidDeviceNames-master/scripts/publish-root.gradle:11)
    at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:91)
    ... 189 more

  • Get more help at https://help.gradle.org

CONFIGURE FAILED in 4s

StrictMode: A resource was acquired at attached stack trace but never released.

When running with strict mode enabled, this library throws this exception:

E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
                                                                            java.lang.Throwable: Explicit termination method 'close' not called

I am using the latest version of OkHttp 3.9.1

Getting Model name instead of marketing name for some devices

I'm having trouble fetching market names of the phones getting model name instead of marketing name
When I view the raw JSON it shows that the market_name and model name are same for some device like Oppo.
Please confirm why oppo devices are considered as unrecognized devices in this list.

Names with apostrophes and quotation marks are rendering wrong

Here's an example of the issue:

  {
    "manufacturer": "Archos",
    "market_name": "Bush 5 4G",
    "codename": "ac55heplus",
    "model": "\"Bush 5.5\"\" 4G\""
  },

I believe the last line should be
"model": "Bush 5.5\" 4G"

Thanks so much for this service, I really appreciate it!

Library Size After 2.0.0

Updating my project to use the new version of this library added ~3mb to my app size. Are there any plans to address that?

Strange device name after update

On emulator in version 1.1.9 i have device name - "AOSP On IA Emulator". After upgrading to 2.0.0 i now have "Emualtor". Probably a typo in device db?

New way to obtain marketName

Because it seems that this repository has not had changes for 1 year and every day there are surely new devices that are not covered by the database of this library.

I have created a library that is able to retrieve the marketName of the device without having to update the database, directly from the Google's csv file, in case it is registered.

I'm not here to advertise, but maybe more than one person can help you.
Sorry for the disturb.

Galaxy A3 (2017)

Great library! Samsung Galaxy A3 (both old and 2017) seems to missing completely, my A3 (2017) lists as

Build.DEVICE="a3y17lte"
Build.MODEL="SM-A320FL"

Regards, winne42

Row #8182 typo in Database

In the database(s) the device name for listing num:8182 shows as "Emualtor" ... I noticed this in an Android Studio emulator while using this library.
BTW: I could have fixed this with a pull request, but there are 3 copies of the database here. Why maintain 3 copies?

Update frequency

Hi, I read the source code and noticed that the device info is retrieved from the inner database of assets, who is taking care of the update of database and how often it does?
Another question, do this library have an mechanism to update the device list from network?

Weird inconsistencies with device name spacing, case, etc

This is pretty self explanatory and I'm more curious how it happens in the first place (typos, etc).

I'll give two [recent] examples:
1a) SM-T818V (Samsung Galaxy TabS2 9.7)
1b) SM-T818W (Samsung Galaxy Tab S2 9.7)

There's a space missing between Tab and S2 on the 818V.

2a) SM-P580X (Samsung Galaxy TabA Plus10.1)
2b) SM-P583 (Samsung Galaxy TabA Plus 10.1)

Again, a space is missing.

There are a number of other minor issues, like case sensitivity and such but I'm mostly just curious how it's happening in the first place. Hopefully this isn't coming across as disrespectful, I really appreciate the work done to maintain this library!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.