> For the complete documentation index, see [llms.txt](https://onestore-dev.gitbook.io/dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://onestore-dev.gitbook.io/dev/chi/docs/apps/product/android/binary.md).

# Binary

## **Overview**

This menu is to newly register the binary of apps that will be serviced, and to set the supported terminal.\
Binaries registered in this menu will be serviced to the store according to the “start of sales option” after review has been completed.

### **App Signing Preferences**

<figure><img src="/files/9lpR5hHXtmx2Rghraqar" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}

{% endhint %}

* Binary type: Select the type of binary to register (APK/AAB).
  * Binaries selected as APK can be changed to AAB, but binaries selected as AAB cannot be changed to APK.
* Signing key: Select the signing key option for the binary. For more information on app signatures, click here.
  * ONE store manages and protects app signing keys\
    \- ONE store directly generates and stores signing keys.\
    \- Apps on sale with an existing APK cannot be updated if the signing key changes, so only newly created apps are used.
  * Use the same key as other apps in this developer account\
    \- If you have registered a signing key for another app, use the same signing key as that app.\
    \- Only the signing key of other apps in the account can be connected. Use it to link with other apps.
  * Export and upload keys to Java Keystore, export and upload keys (without using Java Keystore)\
    \- Register and use signing keys generated yourself.\
    \- Encrypt the generated signing key through the PEPK (Play Encrypt Private Key) tool to securely transfer it to ONE store and store it there.
  * Disable app signatures (register signed APKs without registering signing keys).\
    \- Managed directly by the developer without registering or generating keys.\
    \- If app signatures are not used, the signed APK must be registered.\
    ※Can only be selected if the binary type is APK.

{% hint style="info" %}
Different binaries can be provided for each supported terminal through “multi-binary.”\
&#x20;\- Only supported if the binary type is “APK” and the signing key option is “Disable app signature.”\
&#x20;\- Global Platform does not support “multi-binary.”
{% endhint %}

* Add a new binary

<figure><img src="/files/V73Anmrq5Pk2MhN7dEmu" alt=""><figcaption></figcaption></figure>

* Up to 2 GB of binary files that fit the binary type (APK/AAB) can be registered.
  * Register commercial binaries using the same signing key.
  * Viruses, package name duplication, signing key, version code, and more are checked. In the event there are any abnormalities, registration fails.
* There are two ways to update the binary.
  * Click “find file” in “Add a new binary.”
  * Click “Update” next to the binary version in the binary list and select “update file.”

{% hint style="info" %}

* To register the AAB product, you need to set the minSdkVersion to 21 or higher.
* Please review the '[Minimum requirements for Global Platform sales](#global-req)' before offering services on Global Platform.
  {% endhint %}

{% hint style="info" %}
Even if the AAB file itself does not exceed 2GB, the size of the universal APK generated from it may exceed 2GB.

* In such cases, devices that do not support AAB may fail to install or run the universal APK properly.
* Therefore, even when only an AAB is registered, we recommend also building and testing the universal APK to ensure compatibility on devices that do not support AAB.
  {% endhint %}

### Binary

You can check the detailed information of the registered binary.

Published Binary detail — device support settings and OS Version

<figure><img src="/files/7vCcwqGrkSUAyHd4Ul85" alt=""><figcaption></figcaption></figure>

#### Device support settings · Country/region-specific APK download

* **Device support settings** : Set the device requirements for installing this binary. You can specify all devices or specific devices, or restrict installation based on RAM capacity. You can also download country/region-specific APKs for testing.

<figure><img src="/files/neZuNq4sMn2SEIPL0XQ0" alt=""><figcaption></figcaption></figure>

* **Device Support Method**
  * **All devices (with exclusions)** *(default)* : Excluding the specified devices, the app can be installed on devices compatible with the app requirements.
  * **Support specific devices only** : Only the specified devices can install the app; all others are treated as unsupported.
  * For a multi-binary product, 'All devices (with exclusions)' can be set on only one binary within the product (PID), and each device can be supported by only one binary.
* **Enter the device model name** : Enter the device model names to support (or exclude) directly, separated by commas (,), or upload them in bulk via a CSV file.
  * Enter model names exactly as shown in device settings. Incorrect entries may not be applied.
  * When saved, all registered model names are converted to uppercase and duplicates are removed.
* **Exclude devices by RAM capacity** : You can prevent installation on devices whose RAM capacity is not suitable for servicing the product. (OFF / exclude below 2 GB · 3 GB · 4 GB · 8 GB)
* **OS Version** : The supported OS versions are displayed by referencing the binary's `AndroidManifest.xml`. (Min OS = `minSdkVersion`, Target OS = `targetSdkVersion`, Max OS = `maxSdkVersion`)
* When a binary file is registered, the product is sold on devices compatible with the app requirements. To sell only on specific devices or to exclude specific devices, edit the support method and device list under 'Device support settings'.
* Changing the device support settings in the 'New Binary' menu does not affect a product on sale; it is applied when review is completed. However, if you check 'Apply the same settings to the published binary immediately' in the popup, it is applied to the published binary right away.
* **When the binary type is APK**
  * Download Signed APK : You can download the app-signed binary to test it.
* **When the binary type is AAB**
  * Download Universal APK : Users on devices that do not support AAB are served the 'Universal APK'. You can test the product via 'Download Universal APK'.
  * Details : You can download the information collected from users' devices as a json file. It provides supported ABI, SDK version, Device Feature, and screen density information.
  * Download : The Android version and language information are shown, and you can download an APK extracted with the selected information. Multiple languages can be selected; if you select a language the app does not support, an empty APK is downloaded.
  * After testing per device with the downloaded APK, you can adjust the device support settings.

> If you change a supported device of a product on sale to unsupported, buyers using that device cannot re-download it. This may require a refund, so please be careful when changing device support settings.

#### Signing Key Information

* Signing key : The key used for the signature to distribute to user devices.
* Upload key : The key used to verify the developer's identity when registering a binary. Only files signed with the same upload key can be registered when updating a binary.
* Use the 'Download' button to download the public key information of the 'Signing key' and 'Upload key' as a der file.<br>

<figure><img src="/files/c7z9j9jnKTiXeR05zj6q" alt=""><figcaption></figcaption></figure>

Behavior changes of Android OS or higher : <https://developer.android.com/about/versions/12/behavior-changes-12>

```
<service android:name="com.example.app.backgroundService"
         android:exported="false">
    <intent-filter>
        <action android:name="com.example.app.START_BACKGROUND" />
    </intent-filter>
</service>
```

Refer to the example code below and the behavior changes of Android OS 12 or higher.

An app with Target SDK set to 31 or higher (OS12) uses the intent filter. However, there are cases where it is not installed because the android:exported property is not explicitly declared.

## New Binary (PC)

This menu is where you register an EXE binary built for the PC environment.

### Upload new binary

You can upload an EXE file that is 2 GB or less with a file name of 100 characters or fewer.

The registered binary is reflected in the service after approval per the 'Request for Review', at which point the information is reflected in the 'Published Binary'. However, if either the APK product or the PC product falls short of the review requirements, the review may be rejected.

To apply payment, please contact us via 'Contact us' in the Developer Center or at <devhelper@onestore.net>.

### **When setting Target SDK to 31 or higher (OS12 or higher)** <a href="#apps-whensettingtargetsdkto31orhigher-os12orhigher" id="apps-whensettingtargetsdkto31orhigher-os12orhigher"></a>

* If an app developed with Android platform uses a ONEstore in app, the following tasks are required to use the Android 11 \<queries>.
  * Java & Kotlin (Android Studio)
    * If TargetSDK is set to 16-29, \[Queries] TAG is not required
    * If TargetSDK is set to 30, Add a \[Queries] TAG in Android Manifest.
* Unity<br>
  * Less than 2018.4<br>
    * \[Queries] TAG is not required by setting TargetSDK to less than 30.
  * More than 2018.4 \~ Less than 2020.1<br>
    * If TargetSDK is set to 16-29, \[Queries] TAG is not required.
    * If TargetSDK is set to 30, raise the Gradle version of Unity Engine to 5.6.4 or later and add \[Queries] TAG
    * Guideline : <https://developers.google.com/ar/develop/unity/android-11-build>
  * After than 2020.1<br>
    * If TargetSDK is set to 16-29, \[Queries] TAG is not required
    * If TargetSDK is set to 30, Add a \[Queries] TAG in Android Manifest \[Queries]. &#x20;
* Unreal<br>
  * Set the Target SDK 16\~29. (We'll let you know later.)
* Other IDE environment<br>
  * Set the Target SDK according to whether or not the Gradle version of the build environment is supported.
  * If the build environment does not support Gradle 5.6.4 : Set the between 16 and 29 targetSDK.
  * If the build environment does support Gradle 5.6.4 : Set the target SDK to 30, and add a \[Queries] TAG in AndroidManifest.

#### **IDE Response Guidelines**

```
<queries>
    <intent>
        <action android:name="com.onestore.ipc.iap.IapService.ACTION" />
    </intent>
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="onestore" />
    </intent>
</queries
```

So, if your binary use ONEstore's SDK(Inapp v16, v17,v19, ALC), Please make sure to declare the following query on Androidmanifest.xml.&#x20;

Apps that target Android 11 (API level 30) that are currently only signed using APK Signature Scheme v1 must now also be signed using APK Signature Scheme v2 or higher. \
Users can't install or update apps that are only signed with APK Signature Scheme v1 on devices that run Android 11.

### **The product with a target SDK of 30 or higher(Add a guidelines for each IDE)** <a href="#apps-theproductwithatargetsdkof30orhigher-addaguidelinesforeachide" id="apps-theproductwithatargetsdkof30orhigher-addaguidelinesforeachide"></a>

1. Run the “Play Store” app
2. Select the profile on the top right > Select “Play Protect” menu
3. Select the “Settings” icon on the top right
4. Change “Inspect apps with Play Protect” to “OFF”
5. Re-enter the store, download the app, and install it

## Published Binary

This menu is where you can check information about the binary currently on sale and its supported-device information. You can download the published binary and change its **device support settings (add/remove supported/unsupported devices)**, which are reflected in real time without a review process. However, the **'Device Support Method' (All devices / Support specific devices) itself is read-only**, and if a change is needed, it must be handled in the 'New Binary' menu. Any other information must be edited via the 'New Binary' menu and deployed after review.
