Androidこのパッケージは、同じ名前の既存のパッケージと競合しています.
質問:
インストールアプリケーションでは、同じ名前の既存のファイルパッケージと競合することを示すメッセージが表示されます.インストールできません
可能な理由:新しいバージョンのソフトウェアのversionCodeは既存のバージョンのソフトウェアと同じです.
ソリューション:
新しいバージョンのソフトウェアのバージョンコードを変更します.パブリケーションのたびに手動で変更しないように、コードで自動的に+1を増やすように設定できます.
方法は次のとおりです.
ステップ1:versionという名前のファイルを作成します.properties(もちろん、これは必ずしもそう書く必要はありません)、位置とbuild.gradleファイルの同級、appこれは私の実行moduleです.
ファイルの内容は次のとおりです.
VERSION_CODE=10104
ステップ2:build.gradleファイルには以下のコードが含まれています(注意:コードの位置とandroid{...}増分後のバージョン番号を取得する方法
def getVersionCode(){//バージョン番号def versionFile=file('version.properties')//最初のステップで新規作成したファイルif(versionFile.canRead(){//ファイル読み出し異常を判断するProperties versionProps=new Properties()versionProps.load(new FileInputStream(versionFile))def versionCode=versionProps['VERSION_CODE'].toInteger()/ファイル内のバージョン番号を読み込む
} else { throw new GradleException("Could not find version.properties!") } } android{ ... } 特に注意しなければならないのは、通常の状況では、パッケージ化時にのみバージョンコードを追加する必要があります.通常のデバッグではこの値を変更する必要はありません.そのため、次の判断を加える必要があります.
マルチチャネルパッケージがある場合は、task 1とtask 2は状況に応じて書くことができます.
if('assembleRelease'in runTasks|'task 1'in runTasks|'task 2'in runTasks){//assembleReleaseタスクのみバージョン番号を追加し、他のチャネルパッケージはここでそれぞれ//バージョン番号を追加してからファイルに書き込む(ここではキー、バージョン番号はプラス+1)versionProps['VERSION_CODE']=(++versionCode).toString() versionProps.store(versionFile.newWriter()、null)}特筆すべきは、私がこのステップをしている間に穴にぶつかったことです.私はマルチチャネルパッケージを設定していません.taskの値はassembleReleaseです(一般的にはそうですが)、実際には私のところで使う必要があります.app:assembleRelease、何が原因なのかは、ここでは言いません.この値を決定する簡単な方法を教えます.
releaseのapkをパッケージ化し、パッケージ化の過程でこのコードを見ることができます.その中の2つの赤い枠の中の括弧の内容はあなたが必要とします.
ステップ3:build.gradleファイル、バージョン番号を設定するコードを追加してください
私はここで直接デフォルトの位置に设定するバージョン番号で、このコードの位置に注意しますよ!!!
versionNameはversionCodeと似ていますが、最後に簡単に説明します.
def currentVersionCode=getVersionCode()今、梱包してみると、version.propertiesの10104は10105になりましたが、変更がなければ2つの可能性があります.
1、ステップ2のassembleReleaseが間違っています.ステップ2の赤い文字でデバッグしてください
2、ステップ3でgetVersionCode()メソッドの位置が間違っていました(私はうっかりdefaultConfig{...}当たりました.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
最後に、getVersionName()という方法について簡単に説明します
def getVersionName() { def date = new Date(); def versionName = date.format('yyyyMMddHHmmss'); return versionName }
インストールアプリケーションでは、同じ名前の既存のファイルパッケージと競合することを示すメッセージが表示されます.インストールできません
可能な理由:新しいバージョンのソフトウェアのversionCodeは既存のバージョンのソフトウェアと同じです.
ソリューション:
新しいバージョンのソフトウェアのバージョンコードを変更します.パブリケーションのたびに手動で変更しないように、コードで自動的に+1を増やすように設定できます.
方法は次のとおりです.
ステップ1:versionという名前のファイルを作成します.properties(もちろん、これは必ずしもそう書く必要はありません)、位置とbuild.gradleファイルの同級、appこれは私の実行moduleです.
ファイルの内容は次のとおりです.
VERSION_CODE=10104
ステップ2:build.gradleファイルには以下のコードが含まれています(注意:コードの位置とandroid{...}増分後のバージョン番号を取得する方法
def getVersionCode(){//バージョン番号def versionFile=file('version.properties')//最初のステップで新規作成したファイルif(versionFile.canRead(){//ファイル読み出し異常を判断するProperties versionProps=new Properties()versionProps.load(new FileInputStream(versionFile))def versionCode=versionProps['VERSION_CODE'].toInteger()/ファイル内のバージョン番号を読み込む
def runTasks = gradle.startParameter.taskNames
String runTasksStr=""
for(String s:runTasks){
runTasksStr+=s+","
}
//runTasks=,\:app\:assembleRelease
if (runTasksStr.indexOf("assembleRelease")>=0) {// assembleRelease ,
// ( , +1)
versionProps['VERSION_CODE'] = (++versionCode).toString()
//versionProps['runTasks'] = strs
versionProps.store(versionFile.newWriter(), null)
}
return versionCode.toInteger()//
} else { throw new GradleException("Could not find version.properties!") } } android{ ... } 特に注意しなければならないのは、通常の状況では、パッケージ化時にのみバージョンコードを追加する必要があります.通常のデバッグではこの値を変更する必要はありません.そのため、次の判断を加える必要があります.
マルチチャネルパッケージがある場合は、task 1とtask 2は状況に応じて書くことができます.
if('assembleRelease'in runTasks|'task 1'in runTasks|'task 2'in runTasks){//assembleReleaseタスクのみバージョン番号を追加し、他のチャネルパッケージはここでそれぞれ//バージョン番号を追加してからファイルに書き込む(ここではキー、バージョン番号はプラス+1)versionProps['VERSION_CODE']=(++versionCode).toString() versionProps.store(versionFile.newWriter()、null)}特筆すべきは、私がこのステップをしている間に穴にぶつかったことです.私はマルチチャネルパッケージを設定していません.taskの値はassembleReleaseです(一般的にはそうですが)、実際には私のところで使う必要があります.app:assembleRelease、何が原因なのかは、ここでは言いません.この値を決定する簡単な方法を教えます.
releaseのapkをパッケージ化し、パッケージ化の過程でこのコードを見ることができます.その中の2つの赤い枠の中の括弧の内容はあなたが必要とします.
ステップ3:build.gradleファイル、バージョン番号を設定するコードを追加してください
私はここで直接デフォルトの位置に设定するバージョン番号で、このコードの位置に注意しますよ!!!
versionNameはversionCodeと似ていますが、最後に簡単に説明します.
def currentVersionCode=getVersionCode()今、梱包してみると、version.propertiesの10104は10105になりましたが、変更がなければ2つの可能性があります.
1、ステップ2のassembleReleaseが間違っています.ステップ2の赤い文字でデバッグしてください
2、ステップ3でgetVersionCode()メソッドの位置が間違っていました(私はうっかりdefaultConfig{...}当たりました.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
最後に、getVersionName()という方法について簡単に説明します
def getVersionName() { def date = new Date(); def versionName = date.format('yyyyMMddHHmmss'); return versionName }