2015-01-15 9 views
9

dla mojej aplikacji, która Zajmuję się z najnowszym Androidem Studio Używam tego współzależności wewnątrz to Gradle plik:Android Gradle Oczywisty Fuzja: Zastąp „używa-gość” cechy pochodzące z biblioteki

dependencies { 
    compile 'com.android.support:support-v4:21.0.+' 
    compile 'com.helpshift:android-aar:3.7.1' 
} 

biblioteka com.helpshift:android-aar:3.7.1 potrzebuje następujące zgodę na cechę, że nie używam w moim głównym aplikacji:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Jak opisano here i here mogę zastąpić atrybuty z deklaracji XML z zaimportowanej biblioteki o nazwie .

Ale czy mogę również zastąpić manifesty XML, takie jak wspomniana, takie jak wymienione uses-permission?

Próbowałem już coś takiego w moim głównym manifestu, ale to nie działa:

<permission 
    android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
    tools:node="remove" 
    tools:selector="com.helpshift"> 
</permission> 

zmienia również element do <uses-permission><permission> nie pomoże. Aplikacja nadal prosi o pozwolenie na dostęp do karty SC.

Moim głównym AndroidManifest.xml wygląda to teraz:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    android:installLocation="auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    package="com.bmi.rechner" > 

    <uses-permission 
     android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
     tools:node="remove" 
     tools:selector="com.helpshift"> 
    </uses-permission> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="com.android.vending.BILLING" /> 

    <application 
     ... 

Aktualizacja: Sugerowana odpowiedź przez @CommonsWare działa.

To tylko moja tools:selector="com.helpshift", która nie jest poprawna. Zostawiam to, ponieważ jestem pewien, że nie będę potrzebował tego zezwolenia w żadnej innej bibliotece przez jakiś czas.

Zgłosił także feature request, aby poprawić raport Manifest Merger, który może pomóc w znalezieniu odpowiedniego selektora w przyszłości.

Odpowiedz

9

Byłby to element <uses-permission>, który można by remove, a nie element <permission>.

Pamiętaj, że biblioteka może ulec awarii, jeśli Twoja aplikacja nie posiada tego pozwolenia.

+0

Dzięki, ale zmiana elementu na nie pomogła. Aplikacja wciąż prosi o pozwolenie na dostęp do karty SC. Czy używam go we właściwym elemencie mojego pliku manifestu? – Steffen

+0

@sdeff: Nie mam pojęcia, czy twój 'com.helpshift' jest odpowiedni dla' selektora', ponieważ nie korzystam z tej biblioteki. Poza tym spójrz na jawny raport o fuzji (powinien być w 'build/output/apk /' IIRC) i zobacz, czy daje ci jakieś wskazówki. – CommonsWare

+1

Właśnie usunąłem 'tools: selector =" com.helpshift "' i teraz wydaje się działać. To powinno być teraz w porządku? Btw. biblioteka ma czat w aplikacji, w którym użytkownicy mogą dołączać zrzuty ekranu. To już nie działa, ale jest lepsze niż 1-gwiazdkowe oceny użytkowników, którzy myślą, że chcę tylko uzyskać ich dane osobowe. :) – Steffen

Powiązane problemy