カスタム ビルドを使用して Android アプリを再パッケージ化しようとしています。本番アプリと並行してインストールできる内部ベータ版を作成したいと考えています。
この答えはまさに私が必要としているもののように見えますが、うまくいかないようです。
私のbuild.xmlへの更新は次のとおりです。
<target
name="-package-resources"
depends="-crunch" >
<echo>Repackaging AndroidManifest.xml to ${package.manifest.name} ${out.absolute.dir}/${resource.package.file.name}</echo>
<exec executable="${aapt}" failonerror="true">
<arg value="package" />
<arg value="-f" />
<arg value="--auto-add-overlay" />
<arg value="-M" />
<arg path="AndroidManifest.xml" />
<arg value="-S" />
<arg path="${resource.absolute.dir}" />
<arg value="-S" />
<arg path="${android.library.reference.1}/res" />
<arg value="-A" />
<arg path="${asset.absolute.dir}" />
<arg value="-I" />
<arg path="${project.target.android.jar}" />
<arg value="-F" />
<arg path="${out.absolute.dir}/${resource.package.file.name}" />
<arg value="--rename-manifest-package" />
<arg value="${package.manifest.name}" />
</exec>
</target>
それを実行すると、新しいコードが正常に実行されるようです:
ant debug -Dpackage.manifest.name=com.example.test
...
-package-resources:
[echo] Repackaging AndroidManifest.xml to com.example.test /<mypath>/bin/<appname>.ap_
...
BUILD SUCCESSFUL
ただし、APKToolを使用して APK を検査すると、AndroidManifest のパッケージ名が新しい値に変更されていません。発生したように見えるのは、相対的なアクティビティ パス ".MyActivity" が元のパッケージ名に展開されたことだけです。
apktool d --force bin/<appname>-debug.apk
私が間違っていることを誰かが知っていますか?他のすべての Stackoverflow の回答を見てきましたが、ほとんどが少し古くなっているようです。minSdkVersion 8 用の Android SDK ツール リビジョン 21.1.0 でビルドしています。
更新: @athor が彼の回答の下にコメントしているように、AndroidManifest.xml の検査に関する私の仮定は間違っています。これをテストするには、逆コンパイルされた XML を表示するのではなく、実際にインストールしてみる必要があります。