应用程序项目

时间:2015-11-20 23:08:47

标签: android gradle android-gradle

我今天遇到了一个令人困惑的问题,关于developer.android.com上的安全提示,例如

  1. allowbackup
  2. debuggable
  3. 根据 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>
    

    是否存在通过强制库不允许或不可调试来保护库本身?

2 个答案:

答案 0 :(得分:1)

  

这是否意味着我不再对我的图书馆提供保护?

对于清单条目,库首先没有真正的“保护”。用户呢。

使用您的资料库的应用的开发者可以选择为android:allowBackupandroid:debuggable等做什么。在android:debuggable的特定情况下,通常通过Gradle设置: debug版本设置为true; release版本设置为false

  

是否存在通过强制库不允许或不可调试来保护库本身?

对于清单条目,库首先没有真正的“保护”。用户呢。

您无法阻止开发人员为这些属性设置他们想要的任何值。

欢迎您检查应用的ApplicationInfo对象(在getApplicationInfo()上调用Context)以查看这些标志的设置。然后,欢迎您根据这些信息采取任何您想要的步骤。

但是,请记住,您似乎想要采取的步骤 - 如果开发人员不满足您的要求,则阻止应用程序运行 - 只是意味着您的库不会被使用。例如,告诉开发人员他们无法进行debug构建,并不会非常受欢迎。

答案 1 :(得分:0)

您有主持人项目和图书馆。我将在可调试的示例中解释。

实际上主机应用程序始终将扮演最重要的角色。 如果您未在库中的清单文件中包含debuggable标记,则Android会在Host App中获取此标记(如果存在)。

因此,当您在资源管理器中设置debuggable = false标记并在主机应用程序中设置debuggable=true时,这意味着您debuggable标记不会影响库,但主机应用程序会受到影响。< / p>