小编dan*_*c05的帖子

使用Build Flavors - 正确构建源文件夹和build.gradle

请注意:在Xavier的答案后编辑的答案

我试图在Android Studio中为同一个应用程序项目使用不同的Build Flavors.但是,我似乎很难配置它以正常工作.

脚步:

  1. 创建一个名为"Test"的新Android Studio项目.
  2. 打开build.gradle*并添加以下行:

    productFlavors {
    flavor1 {
        packageName 'com.android.studio.test.flavor1'
        }
    flavor2 {
        packageName 'com.android.studio.test.flavor2'
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 重新启动Android Studio后,我现在看到Build Variants部分下的4个构建变体.这意味着我们迄今为止在成功提供产品口味方面取得了成功.**
  4. flavor1创建了一个新的Source文件夹; 但是,我不确定我是否采取了正确的方式.我是这样做的:

    • 请记住,此项目的包名称是: com.foo.test
    • 右键单击src文件夹,对于flavor1,我实际上是以结构的方式在资源管理器中创建了各个文件夹src/flavor1/java/com/foo/test/MainActivity.java.
    • 上面工作得很好,因为'java'文件夹是蓝色的,这意味着IDE知道它是一个活动的源目录.此外,包是自动创建的.尽管如此,我发现了重复课程的警告.在此处查看截图.
    • 对于flavor2,我尝试手动创建包,但是flavor2的'src'文件夹似乎不是蓝色,因此右键单击时选项不同,并且我无法使用'New Package'.见图.
    • 请注意,对于flavor1,我还创建了一个'res'目录,它确实变成了蓝色,但尽管如此,如果我想使用不同的东西,它不能提供创建Android资源文件或Andorid资源目录的能力.适合不同口味的食物.

难道我做错了什么?或者我错过了什么?如果您需要更多信息,请告诉我.

*我的项目似乎有两个 build.gradle文件.一个位于项目文件夹(\ GradleTest)的根目录下,这个是空的.第二个位于\ GradleTest子文件夹的根目录,也标记为'GradleTest'(GradleTest-GradleTest),这是打开时已经有代码的那个; 因此,这是我编辑的那个.

**我检查gradle这个设置,显然使用自动导入已启用.尽管如此,对build.gradle文件进行更改不会自动更新构建变体.注意:我也尝试使用Build - Rebuild Project和/或Build - Make Project,no-go.我仍然需要关闭项目,并重新打开以使更改生效.

android intellij-idea gradle android-studio

163
推荐指数
3
解决办法
8万
查看次数

Mac OS X - EnvironmentError:找不到mysql_config

首先,是的,我已经看到了这个:

pip install mysql-python因EnvironmentError失败:找不到mysql_config

问题

我正在尝试在Google App Engine项目上使用Django.但是,由于以下原因导致服务器无法正常启动,因此我无法启动:

ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb
Run Code Online (Sandbox Code Playgroud)

我做了一些研究,这一切都指向必须安装Mysql-python,因为显然它不在我的系统上.我实际上尝试卸载它并得到了这个:

Cannot uninstall requirement mysql-python, not installed
Run Code Online (Sandbox Code Playgroud)

每当我确实尝试通过以下方式安装时:

sudo pip install MySQL-python
Run Code Online (Sandbox Code Playgroud)

我收到一个错误说明:

raise EnvironmentError("%s not found" % (mysql_config.path,))
EnvironmentError: mysql_config not found
Run Code Online (Sandbox Code Playgroud)

我已经尝试过跑:

export PATH=$PATH:/usr/local/mysql/bin
Run Code Online (Sandbox Code Playgroud)

但这似乎没有帮助,因为我再次运行安装命令但它仍然失败.

有任何想法吗?

请注意我不是一个虚拟的人.

python mysql django macos

106
推荐指数
4
解决办法
12万
查看次数

Android Studio - 导入外部库/ Jar

我最近下载了Android Studio以开发Android应用程序(我来自Eclipse),我在使用外部库和/或外部JAR文件以及我自己的项目时遇到了问题.注意:以下测试是在Android Studio中从头开始创建的应用程序项目上进行的.

示例1:JAR导入.

  1. 从Google下载Admobs SDK的最新副本.

  2. 将库jar复制GoogleAdMobAdsSdk-6.4.1.jar到项目的/ libs /文件夹.

  3. 在项目资源管理器中,右键单击新添加的library.jar,然后单击"Add as Library".

从技术上讲,此时一切正常,导入工作正常,布局编辑器显示AdView窗口小部件的预览以及所有这些.该唯一的问题是,它不会成功编译.

从控制台登录:

Gradle: 
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':APITests:compilePaidDebug'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

Could not execute build using Gradle …
Run Code Online (Sandbox Code Playgroud)

dependencies android intellij-idea gradle android-studio

62
推荐指数
5
解决办法
13万
查看次数

如何在不启动Activity的情况下使用Notification中的Actions

所以我正在研究一个简单的音乐播放器.音乐播放器命名状态,可以播放歌曲,暂停播放,转发到下一首歌曲,返回上一首歌曲,并完全停止播放.播放歌曲时,会显示艺术家姓名和歌曲名称的通知; 此通知还有三个按钮(操作):停止,暂停下一个.

我遇到的问题是确保在单击任一操作时,触发与Action相关的播放控件,而且我完全不知道如何执行此操作.我搜索了Android通知:http://developer.android.com/guide/topics/ui/notifiers/notifications.html但它没有澄清,也没有提供太多关于通知操作的信息.

这是一个简单的操作(例如,应该与"下一步"按钮相关联点击通知:注意:下面描述的所有代码都是在以下包中编写的:com.deadpixels.light.player并且调用了Activity :PlayerActivity

public void nextSong() {
    if (position == songs.size() -1) {
        Toast.makeText(this, "No more songs on queue", Toast.LENGTH_SHORT).show();
        if(mPlayer.isPlaying()) {
            return;
        }
        else {
            buttonPlay.setImageResource(R.drawable.button_play);
        }
        return;
    }
    else {
        position++;
        playSong(songs.get(position));
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我试图做的:

Intent nextIntent = new Intent(KEY_NEXT);
PendingIntent nextPendingIntent = createPendingResult(0, nextIntent, 0);
Run Code Online (Sandbox Code Playgroud)

NextIntent的操作是:

public static final String KEY_NEXT = "com.deadpixels.light.player.PlayerActivity.nextSong";
Run Code Online (Sandbox Code Playgroud)

然后我通过addAction()将其添加到通知中:

mBuilder.addAction(R.drawable.not_action_next, "Next", nextPendingIntent);
Run Code Online (Sandbox Code Playgroud)

你们知道我还能尝试什么吗?使用我上面解释的内容什么都没做,通知显示,并有三个操作按钮,但点击它们对我没有任何作用.

有一次,我想可能是我添加了带有动作名称的intent过滤器,但后来我想,好吧,它们都在同一名称空间中,我为什么要这样做?

android mediaplayback android-notifications android-pendingintent

30
推荐指数
1
解决办法
1万
查看次数

Android导航抽屉和windowActionBarOverlay = true

我正在尝试在我的应用程序中实现新的Android导航抽屉.我创建了一个BaseActivity.java来处理Drawer设置和监听器,我有两个扩展这个基类的子活动.在第二个活动中,我计划使用以下attrs使用不同的操作栏样式:

<item name="android:windowActionBarOverlay">true</item>
<item name="android:background">@android:color/transparent</item>
Run Code Online (Sandbox Code Playgroud)

使操作栏透明,并使内容更丰富,因为我的布局中有一个图片标题.

我已经实现了这一点,但现在的问题是,因为内容正在扩展以利用使用ActionBar作为叠加层的额外空间,导航抽屉本身也在扩展并且它与ActionBar重叠,造成非常糟糕看布局:

在此输入图像描述

我想要做的是,实际内容(将用片段填充的框架布局)占用额外空间,但导航抽屉仍然位于操作栏下方,类似于Play音乐应用:

在此输入图像描述

关于我能做些什么来实现这一点的任何想法?

编辑所以,根据Ahmad的帮助,我marginTop只在ListView上设置.这是布局:

<!-- The navigation drawer -->
<ListView android:id="@+id/left_drawer"
          android:layout_marginTop="?android:attr/actionBarSize"
<!-- This was added after seeing the crazy effect, but does nothing -->
          android:layout_marginBottom="0dp"
          android:layout_marginLeft="0dp"
          android:layout_marginRight="0dp"
          android:layout_width="240dp"
          android:layout_height="fill_parent"
          android:layout_gravity="start"
          android:choiceMode="singleChoice"
          android:background="?attr/listviewBackground"
          />
Run Code Online (Sandbox Code Playgroud)

而现在,它对于顶部来说效果很好,但由于某种原因,在视图的底部也有一个边距,这对我来说根本没有任何意义.这是一个截图.

不确定是什么导致它:(

android overlay android-actionbar navigation-drawer

25
推荐指数
3
解决办法
2万
查看次数

ViewPager内的ScrollView会自动滚动到中间

我有一个ViewPager包含同一个片段的几个实例,这个片段包含一篇文章.文章视图层次结构非常简单,标题,横幅图像,副标题和正文; 除标题之外的所有内容都包含在scrollview中.

问题是,当您滑动到新页面时,片段会在顶部显示视图,然后立即滚动到容器的中间.(事实上​​,它滚动到TextView的开头,ID为:article_content)

我已在问题的底部发布了布局.

现在,ViewPager设置了一个简单的a实现FragmentStatePagerAdapter,这里是代码:

class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {

    Bundle args;
    int count;

    public ScreenSlidePagerAdapter(FragmentManager fm) {
        super(fm);
        this.count = 8;
    }

    @Override
    public Fragment getItem(int position) {
        ArticleFragment mPrimaryFragment = new ArticleFragment();
        args = new Bundle();
        args.putString(ArticleFragment.KEY_ARTICLE_URL, mCurArticleLink);
        mPrimaryFragment.setArguments(args);
        return mPrimaryFragment;            
    }

    @Override
    public int getCount() {
        return count;
    }   
}
Run Code Online (Sandbox Code Playgroud)

Fragment本身也很简单.首先,我检查期间onCreate是否有缓存的文章,我打电话给onCreateView

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.apk_article_view, null);

    mTitle = (TextView) …
Run Code Online (Sandbox Code Playgroud)

android android-scrollview android-viewpager

22
推荐指数
2
解决办法
2万
查看次数

使用支持库实现TabListener

我正在尝试实现Tab Navigation,但我想确保拥有旧版Android的人仍然可以使用我的应用程序.

应用程序考虑到ATM非常简单,我只是想了解如何实现布局,然后我将添加缺少的位.

无论如何,我有一个扩展Fragment Activity的Container Activity (以确保兼容性),而这个Activity使用ActionBar创建一个TabView (我相信我的问题就在这里).该应用程序将尝试创建三个选项卡并将其添加到ActionBar,我想确保用户可以使用横向导航来回滚动.

这是TabListener我试图实现:

public static class TabListener<T extends Fragment> implements ActionBar.TabListener {

    private Fragment mFragment;
    private final Activity mActivity;
    private final String mTag;
    private final Class<T> mClass;

    public TabListener(Activity activity, String tag, Class<T> clz) {
        mActivity = activity;
        mTag = tag;
        mClass = clz;
    }

    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        if (mFragment == null) {
            mFragment = Fragment.instantiate(mActivity, mClass.getName());
            ft.add(android.R.id.content, mFragment, mTag);
        } else {
            ft.attach(mFragment);
        }
    } …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-support-library

20
推荐指数
3
解决办法
2万
查看次数

使用弃用的API时,Android Studio无法编译

我在Android Studio上编译和运行应用程序时遇到问题.

问题:我不喜欢我使用已弃用的API.(来自gradlew compileDebug --stacktrace.完整的堆栈跟踪在这里

Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Run Code Online (Sandbox Code Playgroud)

的背景:

  • 我使用它使用PreferenceActivity onPreferenceTreeClickaddPreferencesFromResource(int),都不赞成的方法.
  • 我正在使用ABS和ViewPager库,它们似乎也在其代码中使用了弃用的方法.

问题:

  • 可以将运行配置编辑到一个扩展,尽管已弃用的API ,它仍可以成功编译吗?
  • 可以更改/编辑/修改哪些内容以使构建成功编译?

鉴于我计划支持pre-ICS设备和使用已弃用的APIS,不应该提出问题.

编辑

因此,命令提示符下的编译器表明构建成功,问题直接从Android Studio运行,构建过程失败:

FAILURE: Build failed with an exception.
Run Code Online (Sandbox Code Playgroud)

问题似乎是我不知道如何解决的问题,流行的是:

UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: 
Run Code Online (Sandbox Code Playgroud)

这发生在三个不同的地方:

Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoStubImpl;
Landroid/support/v4/app/ActivityCompatHoneycomb;
Landroid/support/v4/app/LoaderManager;
Run Code Online (Sandbox Code Playgroud)

以下是一些更多信息:Android Studio中的完整编译器输出

* What went wrong:
Execution failed for task ':LaPrensa:dexDebug'.
> Running C:\Users\SkullKandy\AppData\Local\Android\android-studio\sdk\build-tools\android-4.2.2\dx.bat failed. 
Run Code Online (Sandbox Code Playgroud)

android intellij-idea deprecated gradle android-studio

13
推荐指数
1
解决办法
8103
查看次数

如何使TextView看起来像Setting的PreferenceCategory标题

这应该是很容易理解的东西,但我无法在任何地方找到答案.

我试图使常规TextView看起来非常相似,在任何应用程序的设置上显示的首选项类别标题.这就是我的意思:

首选项类别标题

现在,我尝试了一些事情,但我似乎没有做对.例如,我尝试设置此:

android:drawableBottom="?android:attr/dividerVertical"
Run Code Online (Sandbox Code Playgroud)

到我的TextView,但似乎根本没有做任何事情,我的TextView仍然是这样的:

图像看起来不正确

我也尝试过设置一个可绘制的:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
    android:width="1dp"         
    android:color="@android:color/darker_gray"
    />
</shape>
Run Code Online (Sandbox Code Playgroud)

但那也没出现在我的文字上.

这是现在的TextView样式:

 <style name="NewTaskHeaderText">
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_width">match_parent</item>
    <item name="android:textColor">@android:color/holo_blue_dark</item>
    <item name="android:minHeight">48dp</item>
    <item name="android:gravity">center_vertical</item>
    <item name="android:padding">8dp</item>
</style>

<TextView
    android:id="@+id/textView4"
    style="@style/NewTaskHeaderText"
    android:drawableBottom="@android:attr/dividerVertical"
    android:text="@string/some_text"
    android:textAppearance="?android:attr/textAppearanceMedium" />
Run Code Online (Sandbox Code Playgroud)

任何想法,将不胜感激.

android textview android-preferences

11
推荐指数
1
解决办法
1万
查看次数

使用OAuth刷新令牌获取新的访问令牌 - Google API

我的应用很简单,它连接到Google+ API以对用户进行身份验证,如果成功,它会检索用户的电子邮件,然后根据检索到的电子邮件对给定数据库执行一系列操作.

我的主要问题是每小时,我的访问令牌都会过期,而我似乎不知道如何"刷新"它.我得到以下错误,我想是预期的:

The OAuth 2.0 access token has expired, and a refresh token is not available.
Run Code Online (Sandbox Code Playgroud)

我目前正在将访问令牌存储在数据库中,因此我可以根据需要进行检索.我唯一的问题是如何使用该令牌获得新的令牌?

php oauth-2.0 google-oauth google-api-php-client

11
推荐指数
1
解决办法
5929
查看次数