我把两个项目放到Eclipse中,名为Project1和Project2.
Project1是独立的,但Project2必须依赖于Project1.
当我构建Project2时,错误消息如下所示:生成最终存档时出错:重复条目:AndroidManifest.xml
我想在清单文件中添加自定义属性/属性,并能够在运行时读取它.我想这样做,所以我可以通过这些清单属性自定义应用程序的行为.如何才能做到这一点?
我维护一个库,其核心功能包括以编程方式捕获的屏幕截图与外部电子邮件应用程序共享.
我用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
目前在我的 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 似乎有问题。
我想从手机调试我的应用程序.我如何签署我的应用程序,所以我可以这样做?我对清单知之甚少.
我收到警告:
Attribute minSdkVersion (3) is lower than the project target API level (8)
Run Code Online (Sandbox Code Playgroud)
这将如何影响我的应用程序?
此代码段中的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 Manifest中将IntentService声明为常规服务,还是有其他方式?它试图搜索它,但我找不到答案.
这是常规的服务声明:
<service
android:name=".NameOfService">
</service>
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在审核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:sharedUserId="android.uid.system"在清单文件中使用的权限,而不会从包管理器收到有关认证问题的错误?
我使用带有固件的root电话.