Элемент <activity>должен быть прямым потомком элемента <application>В библиотечном манифесте - PullRequest
1 голос
/ 14 июня 2019

Я пытаюсь загрузить и запустить приложение https://github.com/siwangqishiq/ImageEditor-Android. Это дает ошибку

Android resource linking failed
C:\Users\salman\Desktop\work\Facemook\ImageEditor-Android-master\demo\build\intermediates\merged_manifests\debug\AndroidManifest.xml:20: error: unexpected element <activity> found in <manifest>.

Когда я открыл файл на

C:\Users\salman\Desktop\work\Facemook\ImageEditor-Android-master\demo\build\intermediates\merged_manifests\debug\AndroidManifest.xml

тогда содержимое файла

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xinlan.imageeditandroid"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="28" />

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

    <uses-feature
        android:name="android.hardware.camera"
        android:required="true" />

    <!-- 图片编辑Activity -->
    <activity android:name="com.xinlan.imageeditlibrary.editimage.EditImageActivity" >
    </activity>

    <application
        android:allowBackup="true"
        android:appComponentFactory="android.support.v4.app.CoreComponentFactory"
        android:debuggable="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:testOnly="true"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar" >
        <activity android:name="com.xinlan.imageeditandroid.MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- <activity android:name=".MainActivity" -->
        <!-- android:label="@string/app_name"> -->
        <!-- <intent-filter> -->
        <!-- <action android:name="android.intent.action.MAIN"/> -->


        <!-- <category android:name="android.intent.category.LAUNCHER"/> -->
        <!-- </intent-filter> -->
        <!-- </activity> -->


        <!-- <activity -->
        <!-- android:name=".MainActivity" -->
        <!-- android:label="@string/app_name"> -->
        <!-- <intent-filter> -->
        <!-- <action android:name="android.intent.action.MAIN"/> -->


        <!-- <category android:name="android.intent.category.LAUNCHER"/> -->
        <!-- </intent-filter> -->
        <!-- </activity> -->


        <!-- &lt;!&ndash;选择相册图片Activity&ndash;&gt; -->
        <!-- <activity -->
        <!-- android:name="com.xinlan.imageeditlibrary.picchooser.SelectPictureActivity" -->
        <!-- android:screenOrientation="portrait"> -->
        <!-- </activity> -->


        <!-- &lt;!&ndash;图片编辑Activity&ndash;&gt; -->
        <!-- <activity -->
        <!-- android:name="com.xinlan.imageeditlibrary.editimage.EditImageActivity" -->
        <!-- android:screenOrientation="portrait" -->
        <!-- android:windowSoftInputMode="adjustPan"> -->
        <!-- </activity> -->

    </application>

</manifest>

Как видите, этот файл содержит <activity> за пределами <application>, что вызывает ошибку, но этот файл объединен (создан Android Studio после объединения всех файлов манифеста), поэтому я не могу (или не должен) редактировать его. Теперь содержимое манифеста библиотечного модуля (снова библиотечный модуль) приведено ниже

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xinlan.imageeditlibrary" >
    <!--图片编辑Activity-->
    <activity android:name="com.xinlan.imageeditlibrary.editimage.EditImageActivity">
    </activity>
</manifest>

Здесь вы можете увидеть реальную проблему. <activity> находится вне любого <application> блока. Как уже упоминалось, этот манифест имеет библиотеку, которую я не могу окружить <application>. Как это решить? Элемент <Использования-разрешения> должен быть прямым потомком корневого элемента Элемент должен быть прямым потомком ошибки элемента Активность на заставке - элемент должен быть прямым потомком элемента [WrongManifestParent] Все они относятся к файлу манифеста основного модуля, а не к файлу манифеста библиотечного модуля.

1 Ответ

1 голос
/ 14 июня 2019

Решено, просто окружить.т.е.

<application>
<activity></activity>
</application>
...