«моно-общая среда выполнения» всегда развертывается на устройстве Android

Я пытаюсь создать APK с помощью xamarin.android и Visual Studio 2012, но опция «package... apk file» отключена, и я считаю, что это ошибка, как описано здесь: (https://bugzilla.xamarin.com/show_bug.cgi?id=10530).

Тем не менее, apk по-прежнему создается при развертывании на устройстве, проблема в том, что мне нужен только один APK, который содержит все (чтобы я мог развернуть его через веб-сервер), но при сборке таким образом, даже в выпуске с «использовать общую среду выполнения ' не отмечен, на устройстве по-прежнему установлена ​​"моно-общая среда выполнения". Я создал здесь задачу: (https://bugzilla.xamarin.com/show_bug.cgi?id=11419), но пока нет ответа..


person Erlend    schedule 02.04.2013    source источник


Ответы (1)


Похоже, вам нужен только один APK для выпуска, верно? В этом случае можно создать APK из командной строки. Если вы работаете в Windows, вы можете автоматизировать это, используя следующий сценарий Powershell в качестве шаблона:

# First clean the Release target.
msbuild.exe HelloWorld.csproj /p:Configuration=Release /t:Clean

# Now build the project, using the Release target.
msbuild.exe HelloWorld.csproj /p:Configuration=Release /t:PackageForAndroid

# At this point there is only the unsigned APK - sign it.
# The script will pause here as jarsigner prompts for the password.
# It is possible to provide they keystore password for jarsigner.exe by adding an extra command line parameter -storepass, for example
#    -storepass <MY_SECRET_PASSWORD>
# If this script is to be checked in to source code control then it is not recommended to include the password as part of this script.
& 'C:\Program Files\Java\jdk1.6.0_24\bin\jarsigner.exe' -verbose -sigalg MD5withRSA -digestalg SHA1  -keystore ./xample.keystore -signedjar ./bin/Release/mono.samples.helloworld-signed.apk ./bin/Release/mono.samples.helloworld.apk publishingdoc

# Now zipalign it.  The -v parameter tells zipalign to verify the APK afterwards.
& 'C:\Program Files\Android\android-sdk\tools\zipalign.exe' -f -v 4 ./bin/Release/mono.samples.helloworld-signed.apk ./helloworld.apk

Сборка из командной строки также возможна на Mac. Обычно я автоматизирую это с помощью файла сборки Rake (вам нужно будет установить гем для задач .NET Rake из Albacore). Ниже приведен rakefile, который вы можете использовать в качестве шаблона:

require 'albacore'

@file_version = "2.0.0.0"
@keystore     = "../keystores/opgenorth-release-key.keystore"
@alias_name   = "mytrips"
@input_apk    = "EmploymentStandardsJudgments.Android/bin/Release/net.opgenorth.esj.apk"
@signed_apk   = "EmploymentStandardsJudgments.Android/bin/Release/net.opgenorth.esj-signed.apk"
@final_apk    = "deploy/AlbertaEmploymentJudgments.apk"

task :default => [:clean, :versioning, :build, :sign] 

desc "Remove the bin and obj directories."
task :clean do
  rm_rf "EmploymentStandardsJudgments.Android/bin"
    rm_rf "EmploymentStandardsJudgments.Android/obj"
end

desc "Update the build number before compiling."
assemblyinfo :versioning do |asm|
    asm.input_file  = "EmploymentStandardsJudgments.Android/Properties/AssemblyInfo.cs"
    asm.output_file = "EmploymentStandardsJudgments.Android/Properties/AssemblyInfo.cs"
    asm.version = @file_version
    asm.file_version = @_file_version
end

desc "Compiles the project."
xbuild :build do |msb|
    msb.solution = "EmploymentStandardsJudgments.Android/EmploymentStandardsJudgments.Android.csproj"
    msb.properties = { :configuration => :release }
    msb.targets [ :Clean, :Build, :SignAndroidPackage ]
end

desc "Signs and zip aligns the APK."
task :sign do 
    sh "jarsigner",  "-verbose", "-sigalg", "MD5withRSA", "-digestalg", "SHA1", "-keystore",  @keystore, "-signedjar", @signed_apk, @input_apk, @alias_name
    sh "zipalign", "-f", "-v", "4", @signed_apk, @final_apk
end

desc "Install the APK on a device."
task :install do
    %x[adb shell pm uninstall -k net.opgenorth.esj.android]
    %x[adb install deploy/AlbertaEmploymentJudgments.apk]
end

Надеюсь это поможет.

person Tom Opgenorth    schedule 02.04.2013
comment
круто! оно работает! большое спасибо! ‹3 я использовал версию msbuild.exe (.net 4.0) - person Erlend; 03.04.2013