Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Androidhoz készült .NET építési folyamat felelős az egész összefogásáért: a generálásért, a @(AndroidAsset)@(AndroidResource) támogatásáért és további build műveletekért, az Android-kompatibilis burkolók létrehozásáért, valamint a .apk futtatásáért Android-eszközökön.
Alkalmazáscsomagok
Általánosságban véve az Android-alkalmazáscsomagok (.apk fájlok) két típusa létezik, amelyeket az androidos .NET buildrendszer képes létrehozni:
Kiadási verziók, amelyek teljesen önállóak, és nem igényelnek további csomagokat a futtatáshoz. Ezek az App Store-nak biztosított csomagok.
Hibakeresési buildok, amelyek nem működnek.
Ezek a csomagtípusok megegyeznek a csomagot előállító MSBuild Configuration típusokkal.
Gyors üzembe helyezés
A gyors üzembe helyezés az Android-alkalmazáscsomagok méretének további zsugorításával működik. Az alkalmazás szerelvényeit úgy zárja ki a csomagból, hogy azokat közvetlenül az alkalmazás belső files könyvtárában helyezi el, amely általában a /data/data/com.some.package helyen található. A belső files könyvtár nem globálisan írható mappa, ezért az eszköz az run-as összes parancs végrehajtására szolgál a fájlok ebbe a könyvtárba való másolásához.
Ez a folyamat felgyorsítja a buildelési/üzembe helyezési/hibakeresési ciklust, mert a csomag nem lesz újratelepítve , ha csak a szerelvények módosulnak. Csak a frissített szerelvények lesznek újraszinkronizálva a céleszközre.
Figyelmeztetés
A gyors üzembe helyezésről ismert, hogy nem működik azokon az eszközökön, amelyek blokkolják a run-as, ami gyakran magában foglalja az Android 5.0-nál régebbi eszközöket is.
A gyors üzembe helyezés támogatott mind a .apk, mind a .aab csomagformátumok esetében.
Alapértelmezés szerint engedélyezve van, és a $(EmbedAssembliesIntoApk) tulajdonság beállításával letiltható a Debug buildekben.
Vegye figyelembe, hogy a .aab használata gyors üzembe helyezéssel lassabb lesz, mint a .apk, mivel a .aab fájlt bundletool-on keresztül kell feldolgozni a csomagoláshoz és telepítéshez.
A továbbfejlesztett gyors üzembe helyezési mód ezzel a funkcióval együtt használható az üzembe helyezés további felgyorsításához.
Ez mind az összeállításokat, a natív könyvtárakat, a típustérképeket és a DEX fájlokat a files könyvtárba telepíti. Ezt azonban csak akkor kell engedélyeznie, ha natív kódtárakat, kötéseket vagy Java-kódot módosít.
MSBuild-projektek
Az Android .NET buildelési folyamata az MSBuilden alapul, amely a Visual Studio for Mac és a Visual Studio által használt projektfájl-formátum. A felhasználóknak általában nem kell kézzel szerkeszteniük az MSBuild fájlokat – az IDE teljesen működőképes projekteket hoz létre, és frissíti őket minden módosítással, és szükség szerint automatikusan meghívja a buildcélokat.
Előfordulhat, hogy a haladó felhasználók olyan műveleteket szeretnének végrehajtani, amelyeket az IDE grafikus felülete nem támogat, így a létrehozási folyamat testre szabható a projektfájl közvetlen szerkesztésével. Ez a lap csak az Android-specifikus funkciókhoz és testreszabásokhoz készült .NET-et tartalmazza – a normál MSBuild elemekkel, tulajdonságokkal és célokkal még sok minden lehetséges.
Projektek összekapcsolása
A kötésprojektek a következő MSBuild tulajdonságokat használják:
Resource.designer.cs Generáció
A következő MSBuild tulajdonságok szabályozzák a Resource.designer.cs fájl létrehozását:
$(AndroidAapt2CompileExtraArgs)$(AndroidAapt2LinkExtraArgs)$(AndroidExplicitCrunch)$(AndroidR8IgnoreWarnings)$(AndroidResgenExtraArgs)$(AndroidResgenFile)$(AndroidUseAapt2)$(MonoAndroidResourcePrefix)
Aláírási tulajdonságok
Az aláírási tulajdonságok szabályozzák, hogy az alkalmazáscsomag hogyan legyen aláírva, hogy az androidos eszközre telepíthető legyen. A gyorsabb buildelési iteráció érdekében az Androidhoz készült .NET-feladatok nem írnak alá csomagokat a buildelési folyamat során, mivel az aláírás meglehetősen lassú. Ehelyett (ha szükséges) a telepítés előtt vagy az exportálás során, az IDE vagy az Install build cél által vannak aláírva. A SignAndroidPackage cél meghívásával létrehoz egy csomagot a -Signed.apk utótaggal a kimeneti könyvtárban.
Alapértelmezés szerint az aláírási cél létrehoz egy új hibakeresési aláírási kulcsot, ha szükséges. Ha egy adott kulcsot( például buildkiszolgálón) szeretne használni, a rendszer a következő MSBuild tulajdonságokat használja:
$(AndroidDebugKeyAlgorithm)$(AndroidDebugKeyValidity)$(AndroidDebugStoreType)$(AndroidKeyStore)$(AndroidSigningKeyAlias)$(AndroidSigningKeyPass)$(AndroidSigningKeyStore)$(AndroidSigningStorePass)$(JarsignerTimestampAuthorityCertificateAlias)$(JarsignerTimestampAuthorityUrl)
keytool Beállításleképezés
Fontolja meg a következő keytool hívást:
$ keytool -genkey -v -keystore filename.keystore -alias keystore.alias -keyalg RSA -keysize 2048 -validity 10000
Enter keystore password: keystore.filename password
Re-enter new password: keystore.filename password
...
Is CN=... correct?
[no]: yes
Generating 2,048 bit RSA key pair and self-signed certificate (SHA1withRSA) with a validity of 10,000 days
for: ...
Enter key password for keystore.alias
(RETURN if same as keystore password): keystore.alias password
[Storing filename.keystore]
A fent létrehozott kulcstár használatához használja a tulajdonságcsoportot:
<PropertyGroup>
<AndroidKeyStore>True</AndroidKeyStore>
<AndroidSigningKeyStore>filename.keystore</AndroidSigningKeyStore>
<AndroidSigningStorePass>keystore.filename password</AndroidSigningStorePass>
<AndroidSigningKeyAlias>keystore.alias</AndroidSigningKeyAlias>
<AndroidSigningKeyPass>keystore.alias password</AndroidSigningKeyPass>
</PropertyGroup>
Bővítménypontok létrehozása
Az androidos .NET buildrendszer néhány nyilvános bővítménypontot tesz elérhetővé a buildelési folyamatba csatlakozni kívánó felhasználók számára. Ezen bővítménypontok egyikének használatához hozzá kell adnia az egyéni célértéket a megfelelő MSBuild tulajdonsághoz egy PropertyGroup. Például:
<PropertyGroup>
<AfterGenerateAndroidManifest>
$(AfterGenerateAndroidManifest);
YourTarget;
</AfterGenerateAndroidManifest>
</PropertyGroup>
A bővítménypontok a következők:
- '$(AfterGenerateAndroidManifest)
- '$(AndroidPrepareForBuildDependsOn)
- '$(BeforeGenerateAndroidManifest)
$(BeforeBuildAndroidAssetPacks)
A buildelési folyamat kiterjesztésére vonatkozó figyelmeztetés: Ha nem megfelelően van megírva, a buildbővítmények hatással lehetnek a build teljesítményére, különösen akkor, ha minden builden futnak. Javasoljuk, hogy az ilyen bővítmények implementálása előtt olvassa el az MSBuild dokumentációját .
Céldefiníciók
A buildelési folyamat Androidra specifikus .NET részeit a $(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets határozza meg, de az összeállítás létrehozásához normál nyelvspecifikus célokra, mint például Microsoft.CSharp.targets is szükség van.
A nyelvi célok importálása előtt a következő buildtulajdonságokat kell megadni:
<PropertyGroup>
<TargetFrameworkIdentifier>MonoDroid</TargetFrameworkIdentifier>
<MonoDroidVersion>v1.0</MonoDroidVersion>
<TargetFrameworkVersion>v2.2</TargetFrameworkVersion>
</PropertyGroup>
Ezek a célok és tulajdonságok a Xamarin.Android.CSharp.targets importálásával vehetők fel a C#-hoz:
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
Ez a fájl könnyen adaptálható más nyelvekhez.