3

私は、いくつかの「静的構成」データをプリロードして編集できないようにする必要があるAndroidアプリを持っています。このデータもリレーショナルです。アプリの機能が向上するにつれて、おそらく時間の経過とともに変化するでしょう.

周りを見回すと、事前に sqlite3 db ファイルを準備し、コードごとに通常の db ディレクトリ (/data/data/whateverapp/databases/preloaded.db) に配置するという提案を見てきました。しかし、この方法では、root 権限を持つ人 (つまり、root 化された電話) がデータを入力して編集する可能性があるのではないかと心配しています。また、db ファイルを暗号化/復号化する必要があると、面倒で混乱する可能性があります (これを達成するためのネイティブな方法はありません)。

静的データのリストを使用してクラスを構築するという提案も見てきました。これは機能するかもしれませんが、やや面倒でエレガントではありません。

では、これを達成するための正しく、エレガントで安全な方法はどれでしょうか?

4

3 に答える 3

1

定義されたXMLリソースを含む構成ファイルを作成するだけで済みます。私はこれを行いました、そしてそれは非常にうまくいきます。このように、複数の構成がある場合は、これらの構成ファイルをバックアップして、古いバージョンで機能させることができます。私の知る限り、これらのリソースをプログラムで編集することもできないと思います。

これが私がそれをどのように使っているかの簡単な例です。すなわち:

マニフェスト:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="blah.blah"
      android:versionCode="@integer/version_code"
      android:versionName="@string/build_version">

私のリソースファイル:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="version_code">1</integer>
    <string name="build_version">1.0</string>
        <string name="param">Some other Param</string>
</resources>

これで、プログラムは実行時にバージョンコードとバージョン名のリソースを取得できるようになります。プログラムで他の値を取得するには、次のコードを使用できます。

public class Configuration {
Context thisContext;
private String Param = "";

    public Configuration(Context cont){
        thisContext = cont;
        String param= thisContext.getResources().getString(R.string.param);

        setParam(param);
    }

    /**
     * @return the param
     */
    public static String getParam() {
        return Param;
    }
    /**
     * set the Param
     */
    public static void setParam(String param) {
        Param= param;
    }
}

次に、アプリケーションonCreateで構成オブジェクトを次のように作成できます。

new Configuration(this);

その後、関数を使用できます

Configuration.getParam(); 

どのクラスでも、値を取得します。

それでもさまざまなパラメータを書き込む必要がありますが、それは非常に簡単です。で、もし

古いバージョンを参照する必要があります。これは、構成ファイルをスワップアウトするのと同じくらい簡単です。

うまくいけば、これはあなたを助けます!乾杯

于 2012-10-03T19:29:01.780 に答える
1

これを行う方法はたくさんあります:

  • アプリ内のリソースとしてバンドルし、初回実行時に DB を抽出して更新するなど
  • サーバーからダウンロードし、GCM を使用してデータの更新について通知します。データが変更されたときにアプリ全体を更新する必要はありません
  • Google Play 拡張 (または拡張機能でしたか?) ファイルを使用します。データは Google サーバーからダウンロードされるため、アプリは認証を受ける必要があります。データを更新するには、新しいアプリ バージョンをプッシュする必要があります。
  • リモート API を使用し、生データの処理を忘れる

エレガンスは主観的なものです。お好みでお選びください。

于 2012-10-04T02:58:47.523 に答える
0

サーバーベースのデータベースを使用し、厳格なセキュリティを使用してユーザーがサーバーにアクセスできるようにすることをお勧めします。アクセス コードを安全に暗号化して難読化し、ユーザーの資格情報を保護すれば、経験の浅いハッカーを大量にかわしたことになり、DB が電話にさえないため、ルート化された電話について心配する必要がなくなります。コメントで述べたように、ハッカーは非常に巧妙になっていますが、コードをクラックすることで彼らの生活をより困難にすることを妨げるべきではありません。

于 2012-10-03T18:11:19.053 に答える