Android开发问题汇总(二)

1.Error running app: Default Activity not found

A: 问题的原因是 AndroidManifest.xml 文件配置的有问题。正确的样例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="edu.self.buildexample">

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">

<activity android:name=".BuildExampleActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

2. How to rename java package in Android Studio?

A:Android Studio Rename Package

3.No service of type Factory available in ProjectScopeServices

A:Change maven gradle plugin version to 1.4.1 in project build.gradle file

1
2
3
4
dependencies {
    classpath 'com.android.tools.build:gradle:2.2.2'
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
}

ReferenceNo service of type Factory available in ProjectScopeServices

4.Android Gradle cannot find symbol class Gson

A:In my case, I just added this line:

1
compile 'com.google.code.gson:gson:2.7'

on my app build.gradle file.

By now 2.7 is last current available version according to: https://mvnrepository.com/artifact/com.google.code.gson/gson

Please check this repository to be sure you are using last available version.

Reference:Android Gradle cannot find symbol class Gson

继续阅读

iOS 面试题汇总(四)

1.熟悉 CocoaPods 么?能大概讲一下工作原理么?

A:熟悉,CocoaPods 是一个依赖管理工具,它通过 Podfile 来表达依赖,每个依赖都有一个 podspec 。 podspec 文件存储着该依赖的基本信息:包含哪些文件,静态库,资源文件等,依赖哪些第三方库、系统框架,之后 pod 会创建一个工程,把这个库以 target 的形式包含进来,应用则依赖这个 pod 工程。

2.最常用的版本控制工具是什么,能大概讲讲原理么?

A: 最常用的版本控制工具是 Git。它的大致原理是工程每次提交时所有更改的文件都会生成快照,快照代表当前版本的文件,这些快照通过树型结构组织起来,树随着工程更改生长,通过这种方式来进行版本管理。

3.你一般是怎么用 Instruments 的?

A:根据想要分析的问题,选择对应的 instruments 来分析应用的行为,有疑问的地方参考 Instruments User Guide.

4.你一般是如何调试 Bug 的?

A:对于容易复现的 bug,根据复现的步骤来定位问题,之后解决问题;对于不容易复现的 bug, 调试就比较难了,这时可以配合源码,猜测问题可能出现的原因,一步步验证假设来定位 bug,确定 bug 产生的原因才好解决。

5.你在你的项目中用到了哪些设计模式?

A:

创建型:

  • 工厂方法(Factory Method)
  • 原型(Prototype)
  • 单例(Singleton)

结构型:

  • 适配器(Adapter)
  • 桥接(Bridge)
  • 组成(Composite)
  • 装饰(Decorator)
  • 外观(Facade)
  • 享元(Flyweight)

行为型:

  • 职责链(Chain Of Responsibility)
  • 命令(Command)
  • 解释器(Interpreter)
  • 迭代器(Iterator)
  • 中介者(Mediator)
  • 备忘录(Memento)
  • 观察者(Observer)
  • 状态(State)
  • 策略(Strategy)
  • 模板方法(Template Method)
继续阅读

iOS App 开发问题汇总(八)

1.Detect hash tags #, mention tags @, in iOS like in Twitter App

A:You can use https://github.com/Krelborn/KILabel this library. It also detect user taps on hashtags Like this:

1
2
3
label.hashtagLinkTapHandler = ^(KILabel *label, NSString *string, NSRange range) {
  NSLog(@"Hashtag tapped %@", string);
};

Reference:Detect hash tags #, mention tags @, in iOS like in Twitter App

2.如何给应用重签名?

A:利用用途广泛的命令行工具 security快速地显示出你的系统中能用来对代码进行签名的认证的方法:

1
2
$ security find-identity -v -p codesigning                       
  1) 01C8E9712E9632E6D84EC533827B4478938A3B15 "iPhone Developer: Thomas Kollbach (7TPNXN7G6K)"

sign给应用重签名

1
$ sigh resign ./path/app.ipa --signing_identity "iPhone Distribution: Felix Krause" -p "my.mobileprovision"

Reference:代码签名探析

继续阅读