标签: android-manifest

如何修复"生成最终存档时出错:重复条目:AndroidManifest.xml"

我把两个项目放到Eclipse中,名为Project1和Project2.

Project1是独立的,但Project2必须依赖于Project1.

当我构建Project2时,错误消息如下所示:生成最终存档时出错:重复条目:AndroidManifest.xml

android android-manifest

34
推荐指数
2
解决办法
3万
查看次数

如何将用户定义的属性/值添加到Android清单文件中?

我想在清单文件中添加自定义属性/属性,并能够在运行时读取它.我想这样做,所以我可以通过这些清单属性自定义应用程序的行为.如何才能做到这一点?

android android-manifest android-custom-attributes

34
推荐指数
2
解决办法
2万
查看次数

可以在FileProvider中使用多个权限吗?

背景

我维护一个库,其核心功能包括以编程方式捕获的屏幕截图与外部电子邮件应用程序共享.

我用a FileProvider来完成这个,这意味着我的库的清单包含一个<provider>标签:

<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="${applicationId}.bugshaker.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/filepaths" />
</provider>
Run Code Online (Sandbox Code Playgroud)

filepaths.xml 定义如下:

<paths>
    <files-path path="bug-reports/" name="bug-reports" />
</paths>
Run Code Online (Sandbox Code Playgroud)

我的库的消费者有一个应用程序,它本身使用a FileProvider来共享文件.我的期望是,如果使用应用程序使用以下清单<provider>标记,则应该可以允许两个提供程序共享文件:

<provider
    android:authorities="${applicationId}.fileprovider;${applicationId}.bugshaker.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true"
    android:name="android.support.v4.content.FileProvider"
    tools:replace="android:authorities">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths"
        tools:replace="android:resource" />
</provider>
Run Code Online (Sandbox Code Playgroud)

这个清单条目:

  • 指定两个Provider权限${applicationId}.fileprovider(用于应用程序文件共享)和${applicationId}.bugshaker.fileprovider(用于库文件共享);
  • 引用更新filepaths.xml,其中包含应用程序生成的文件和库生成的文件的单独目录定义:
<paths>
    <external-path
        name="redacted"
        path="" />
    <files-path
        name="bug-reports"
        path="bug-reports/" />
</paths>
Run Code Online (Sandbox Code Playgroud)

构建应用程序后,我们已确认生成的清单已使用这些更新的值替换了正确的节点.

但是,当使用此配置的应用程序组装(成功)并运行时,我们会看到启动时崩溃:

E: FATAL EXCEPTION: main
   Process: com.stkent.bugshakertest, PID: 11636
   java.lang.RuntimeException: Unable to …
Run Code Online (Sandbox Code Playgroud)

android android-manifest android-contentprovider manifest-merging

34
推荐指数
1
解决办法
1万
查看次数

Android 33 - Android Studio 中的清单和布局文件中的问题

目前在我的 Android 应用程序中,targetSdkVersion 32在我的 AndroidManifest.xml 文件中,我有:

<application
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_nameshort"
    android:supportsRtl="false"
    android:theme="@style/AppTheme">
    
    <activity android:name=".MainActivity"
        android:screenOrientation="portrait"
        tools:ignore="LockedOrientationActivity"
        android:windowSoftInputMode="adjustPan"
        android:exported="true">
Run Code Online (Sandbox Code Playgroud)

一切都很好并且运行良好。

然而现在当我更新我的应用程序时,Android Studio (Chipmunk | 2021.2.1) 建议使用targetSdkVersion 33. 执行此操作后,AndroidManifest.xml 中存在问题:

unknown attribute android:supportsRtl
unknown attribute android:screenOrientation
unknown attribute android:windowSoftInputMode 
Run Code Online (Sandbox Code Playgroud)

以及 XML 布局文件中的多个问题。例如:

unknown android:contentDescription
unknown android:layout_toEndOf
Run Code Online (Sandbox Code Playgroud)

以及更多...

我已经尝试过使缓存无效,重建项目,但没有任何帮助。只有切换回目标版本 32 才有帮助。这些属性真的已被弃用还是有任何问题?它并没有说已弃用,只是说未知。

我还从缓存文件夹中物理删除了文件,还重新安装了 API 33 SDK,但没有任何帮助。

我什至重新安装了 Android Studio,但没有成功。API 33 与 Android Studio 似乎有问题。

android android-manifest

34
推荐指数
3
解决办法
1万
查看次数

android:我如何将我的应用标记为可调试?

我想从手机调试我的应用程序.我如何签署我的应用程序,所以我可以这样做?我对清单知之甚少.

debugging android android-manifest

32
推荐指数
2
解决办法
5万
查看次数

如果minSdkVersion低于targetSdkVersion会发生什么?

我收到警告:

Attribute minSdkVersion (3) is lower than the project target API level (8)
Run Code Online (Sandbox Code Playgroud)

这将如何影响我的应用程序?

xml android android-manifest

32
推荐指数
2
解决办法
1万
查看次数

主要无法解决或不是一个领域

此代码段中的setContentView行中发生此错误:

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
Run Code Online (Sandbox Code Playgroud)

我知道为了解析R.layout.main,必须存在名为res/layout/main.xml的文件.

它存在且有效(即Eclipse将其标记为完美且没有任何错误).那么,还有什么可能导致这个错误?

顺便说一下,我已经尝试过Project> Clean.错误仍然存​​在.

android android-manifest android-layout

32
推荐指数
2
解决办法
9万
查看次数

如何在Android Manifest中声明Intent服务?

直截了当的问题:

在Android Manifest中将IntentService声明为常规服务,还是有其他方式?它试图搜索它,但我找不到答案.

这是常规的服务声明:

 <service
                android:name=".NameOfService">
 </service>
Run Code Online (Sandbox Code Playgroud)

谢谢

service android android-manifest intentservice

32
推荐指数
2
解决办法
7万
查看次数

如何在Android上指定仅适用于手机或平板电脑的活动

我正在审核Google I/O Session 2012应用程序并遇到了这个TODO

// TODO: use <meta-data> element instead
private static final Class[] sPhoneActivities = new Class[]{
        MapActivity.class,
        SessionDetailActivity.class,
        SessionsActivity.class,
        TrackDetailActivity.class,
        VendorDetailActivity.class,
};

// TODO: use <meta-data> element instead
private static final Class[] sTabletActivities = new Class[]{
        MapMultiPaneActivity.class,
        SessionsVendorsMultiPaneActivity.class,
};

public static void enableDisableActivities(final Context context) {
    boolean isHoneycombTablet = isHoneycombTablet(context);
    PackageManager pm = context.getPackageManager();

    // Enable/disable phone activities
    for (Class a : sPhoneActivities) {
        pm.setComponentEnabledSetting(new ComponentName(context, a),
                isHoneycombTablet
                        ? PackageManager.COMPONENT_ENABLED_STATE_DISABLED
                        : PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                PackageManager.DONT_KILL_APP);
    }

    // Enable/disable …
Run Code Online (Sandbox Code Playgroud)

android android-manifest android-activity

32
推荐指数
1
解决办法
4185
查看次数

创建系统应用程序

我应该怎么做才能创建一个系统应用程序(获取android:sharedUserId="android.uid.system"在清单文件中使用的权限,而不会从包管理器收到有关认证问题的错误?

我使用带有固件的root电话.

android root android-manifest

32
推荐指数
3
解决办法
5万
查看次数