android - 覆盖包裹是什么意思?

时间:2018-02-01 11:31:07

标签: android android-studio

要清楚我要问的是什么,我将提供一个真实世界的例子。看看at this并注意以下部分:

  

热线 - Android SDK集成步骤修改日期:2017年10月6日星期五晚上8:21

     

集成热线SDK(使用Gradle)先决条件:

     
      
  1. 热线SDK客户端需要运行Android 2.3或更高版本的设备
  2.   
  3. 此处的热线应用ID和应用密钥:在哪里可以找到应用ID和应用密钥
  4.   
  5. Android Studio和Gradle
  6.         

    如果您在整合期间有任何疑问,请将其发送给我们 - 提交查询

         

    1。将热线SDK添加到您的应用

         

    将maven URL添加到根build.gradle(project / build.gradle)

    allprojects {
        repositories {
            jcenter()
            maven { url "https://jitpack.io" }
        }
    } 
    
         

    将以下依赖项添加到app模块的build.gradle文件中   (project / app / build.gradle):

    apply plugin: 'com.android.application'
    
    android {
    // ...
    }
    
    dependencies {
    // ...
        compile 'com.github.freshdesk:hotline-android:1.2.+'
    }
    
         

    支持1.1 Android目标版

         

    热线SDK支持定位Android 5.0及更高版本的应用。 SDK   本身兼容姜饼(API级别10)。

         

    当应用定位到Android 7.0 +

    时      

    如果没有为Hotline SDK配置FileProvider,请执行以下操作   显示错误代码

    "Missing/Bad FileProvider for Hotline. Camera capture will fail in devices running Nougat or later versions of OS (error code 354)"
    
         

    要解决此问题,请在中添加提供商   AndroidManifest.xml如下所示,并在strings.xml中指定权限。   假设,com.example.demoapp是您的应用程序的包名称   宣言将是

         

    的AndroidManifest.xml

    <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="com.example.demoapp.provider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/hotline_file_provider_paths" />
    </provider>
    
         

    的strings.xml

    <string name="hotline_file_provider_authority">com.example.demoapp.provider</string>
    
         

    当应用定位到Android 8.0 +

    时      

    当应用的目标是Android 8.0或更高版本,并且扩展名包含appcompat-v7 r26.0.0。+时,您会看到以下错误

    E/UncaughtException: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/freshdesk/hotline/activity/InterstitialActivity;
    
         

    热线SDK的活动扩展了ActionBarActivity以保留SDK   兼容app定位较旧的Android版本/ appcompat-v7   修订。可以通过添加代理类来解决它   (ActionBarActivity被AppCompatActivity取代并被代理   自appcomapt-v7的24.2.0以来,lib本身,直到它被删除   26.0.0)如果使用支持库26.x.x构建,请手动。

         

    在相应的包中添加以下类

    package android.support.v7.app;
    
    public class ActionBarActivity extends AppCompatActivity {
    }
    

我的问题与热线无关。但在我做了他们所要求的后,我的包结构看起来像这样:

enter image description here

现在你有一些背景让我告诉你我不明白的事情。这是否意味着我重写了android.support.v7.app.ActionBarActivity包中的任何调用?这是否意味着对于任何第三方构建我都可以这样覆盖它的类,只要我知道包和类名? 基本上,将我不拥有的东西的包名称放入我的包结构中意味着什么?它做了什么?

更新:在此处查看此文章为another example。如果您阅读解决方案3,您会发现我们可以使用facebook.login执行相同的操作。我亲自实现了它,它的工作原理。我的测试包结构看起来像这样,它会覆盖facebooks loginCreator等:

enter image description here

即使我实现了它,我仍然不知道发生了什么。有人可以解释一下吗?

0 个答案:

没有答案