2

マニフェストにこの問題があります。

これは次のようなもののようです: ContentProviderでandroid:authoritiesに@stringを使用する

アプリのバージョンごとに個別の権限を持つプロバイダーがあります(さまざまなバリエーションを使用できるように、これらの権限を異なるターゲットresフォルダーの文字列フォルダー内に保存できます。

私のマニフェストはそのように見えます:

   <provider android:authorities="@string/app_provider_auth" android:name="com.mecompany.myapp.provider.CachedFileProvider"/>

現在、これは正常に機能Bad Manifestしますが、2.1OSデバイスにインストールすると問題が発生します。これは、テキスト文字列に変更すると2.1で正常に機能するための問題です。

2.1(7)以前では、マニフェストではリソースファイルから文字列を参照できません。それで、バージョン7-用に別のマニフェストを作成できますか?マニフェストにifステートメントを含めることはできますか?または、minSDK(最後の手段)を上げる必要がありますか?

アップデート:

さらに検索すると、Mavenビルドを使用してプロバイダー認証文字列を設定/切り替えることができるようです。私はすでにいくつかのプロファイルを持っており、リソースフォルダを上書きしています。だから私はそのアイデアに満足していますが、それは私が頭を動かすことができない方法です。何かのようなもの

<replaceAuthority>${customerauthority}<replaceAuthority>

ただし、使用するタグが何であるか、または上記で仮定した方法が必要な方法であるかどうかはわかりません。

4

2 に答える 2

3

<providerAuthorities>プロバイダーをMavenから変更するには、次のようなタグを使用できます。

    <plugin>
        <groupId>com.jayway.maven.plugins.android.generation2</groupId>
        <artifactId>android-maven-plugin</artifactId>
        <version>3.5.0</version>
        <extensions>true</extensions>
        <configuration>

            <!-- Установка версии в манифест -->
            <manifest>
                <versionName>${project.version.name}</versionName>
                <versionCode>${project.version.code}</versionCode>

                <!-- провайдер -->
                <providerAuthorities>
                    <property>
                        <name>.database.DatabaseProvider</name>
                        <value>${project.package}.database.DatabaseProvider</value>
                    </property>                        
                </providerAuthorities>

            </manifest>
        </configuration>
    </plugin>
于 2013-04-12T06:15:56.857 に答える
1

ここからもう少し助けを借りてandroid-maven-pluginとリソースフィルタリング

ここhttps://github.com/jayway/maven-android-plugin/pull/115

そして@KonstantinPridluda私は容認できる結論に達しました。

私がしたことは、マニフェストと呼ばれる親プロジェクトフォルダー内に新しいフォルダーを作成することでした。次に、customer1Manifestとcustomer2Manifestの2つのサブフォルダーを作成しました

これらの各フォルダー内に、マニフェストファイルのコピーを作成し、@string参照を適切なハード文字列権限に置き換えました。(通常のマニフェストファイルはデバッグ認証です)

次に、POMで、このような適切なマニフェストのマニフェストを切り替えました。

<profiles>
    <profile>
     <id>Customer1</id>
     <activation>
         <activeByDefault>true</activeByDefault>
     </activation>
     <properties>
  <customerManifest>../manifests/customer1Manifest/AndroidManifest.xml</customerManifest>
      </properties>
    </profile>
    <profile>
     <id>Customer2</id>
     <properties>
        <customerManifest>../manifests/customer2Manifest/AndroidManifest.xml</customerManifest>
      </properties>
      </profile>
</profiles>

その後、android-maven-pluginフェーズでこれを行いました

 <plugin>
        <groupId>com.jayway.maven.plugins.android.generation2</groupId>
        <artifactId>android-maven-plugin</artifactId>
        <extensions>true</extensions>

        <inherited>true</inherited>
        <configuration>
         <androidManifestFile>${customerManifest}</androidManifestFile>
            .........
.......
        </configuration>
</plugin>
于 2012-10-26T14:56:07.857 に答える