我今天遇到了一个令人困惑的问题,关于developer.android.com上的安全提示,例如
根据 this合并逻辑,我认为它将来到应用程序清单然后库清单。如果现在主机应用程序覆盖我在库中设置的标志,这是否意味着我不再对我有保护图书馆?
例如,
<manifest //this is library manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.MYLIBRARY_MANIFEST"
xmlns:tools="http://schemas.android.com/tools">
<application android:allowBackup="false"
android:label="@string/app_name">
</application>
</manifest>
<manifest //this is application manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.MYAPPLICATION_MANIFEST"
xmlns:tools="http://schemas.android.com/tools">
<application android:allowBackup="true" //overwrite it as true
android:label="@string/app_name">
</application>
</manifest>
是否存在通过强制库不允许或不可调试来保护库本身?
答案 0 :(得分:1)
这是否意味着我不再对我的图书馆提供保护?
对于清单条目,库首先没有真正的“保护”。用户呢。
使用您的资料库的应用的开发者可以选择为android:allowBackup
,android:debuggable
等做什么。在android:debuggable
的特定情况下,通常通过Gradle设置: debug
版本设置为true
; release
版本设置为false
。
是否存在通过强制库不允许或不可调试来保护库本身?
对于清单条目,库首先没有真正的“保护”。用户呢。
您无法阻止开发人员为这些属性设置他们想要的任何值。
欢迎您检查应用的ApplicationInfo
对象(在getApplicationInfo()
上调用Context
)以查看这些标志的设置。然后,欢迎您根据这些信息采取任何您想要的步骤。
但是,请记住,您似乎想要采取的步骤 - 如果开发人员不满足您的要求,则阻止应用程序运行 - 只是意味着您的库不会被使用。例如,告诉开发人员他们无法进行debug
构建,并不会非常受欢迎。
答案 1 :(得分:0)
您有主持人项目和图书馆。我将在可调试的示例中解释。
实际上主机应用程序始终将扮演最重要的角色。
如果您未在库中的清单文件中包含debuggable
标记,则Android会在Host App中获取此标记(如果存在)。
因此,当您在资源管理器中设置debuggable = false
标记并在主机应用程序中设置debuggable=true
时,这意味着您debuggable
标记不会影响库,但主机应用程序会受到影响。< / p>