4

この問題に関するヘルプを高低で検索しましたが、まだ何も見つかりません。

新しいビルドシステムを使用してビルドとアプリケーションを開始しています。このプロジェクトでは、無料とプロの 2 つの製品フレーバーを使用しています。gradle.build ファイルは次のとおりです。

   buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:0.5.+'
        }
    }
    apply plugin: 'android'

    repositories {
        mavenCentral()
    }

    android {
        compileSdkVersion 17
        buildToolsVersion "17.0.0"

        defaultConfig {
            minSdkVersion 7
            targetSdkVersion 17
        }

        productFlavors {
            free {
                packageName "com.example.free"
                buildConfig "public static final Boolean versionPro = true;"
            }

            pro {
                packageName "com.example.pro"
                buildConfig "public static final Boolean versionPro = false;"
            }
        }
    }

    dependencies {
        compile 'com.android.support:support-v4:13.0.+'
    }

私は src ファイル構造を次のように構築しました。これは正常に動作します。

-main -java -memphic -dodger -game -java ファイル

-無料 -java -memphic -dodger -無料 -java ファイル

-pro -java -memphic -dodger -pro -java ファイル

メイン アクティビティからフレーバー ソース ファイルのクラスを参照する方法を知りたいです。メインの Java ファイルで以下のコードを使用して、無料のパッケージ クラス ファイルを参照してみました。

com.example.free.ClassFile.addObject();

これは、パッケージを見つけることができるため、無料バージョンをビルドするときに機能します。ただし、プロ版をビルドすると、パッケージ参照が見つかりません。

クラスファイルで別のパッケージを動的に参照できる方法はありますか? そのため、プロ版とフリー版をコンパイルすると、パッケージが動的に検出されます。方法が思いつきません。

また、このような概念はGradleビルドの外ではカバーされていないため、新しいビルドの概念を使用する方法の実用的な例がどこにあるのか知っている人はいますか?

4

1 に答える 1

0

tbruyelleが言及した私の質問への答えは、ビルド中に競合しないように、フレーバーのビルドファイル全体で同じパッケージ名を維持することです。

次に、Grade.build ファイルを使用してビルド パッケージ名を変更します。これにより、各フレーバーがデバイスへの展開に対して一意になります。

于 2013-08-15T20:54:05.030 に答える