3

だから私はちょうど新しいSony Xperia Tablet S Small App SDKを使い始めました。私は本当に初心者ではなく、以前に多くの個人用アプリを開発しましたが、これは私を困惑させました.

サンプル プロジェクトを Eclipse にロードし (すべて正しく構成)、いくつかのエラーを整理し、デバイスにコンパイルしました。デバイスの下部にあるランチャーからスモール アプリを起動すると、強制終了します。 SDKで作成しようとしたすべてのサンプル/アプリと同じです。

誰かが問題の所在を確認できることを期待して、MainApplication.java と AndroidManifest.xml の下に添付します。本通りに作っているのでわかりません。どんな助けでも本当にありがとうございます。

MainApplication.java:

package com.sony.thirdtest;

import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.view.View;
import android.widget.Toast;
import com.small.sonyapptest.R;
import com.sony.smallapp.SmallAppWindow;
import com.sony.smallapp.SmallApplication;

public class MainApplication extends SmallApplication {
    private Configuration mConfig;

    @Override
    public void onCreate() {
        super.onCreate();
        mConfig = new Configuration(getResources().getConfiguration());

        setContentView(R.layout.activity_main);
        setTitle(R.string.app_name);

        SmallAppWindow.Attributes attr = getWindow().getAttributes();
        attr.minWidth = 200;
        attr.minHeight = 200;
        attr.width = 400;
        attr.height = 300;
        attr.flags |= SmallAppWindow.Attributes.FLAG_RESIZABLE;
        getWindow().setAttributes(attr);

        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainApplication.this, R.string.hello, Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    }

    @Override
    public void onStart() {
        super.onStart();
    }

    @Override
    public void onStop() {
        super.onStop();
    }

    @Override
    protected boolean onSmallAppConfigurationChanged(Configuration newConfig) {
        int diff = newConfig.diff(mConfig);
        mConfig = new Configuration(getResources().getConfiguration());
        // Avoid application from restarting when orientation changed
        if ((diff & ActivityInfo.CONFIG_ORIENTATION) != 0) {
            return true;
        }
        return super.onSmallAppConfigurationChanged(newConfig);
    }
}

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.small.sonyapptest" 
    android:versionCode="1" 
    android:versionName="1.0">
  <uses-sdk android:minSdkVersion="15" /> 


    <uses-permission android:name="com.sony.smallapp.permission.SMALLAPP" />

    <application android:icon="@drawable/ic_launcher" android:label="@string/app_name">


        <uses-library android:name="com.sony.smallapp.framework" />

            <service 
                android:name="com.small.sonyapptest.MainApplication" 
                android:exported="true" >

            <intent-filter>

                <action android:name="com.sony.smallapp.intent.action.MAIN" />

                <category

                android:name="com.sony.smallapp.intent.category.LAUNCHER" />

                </intent-filter>

            </service>

    </application>
</manifest>
4

3 に答える 3

1

コードに問題はないようです。したがって、問題はプロジェクトの構築方法にあると思います。もっと正確に言えば、スモール アプリ フレームワークがどのように含まれているかということです。

"Java build path" -> "Add external Jar" を介して (Sony SDK から) jar を追加するだけで、API jar のクラスがアプリケーションに含まれます。問題は、これらがスタブ クラスにすぎないため、2 つの例外のうちの 1 つが発生する可能性があることです。

これを回避する簡単で迅速な方法は次のとおりです (標準の Android SDK を引き続き使用し、Sony SDK に切り替えません)。

  • Java プロジェクトを作成し、たとえば「SmallAppApi」と呼びます
  • Java プロジェクト内で、「外部 jar の追加」を介して小さなアプリ jar を追加します。
  • 「Java ビルド パス」画面の最後のタブ (「注文とエクスポート」) で、小さなアプリ jar がエクスポートされていることを確認します。
  • Android プロジェクトの「Java ビルド パス」画面の「プロジェクト」タブで、Java プロジェクト SmallAppApi を追加します (小さなアプリ jar を削除します)。

このセットアップでは、小さなアプリ jar はビルド時にのみ使用されます。これは私にとってはうまくいきました。

于 2012-10-25T05:57:44.447 に答える
1

サービスタグを次のように変更android:name="com.small.sonyapptest.MainApplication"しますandroid:name="MainApplication"

于 2012-10-25T13:13:22.650 に答える
0

サービスタグを MainApplication に変更した後、すべてが機能するようになりました。

于 2012-10-25T14:39:56.203 に答える