简体   繁体   中英

Manifest file verification error

I need your help. I'm struggling to integrate Scoreloop with a simple Android App (a sort of "Hello World" Android app). I followed all the steps described in the scoreloopUI documentation provided by Scoreloop. To recap:

  • I create a simple Android app in Eclipse;
  • I imported the scoreloopUI project in Eclipse;
  • I went to the properties of my simple project and I linked the scoreloopUI project as a library;
  • I added scoreloop.properties file into the Assets folder of my simple project;
  • I changed my manifest.xml file adding the entries described in the documentation ("Updating the Android Manifest" part);
  • I changed my Activity adding ScoreloopManagerSingleton.init(this, "whatever_your_game_secret_is"); (obviously I changed "whatever_your_game_secret_is" with my real secret).

When I run the program an Exception occurs:

Manifest file verification error. Please resolve any issues first!

Any suggestions? Thank you for helping me!

EDIT: This is my manifest file

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.provascore"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="9" />
    <!-- Permission configuration required by Scoreloop -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.provascore.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- Defining the ScoreloopUI activities -->
        <activity
            android:name="com.scoreloop.client.android.ui.EntryScreenActivity"
            android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" />
        <activity
            android:name="com.scoreloop.client.android.ui.ShowResultOverlayActivity"
            android:theme="@style/sl_dialog" />
        <activity android:name="com.scoreloop.client.android.ui.component.market.MarketHeaderActivity" />
        <activity android:name="com.scoreloop.client.android.ui.component.market.MarketListActivity" />
        <activity android:name="com.scoreloop.client.android.ui.component.entry.EntryListActivity" />
        <activity
            android:name="com.scoreloop.client.android.ui.component.post.PostOverlayActivity"
            android:theme="@style/sl_dialog" />
        <activity android:name="com.scoreloop.client.android.ui.component.score.ScoreHeaderActivity" />
        <activity android:name="com.scoreloop.client.android.ui.component.score.ScoreListActivity" />
        <activity android:name="com.scoreloop.client.android.ui.component.user.UserAddBuddyListActivity" />
        <activity android:name="com.scoreloop.client.android.ui.component.user.UserHeaderActivity" />
        <activity android:name="com.scoreloop.client.android.ui.component.user.UserDetailListActivity" />
        <activity android:name="com.scoreloop.client.android.ui.component.user.UserListActivity" />
        <activity android:name="com.scoreloop.client.android.ui.component.game.GameDetailHeaderActivity" />
        <activity android:name="com.scoreloop.client.android.ui.component.game.GameDetailListActivity" />
        <activity android:name="com.scoreloop.client.android.ui.component.game.GameListActivity" />
        <activity android:name="com.scoreloop.client.android.ui.component.profile.ProfileSettingsListActivity" />
        <activity android:name="com.scoreloop.client.android.ui.component.profile.ProfileSettingsPictureListActivity" />
        <activity
            android:name="com.scoreloop.client.android.ui.LeaderboardsScreenActivity"
            android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" />
        <activity
            android:name="com.scoreloop.client.android.ui.framework.ScreenActivity"
            android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" />
        <activity android:name="com.scoreloop.client.android.ui.framework.TabsActivity" />
    </application>

</manifest>

This is the scoreloopUI project manifest file:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.scoreloop.client.android.ui"
    android:versionCode="1"
    android:versionName="1.0">

    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="17" />
    <application>

        <activity android:name="com.scoreloop.client.android.ui.EntryScreenActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>
        <activity android:name="com.scoreloop.client.android.ui.PostScoreOverlayActivity" android:theme="@style/sl_dialog"/>
        <activity android:name="com.scoreloop.client.android.ui.ShowResultOverlayActivity" android:theme="@style/sl_dialog"/>
        <activity android:name="com.scoreloop.client.android.ui.BuddiesScreenActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>
        <activity android:name="com.scoreloop.client.android.ui.LeaderboardsScreenActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>
        <activity android:name="com.scoreloop.client.android.ui.ChallengesScreenActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>
        <activity android:name="com.scoreloop.client.android.ui.AchievementsScreenActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>
        <activity android:name="com.scoreloop.client.android.ui.SocialMarketScreenActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>
        <activity android:name="com.scoreloop.client.android.ui.ProfileScreenActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>
        <activity android:name="com.scoreloop.client.android.ui.GameItemPaymentScreenActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>

        <activity android:name="com.scoreloop.client.android.ui.component.market.MarketHeaderActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.market.MarketListActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.entry.EntryListActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.post.PostOverlayActivity" android:theme="@style/sl_dialog"/>
        <activity android:name="com.scoreloop.client.android.ui.component.score.ScoreHeaderActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.score.ScoreListActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.user.UserAddBuddyListActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.user.UserHeaderActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.user.UserDetailListActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.user.UserListActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.game.GameDetailHeaderActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.game.GameDetailListActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.game.GameListActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.achievement.AchievementHeaderActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.achievement.AchievementListActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.news.NewsHeaderActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.news.NewsListActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.challenge.ChallengeHeaderActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.challenge.ChallengeListActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.challenge.ChallengeAcceptListActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.challenge.ChallengeCreateListActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.profile.ProfileSettingsListActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.profile.ProfileSettingsPictureListActivity"/>
        <activity android:name="com.scoreloop.client.android.ui.component.payment.PaymentMethodListActivity" android:configChanges="orientation|keyboard|keyboardHidden"/>
        <activity android:name="com.scoreloop.client.android.ui.component.payment.GameItemHeaderActivity"/>

        <activity android:name="com.scoreloop.client.android.ui.framework.ScreenActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>
        <activity android:name="com.scoreloop.client.android.ui.framework.TabsActivity"/>

        <activity android:name="com.scoreloop.client.android.core.paymentprovider.ProxyActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" android:configChanges="orientation|keyboard|keyboardHidden"/>

        <activity android:name="com.boku.mobile.android.PaymentPanelActivity" 
            android:label="Paymo Panel" 
            android:configChanges="keyboard|keyboardHidden|navigation|orientation"  
            android:theme="@style/BokuModal"/>

        <activity android:name="com.paypal.android.MEP.PayPalActivity" 
            android:theme="@android:style/Theme.Translucent.NoTitleBar" 
            android:configChanges="keyboardHidden|orientation"/>

        <activity android:name="com.zong.android.engine.web.ZongWebView" 
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
            android:screenOrientation="portrait">
            <intent-filter> <action android:name="com.zong.mobile.PAYMENT" /> <category android:name="android.intent.category.DEFAULT" />
            </intent-filter> 
        </activity>
        <provider android:name="com.zong.android.engine.provider.ZongPersistanceProvider" android:authorities="com.zong.provider.persistence"/>

    </application>

</manifest>

I am just guessing. Did you check isLibrary option for scoreloopUI project. Select project scoreloopUI, right click, goto Properties --> Android -->at the bottom of android menu you will see isLibrary option tick so that you can it as android library project in other projects

The problem was the fact that in my manifest file there weren't some entries: reading the scoreloopUI documentation you can find the "Updating the Android Manifest" section. In this section some entries are provided, but they are not enough! These are the provided entries:

<!-- Defining the ScoreloopCore activities -->
 <activity android:name="com.scoreloop.client.android.core.ui.ProxyActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" android:configChanges="orientation|keyboard|keyboardHidden|screenSize|smallestScreenSize"/>
 <!-- Note: you may need to add more entries here for the payment methods you want to use. -->

 <!-- Defining the ScoreloopUI activities -->
 <activity android:name="com.scoreloop.client.android.ui.EntryScreenActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>
 <activity android:name="com.scoreloop.client.android.ui.ShowResultOverlayActivity" android:theme="@style/sl_dialog"/>

 <activity android:name="com.scoreloop.client.android.ui.component.market.MarketHeaderActivity"/>
 <activity android:name="com.scoreloop.client.android.ui.component.market.MarketListActivity"/>
 <activity android:name="com.scoreloop.client.android.ui.component.entry.EntryListActivity"/>
 <activity android:name="com.scoreloop.client.android.ui.component.post.PostOverlayActivity" android:theme="@style/sl_dialog"/>
 <activity android:name="com.scoreloop.client.android.ui.component.score.ScoreHeaderActivity"/>
 <activity android:name="com.scoreloop.client.android.ui.component.score.ScoreListActivity"/>
 <activity android:name="com.scoreloop.client.android.ui.component.user.UserAddBuddyListActivity"/>
 <activity android:name="com.scoreloop.client.android.ui.component.user.UserHeaderActivity"/>
 <activity android:name="com.scoreloop.client.android.ui.component.user.UserDetailListActivity"/>
 <activity android:name="com.scoreloop.client.android.ui.component.user.UserListActivity"/>
 <activity android:name="com.scoreloop.client.android.ui.component.game.GameDetailHeaderActivity"/>
 <activity android:name="com.scoreloop.client.android.ui.component.game.GameDetailListActivity"/>
 <activity android:name="com.scoreloop.client.android.ui.component.game.GameListActivity"/>
 <activity android:name="com.scoreloop.client.android.ui.component.profile.ProfileSettingsListActivity"/>
 <activity android:name="com.scoreloop.client.android.ui.component.profile.ProfileSettingsPictureListActivity"/>
 <activity android:name="com.scoreloop.client.android.ui.LeaderboardsScreenActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>

 <activity android:name="com.scoreloop.client.android.ui.framework.ScreenActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>
 <activity android:name="com.scoreloop.client.android.ui.framework.TabsActivity"/>

Searching on the web, I found this scoreloop class (StandardScoreloopManager). At the bottom of this class there's a function that checks the user's manifest file. Some required entries aren't in the documentation above:

"com.scoreloop.client.android.ui.component.achievement.AchievementHeaderActivity"
"com.scoreloop.client.android.ui.component.achievement.AchievementListActivity"
"com.scoreloop.client.android.ui.component.news.NewsHeaderActivity"
"com.scoreloop.client.android.ui.component.news.NewsListActivity"
"com.scoreloop.client.android.ui.component.challenge.ChallengeHeaderActivity"
"com.scoreloop.client.android.ui.component.challenge.ChallengeListActivity"
"com.scoreloop.client.android.ui.component.challenge.ChallengeAcceptListActivity"
"com.scoreloop.client.android.ui.component.challenge.ChallengeCreateListActivity"
"com.scoreloop.client.android.ui.component.challenge.ChallengePaymentActivity"
"com.scoreloop.client.android.ui.BuddiesScreenActivity"
"com.scoreloop.client.android.ui.ChallengesScreenActivity"
"com.scoreloop.client.android.ui.AchievementsScreenActivity"
"com.scoreloop.client.android.ui.SocialMarketScreenActivity"
"com.scoreloop.client.android.ui.ProfileScreenActivity"

Adding these entries in the manifest file solves the issue. Thanks to everyone for the help.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM