2017-10-18 4 views
0

私たちはアンドロイドアプリを開発しており、別々にポイントする必要がある2つの異なる環境があります。それはステージングとプロダクションと言うことができますが、コンプライアンス要件のために1つのAPKファイルを提供する必要があります。また、同じファイルがステージングでテストしたものを確実に作成できるように、環境を変更する方法が必要です( )。1つのAPKを使用して2つの環境に変更する

私たちはstring.xmlにURLの詳細を保存していますが、通常は2つの異なる環境を指す2つのapkを付けます。

私たちはちょうど私たちがapkの中のstring.xmlの値を変更することができるツールや他の方法があります。だから彼らは彼らが必要なときに URLを変更するためにそのツールを使用することができます。

+1

共有環境設定を使用して、環境に応じてenvと負荷を保存します。 envが実行時に使用するユーザーからの入力を取得する必要があります。 –

答えて

1

buildTypes { 
debug { 
    buildConfigField "Boolean", "IS_DEBUG", 'true' 
    buildConfigField "String", "URL", 'https://appsgit.com/debugurl' 
} 

release { 
    buildConfigField "Boolean", "IS_DEBUG", 'false' 
    buildConfigField "String", "URL", 'https://appsgit.com/releaseurl' 
} 

}

、URLを分離するための方法のこの種を使用し、このソリューションが動作しない場合..詳細は

このblog postを確認してください。 Gradle BuildFlavorを試すことができます。

次のように商品を追加してください(無料&有料)。

productFlavors { 
free { 
    applicationId "com.appsgit.freeapp" 
    buildConfigField 'boolean', 'IS_PAID', 'false' 
    buildConfigField 'boolean', 'URL', 'http://freeversion.com' 
    applicationVariants.all { variant -> 
     variant.outputs.each { output -> 
      output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace("app-release.apk", "app-free-" + defaultConfig.versionName + ".apk")) 
     } 
    } 
} 

paid { 
    applicationId "com.appsgit.paidapp" 
    buildConfigField 'boolean', 'IS_PAID', 'true' 
    buildConfigField 'boolean', 'URL', 'https://paidversion.com' 
    versionCode 1 
    versionName "1.0" 
    applicationVariants.all { variant -> 
     variant.outputs.each { output -> 
      output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace("app-release.apk", "app-paid-" + defaultConfig.versionName + ".apk")) 
     } 
    } 
} 

}

そして、ここのようなコードベースを作成し、

enter image description here

Mainは、すべての味に共有されていることを忘れないでください。

+0

ここで問題となるのは、デバッグとリリースを指す2つのapkを生成する必要がありますが、apkを送信する必要があるだけです – Suranga

+0

今更新された回答を確認してください –

+0

問題を解決しましたか? –

0

あなたのapkのstrings.xmlが変更されるので、ステージングとプロダクションのための2つの異なるapk(異なるsha256合計)になります。

問題がなければ、2つの異なる環境に「フレーバー」を使用できます。

https://developer.android.com/studio/build/build-variants.html#flavor-dimensions

あなたはkillswitchのいくつかの種類を追加することができますステージングと生産のための唯一のAPKを持っていることが必要である場合。たとえば、特別な名前のファイルである可能性があります。ファイルがデバイス上に存在する場合、apkは他の方法でステージングパスを使用します。

ご希望の場合はお手数ですが、

0

実行時に環境をユーザーに選択させる必要があります。

このため、共有環境設定から環境オプションを読む必要があります。

最も簡単な方法は、Preferences Activityを作成して、プロダクション環境とステージング環境のどちらを使用するかを選択するチェックボックスがあるようにすることです。次に、ロジックをマップして、チェックボックスがオンになっているかどうかの適切なベースURLを使用します。

関連する問題