2

Xamarin を使用して Visual Studio で作成した Android アプリのインスタンスを同時に実行するには、既存の .apk のパッケージ名を変更できる必要があります。ただし、このパッケージ名を変更する必要がある場合、Xamarin ライセンスを使用してコンピューターに確実にアクセスすることはできないため、ビルド前のマニフェストを単純に編集することはできません。ApkTool を使用して、apk を解凍し、マニフェストを編集してから、apk を再パッケージ化して再署名しようとしました。ただし、この新しい apk を元の apk と並べてデバイスにインストールすることはできますが、新しいアプリ インスタンスは起動しません。次のエラーが表示されます。

"monodroid" "'(null)' または '/storage/emulated/0/Android/data/com.newpackagename/files/.override' にアセンブリが見つかりませんこれが Fast Deployment の一部であると仮定します。終了します..."

これは、ビルド後にパッケージ名を何らかの形で変更すると、アセンブリへのリンクが失われたことを意味すると思います。ただし、解凍された apk 全体 (フォルダーとファイル内の両方) を検索しても、元のパッケージ名への参照は見つかりません。したがって、これらのアセンブリを回復してアプリを実行できるようにする方法を見つけたいと思います。これは非常に珍しいことであり、正しい方法ではないかもしれないことは理解していますが、Xamarin にアクセスせずにパッケージ名を変更する機能が必要です。これは最も有望な解決策のようです。

4

1 に答える 1

2

aaptXamarin は、 (Android Asset Packaging Tool) には不明な、最終的にビルドされた apk 内のファイルの保存に依存しています。これらのファイルは通常assemblies、apk のルート内のフォルダーにSTORED圧縮タイプで挿入されるため、Xamarin は解凍せずにファイルにアクセスできます。

Apktool は、無視するすべてのファイルをaapt無視していました。すなわち。ファイルがこの配列のフォルダー/ファイルでない場合

private final static String[] APK_STANDARD_ALL_FILENAMES = new String[] {
        "classes.dex", "AndroidManifest.xml", "resources.arsc", "res", "lib", "libs", "assets", "META-INF" };

Apktool がそれを無視するよりも。2.0.xただし、 の開発中に、これらの不明なファイルを含める試みが行われました。

Java 7 NIO ライブラリのバグにより、すべての「不明な」ファイルがDEFLATED. DLLsこれにより、からの格納形式が変更され、STOREDこのDEFLATEDエラーが発生しました。

このエラーは 3 月 25 日に修正されました - https://github.com/iBotPeaches/Apktool/commit/628286c022e3a872d6ab6bfb3431579f98743c25

2015 年 4 月 8 日現在 - この修正を含む公式リリースはありません。がリリースされるまでは、自分で Apktoolを構築することもできます。2.0.0 Gold

于 2015-04-08T16:20:56.367 に答える