2

S3 で apk ファイルを起動しようとすると、Eclipse の LogCat に次のエラーが表示されます。


09-28 16:56:59.020: A/Environment(1967): Static storage paths aren't available from AID_SYSTEM
09-28 16:56:59.020: A/Environment(1967): java.lang.Throwable
09-28 16:56:59.020: A/Environment(1967):    at android.os.Environment.throwIfSystem(Environment.java)
09-28 16:56:59.020: A/Environment(1967):    at android.os.Environment.getExternalStorageDirectory(Environment.java)
09-28 16:56:59.020: A/Environment(1967):    at com.samsung.android.MtpApplication.MtpReceiver.onReceive(MtpReceiver.java)
09-28 16:56:59.020: A/Environment(1967):    at android.app.ActivityThread.handleReceiver(ActivityThread.java)
09-28 16:56:59.020: A/Environment(1967):    at android.app.ActivityThread.access$1600(ActivityThread.java)
09-28 16:56:59.020: A/Environment(1967):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java)
09-28 16:56:59.020: A/Environment(1967):    at android.os.Handler.dispatchMessage(Handler.java)
09-28 16:56:59.020: A/Environment(1967):    at android.os.Looper.loop(Looper.java)
09-28 16:56:59.020: A/Environment(1967):    at android.app.ActivityThread.main(ActivityThread.java)
09-28 16:56:59.020: A/Environment(1967):    at java.lang.reflect.Method.invokeNative(Native Method)
09-28 16:56:59.020: A/Environment(1967):    at java.lang.reflect.Method.invoke(Method.java)
09-28 16:56:59.020: A/Environment(1967):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java)
09-28 16:56:59.020: A/Environment(1967):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)
09-28 16:56:59.020: A/Environment(1967):    at dalvik.system.NativeStart.main(Native Method)

誰かが私を助けることができますか?

4

2 に答える 2

5

このエラーは、Android 4.2.2、android.os.Environment でのみ発生します。

private static void throwIfSystem()
{
    if (Process.myUid() == Process.SYSTEM_UID)
    {
        Log.wtf(TAG,
                "Static storage paths aren't available from AID_SYSTEM",
                new Throwable());
    }
}

public static File getExternalStorageDirectory()
{
    throwIfSystem();
    return sCurrentUser.getExternalStorageDirectory();
}

システム権限が必要なアプリを開発したので、AndroidManifest.xml で android:sharedUserId="android.uid.system" を宣言し、関連する ROM の platform.x509.pem、platform.pk8 でアプリケーションに署名する必要があります。その後、外部ストレージに書き込むと、エラーが発生します。

しかし、Galaxy S3 の platform.x509.pem, platform.pk8 ファイルで署名されたアプリケーションを実行しているのではないかと混乱しています。

私のアプリは Android 4.2.2 のカスタマイズされた Android パッドでのみ実行されるため、Android フレームワーク エンジニアは throwIfSystem() メソッドを削除し、アプリの SD カード書き込み権限を変更します。

// Android シミュレーター

d---rwxr-x システム sdcard_rw 1970-01-01 00:00 SD カード

// Android カスタマイズ パッド

drwxrwxr-x システム sdcard_rw 2014-09-01 19:07 SD カード

注: Android 4.2.2 を除いて、他の Android バージョン (Android 4.4.2 を除く) には上記のエラーはありませんが、私のアプリと同じ状況のように、公式の Android システムは、宣言のあるアプリを許可しません。 AndroidManifest.xml に android:sharedUserId="android.uid.system" と署名し、関連する ROM の platform.x509.pem、platform.pk8 で署名して SD カードに書き込みます。システムは許可が拒否されたことを通知します。 Android システムのセキュリティ メカニズム。

たぶんあなたの状況は私のものと同じではないでしょう.しかし、あなたのためにいくつかの助けを願っています! 中国語が読める方は、私の個人ブログでこの記事を読むことができます。上記のエラーについて詳しく説明します。

http://www.ifeegoo.com/android-debug-static-storage-paths-are-not-available-from-aid-system-error-analysis-and-solution.html

于 2014-09-05T06:11:31.950 に答える