मैंने ओबीबी फ़ाइल प्रकाशित करने के लिए कई ट्यूटोरियल का पालन किया है, मैंने एलवीएल लाइब्रेरी और एपीकेएक्स आयात किया है उसके बाद मैंने निम्नलिखित कक्षाएं बनाई हैं:

import com.google.android.vending.expansion.downloader.impl.DownloaderService;

public class SampleDownloadService extends DownloaderService {
private static final String BASE64_PUBLIC_KEY = "KEY_FROM_PLAY_CONSOLE";
private static final byte[] SALT = new byte[]{
        1, 43, 16, 1, 54, 48,
        30, 1, 43, 2, 101, -4, 9, 54, -100, -108, -33, 45, -1, 84
};

/**
 * This public key comes from your Android Market publisher account, and it
 * used by the LVL to validate responses from Market on your behalf.
 */
@Override
public String getPublicKey() {
    return BASE64_PUBLIC_KEY;
}

/**
 * This is used by the preference obfuscater to make sure that your
 * obfuscated preferences are different than the ones used by other
 * applications.
 */
@Override
public byte[] getSALT() {
    return SALT;
}

/**
 * Fill this in with the class name for your alarm receiver. We do this
 * because receivers must be unique across all of Android (it's a good idea
 * to make sure that your receiver is in your unique package)
 */
@Override
public String getAlarmReceiverClassName() {
    return SampleAlarmReceiver.class.getName();
 }
}

और दूसरा वर्ग:

import com.google.android.vending.expansion.downloader.DownloaderClientMarshaller;

 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager.NameNotFoundException;


public class SampleAlarmReceiver extends BroadcastReceiver {

   @Override
public void onReceive(Context context, Intent intent) {
    try {
        DownloaderClientMarshaller.startDownloadServiceIfRequired(context, intent, SampleDownloadService.class);
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    }
}

}

उसके बाद मैंने अपनी मेनिफेस्ट फ़ाइल में एप्लिकेशन टैग में घोषित किया:

    <service android:name=".services.SampleDownloadService"/>
    <receiver android:name=".services.SampleAlarmReceiver"/>

फिर मेरी गतिविधि में:

    private val FILENAME =
    "main." + BuildConfig.VERSION_CODE.toString() + "." + BuildConfig.APPLICATION_ID.toString() + ".obb"

और ऑनक्रेट में:

try {
        // Check if expansion files are available before going any further
        if (!expansionFilesDelivered()) {
            // Build an Intent to start this activity from the Notification
            val notifierIntent = Intent(this, MainActivity::class.java.javaClass)
            notifierIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or
                    Intent.FLAG_ACTIVITY_CLEAR_TOP
            val pendingIntent = PendingIntent.getActivity(
                this, 0,
                notifierIntent, PendingIntent.FLAG_UPDATE_CURRENT
            )

            // Start the download service (if required)
            val startResult = DownloaderClientMarshaller.startDownloadServiceIfRequired(
                this,
                pendingIntent, SampleDownloadService::class.java
            )
            // If download has started, initialize this activity to show
            // download progress
            if (startResult != DownloaderClientMarshaller.NO_DOWNLOAD_REQUIRED) {
                // This is where you do set up to display the download
                // progress (next step)
                downloaderClientStub = DownloaderClientMarshaller.CreateStub(
                    this,
                    SampleDownloadService::class.java
                )
                return
            } // If the download wasn't necessary, fall through to start the app
        }else{
            tvModelDownload.visibility = View.GONE
            progressBar2.visibility = View.GONE
            val obbDir = obbDir
            val obbFile = File(obbDir, FILENAME)
            checkForModel(obbFile)
        }
    } catch (e: Exception) {
        e.printStackTrace()
    }

फिर मैंने अपने ऐप को आंतरिक परीक्षण अनुभाग में प्रकाशित किया और प्ले कंसोल में अपलोड करते समय ओबीबी फ़ाइल को जोड़ा।

त्रुटि यह है कि मैं हमेशा बिना लाइसेंस के विफल हो रहा हूं: IDownloaderClient.STATE_FAILED_UNLICENSED।

0
Badran 17 सितंबर 2020, 16:29

1 उत्तर

सबसे बढ़िया उत्तर

ऐसा लग रहा था कि मुझे अपना ईमेल Google play डेवलपर कंसोल में जोड़ना चाहिए और इसे लाइसेंस प्राप्त में बदलना चाहिए

0
Badran 29 सितंबर 2020, 22:36