2015-11-23 4 views
1

У меня есть простейшее возможное тестовое приложение, разработанное с помощью xamarin, развернутое на подключенном к дроссе монтируемым usb. С целью иметь один рабочий день url для трудоустройства, я пытаюсь назвать свою основную деятельность с помощью adb shell am. Вот первые несколько строк моей MainActivity ...Начать работу с adb

namespace DematAEAT_Android 
{ 
    [Activity(Label = "DematAEAT_Android", MainLauncher = true, Icon = "@drawable/icon")] 
    [IntentFilter(new[] { "AcquireSignedImage" }, 
     Categories = new[] { Intent.CategoryBrowsable, Intent.CategoryDefault })] 
    public class MainActivity : Activity 
    { 
     int count = 1; 

Вот две команды оболочки. В первом случае менеджер пакетов успешно понимает имя пакета и сообщает путь apk. Во втором случае менеджер активности не может разрешить класс MainActivity. Он не работает с пространством имен или без него.

C:\Program Files (x86)\Android\android-sdk\platform-tools>adb -d shell pm path "fr.company.DematAEAT_Android" 
package:/data/app/fr.company.DematAEAT_Android-1/base.apk 

C:\Program Files (x86)\Android\android-sdk\platform-tools>adb -d shell am start -n "fr.company.DematAEAT_Android/.DematAEAT_Android.MainActivity" 
Starting: Intent { cmp=fr.company.DematAEAT_Android/.DematAEAT_Android.MainActivity } 
Error type 3 
Error: Activity class {fr.company.DematAEAT_Android/fr.company.DematAEAT_Android.DematAEAT_Android.MainActivity} does not exist. 

редактировать ... И все же, я могу начать с удовольствием используя обезьяну. Следующая команда работает нормально. Как будто есть проблема с тем, как я назову свой класс активности в вызове оболочки adb am, но я не могу это заметить.

C:\Program Files (x86)\Android\android-sdk\platform-tools>adb shell monkey -p fr.company.DematAEAT_Android 1 
Events injected: 1 
## Network stats: elapsed time=170ms (0ms mobile, 0ms wifi, 170ms not connected) 

Может ли кто-нибудь сказать мне, как назвать это мероприятие?

+0

мог человек, который downvoted мой вопрос в течение 15 секунд, пожалуйста, объяснить себя? – bbsimonbb

ответ

1

Ну, кто знал? Мне нужно было собраться в моем manifest.xml, чтобы узнать, что xamarin добавляет хеш в качестве пространства имен перед именем моей деятельности. Таким образом, ADB вызов, который работает выглядит следующим образом ...

C:\Program Files (x86)\Android\android-sdk\platform-tools>adb -d shell am start -n fr.company.DematAEAT_Android/md5abda05033ab0415fc7a776c5d9734c74.BrowsableActivity 
Starting: Intent { cmp=fr.company.DematAEAT_Android/md5abda05033ab0415fc7a776c5d9734c74.BrowsableActivity } 

История продолжается here. Вероятно, это будет проблемой для тех, кто пытается начать деятельность xamarin через adb shell am или пытается запустить операцию xamarin с намерением или URL-адрес намерения.

0

Это было нарушение изменений в Xamarin Android 5,0

Android отзывной обертке Именование

Название коверкая схема для Android отзывной Упаковщики меняется. Раньше имя пакета Android Callable Wrapper было построено путем уменьшения имени пространства имен, что приведет к сбоям в упаковке, если более чем одна сборка содержит тип с таким же полным именем.

С выпуском версии 5.0 имена пакетов по умолчанию для Android Callable Wrappers будут основаны на MD5SUM имени сшитого типа экспортируемого типа. Это позволяет получить одно и то же полное имя из двух разных сборок и не получить ошибку упаковки.

https://developer.xamarin.com/releases/android/xamarin.android_5/xamarin.android_5.1/#Android_Callable_Wrapper_Naming

Вы можете переопределить для деятельности, указав имя в [Activity] атрибута:

[Activity(Name = "fr.company.demeat_android.MainActivity")] 
public class MainActivity : Activity { 
    /* ... */ 
} 
+0

Да. Это объяснялось мне в [последующем вопросе] (http://stackoverflow.com/questions/33897245/why-is-xamarin-appending-a-hash-as-a-namespace). Я собираюсь принять свой собственный ответ, как плохое утешение за то, что провел больше дня, глядя на эту индейку. Спасибо всем тем же. – bbsimonbb

Смежные вопросы